// NOTE: 使用自定义标量(复数)的单变量函数的导数 // C++ includes #include #include using namespace std; // autodiff include #include using namespace autodiff; // Specialize isArithmetic for complex to make it compatible with dual namespace autodiff::detail { template struct ArithmeticTraits>: ArithmeticTraits {}; } // autodiff::detail using cxdual = Dual, complex>; cxdual f(cxdual x){ return 1+x+x*x+1/x+log(x); } int main(){ cxdual x = 2.0; // the input variable x cxdual u = f(x); // the output variable u cxdual dudx = derivative(f, wrt(x), at(x)); // evaluate the derivative du/dx cout << "u = " << u << endl; cout << "du/dx = " << dudx << endl; return 0; }