primalAndVjp

fun primalAndVjp(x: DTensor, v: DTensor, f: (x: DTensor) -> DTensor): Pair<DTensor, DTensor>
fun primalAndVjp(x: DTensor, vf: (primal: DTensor) -> DTensor, f: (x: DTensor) -> DTensor): Pair<DTensor, DTensor>
fun <Input : Any, Output : Any> primalAndVjp(x: Input, vf: (Output) -> Output, f: (Input) -> Output): Pair<Output, Input>
fun <Input : Any, Output : Any> primalAndVjp(x: Input, v: Output, f: (Input) -> Output): Pair<Output, Input>
fun <Input : Any, Output : Any> primalAndVjp(x: Input, v: Output, f: (Input) -> Output, makeReverseInput: (Input, makeReverseTensor: (DTensor) -> DTensor) -> Input, extractInputTangent: (Input, extractTensorTangent: (DTensor) -> DTensor) -> Input): Pair<Output, Input>
fun <Input : Any, Output : Any, InputTangent : Any, OutputTangent : Any> primalAndVjp(x: Input, v: OutputTangent, f: (Input) -> Output, makeReverseInput: (Input, makeReverseTensor: (DTensor) -> DTensor) -> Input? = null, extractInputTangent: (Input, extractTensorTangent: (DTensor) -> DTensor) -> InputTangent, setOutputTangent: (Output, OutputTangent, setTensorTangent: (tensor: DTensor, tangent: DTensor) -> Unit) -> Unit, wrapOutput: (Output, Wrapper) -> Output? = null): Pair<Output, InputTangent>