61int main(
int argc,
char **argv)
63 double pi = std::atan(1.0)*4.0;
84 rrad =
func(arad, brad, crad);
89 double r_ad = rrad.
val();
90 double drda_ad = arad.
adj();
91 double drdb_ad = brad.
adj();
99 std::cout.setf(std::ios::scientific);
100 std::cout.precision(
p);
101 std::cout <<
" r = " << r <<
" (original) == " << std::setw(w) << r_ad
102 <<
" (AD) Error = " << std::setw(w) << r - r_ad << std::endl
103 <<
"dr/da = " << std::setw(w) << drda <<
" (analytic) == "
104 << std::setw(w) << drda_ad <<
" (AD) Error = " << std::setw(w)
105 << drda - drda_ad << std::endl
106 <<
"dr/db = " << std::setw(w) << drdb <<
" (analytic) == "
107 << std::setw(w) << drdb_ad <<
" (AD) Error = " << std::setw(w)
108 << drdb - drdb_ad << std::endl;
110 double tol = 1.0e-14;
112 if (std::fabs(r - r_ad) <
tol &&
113 std::fabs(drda - drda_ad) <
tol &&
114 std::fabs(drdb - drdb_ad) <
tol) {
115 std::cout <<
"\nExample passed!" << std::endl;
119 std::cout <<
"\nSomething is wrong, example failed!" << std::endl;