47 template <
typename ScalarT>
48 ScalarT
func(
const ScalarT&
a,
const ScalarT& b,
const ScalarT&
c) {
55 void func_deriv(
double a,
double b,
double c,
double& drda,
double& drdb)
61 int main(
int argc,
char **argv)
84 rrad =
func(arad, brad, crad);
89 double r_ad = rrad.
val();
90 double drda_ad = arad.
adj();
91 double drdb_ad = brad.
adj();
96 std::cout.setf(std::ios::scientific);
97 std::cout.precision(p);
98 std::cout <<
" r = " << r <<
" (original) == " << std::setw(w) << r_ad
99 <<
" (AD) Error = " << std::setw(w) << r - r_ad << std::endl
100 <<
"dr/da = " << std::setw(w) << drda <<
" (analytic) == " 101 << std::setw(w) << drda_ad <<
" (AD) Error = " << std::setw(w)
102 << drda - drda_ad << std::endl
103 <<
"dr/db = " << std::setw(w) << drdb <<
" (analytic) == " 104 << std::setw(w) << drdb_ad <<
" (AD) Error = " << std::setw(w)
105 << drdb - drdb_ad << std::endl;
107 double tol = 1.0e-14;
112 std::cout <<
"\nExample passed!" << std::endl;
116 std::cout <<
"\nSomething is wrong, example failed!" << std::endl;
void func_deriv(double a, double b, double c, double &drda, double &drdb)
SimpleFad< ValueT > log(const SimpleFad< ValueT > &a)
SimpleFad< ValueT > atan(const SimpleFad< ValueT > &a)
expr expr1 expr1 expr1 c expr2 expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr1 c expr2 expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr1 c *expr2 expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr1 c expr2 expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr2 expr1 expr2 expr1 expr1 expr1 c
SimpleFad< ValueT > sin(const SimpleFad< ValueT > &a)
SimpleFad< ValueT > pow(const SimpleFad< ValueT > &a, const SimpleFad< ValueT > &b)
ScalarT func(const ScalarT &a, const ScalarT &b, const ScalarT &c)
SimpleFad< ValueT > cos(const SimpleFad< ValueT > &a)
KOKKOS_INLINE_FUNCTION Expr< FAbsOp< Expr< T > > > fabs(const Expr< T > &expr)
int main(int argc, char **argv)