operator-overloaded arithmetic; dual number arithmetic; first pass at dual-number based autodiff