auto Automatic differentiation Todo Add persistent variables Add generic bound for forward/reverse mode