49 template <
typename ScalarT>
 
   50 ScalarT 
func(
const ScalarT& 
a, 
const ScalarT& b, 
const ScalarT& 
c) {
 
   57 void func_deriv(
double a, 
double b, 
double c, 
double& drda, 
double& drdb)
 
   63 int main(
int argc, 
char **argv)
 
   82   double r = 
func(a, b, c);
 
   89   rfad = 
func(afad, bfad, cfad);
 
   92   double r_ad = rfad.val();     
 
   93   double drda_ad = rfad.dx(0);  
 
   94   double drdb_ad = rfad.dx(1);  
 
   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;
 
  114     std::cout << 
"\nExample passed!" << std::endl;
 
  118     std::cout <<
"\nSomething is wrong, example failed!" << std::endl;
 
KOKKOS_INLINE_FUNCTION mpl::enable_if_c< ExprLevel< Expr< T1 > >::value==ExprLevel< Expr< T2 > >::value, Expr< PowerOp< Expr< T1 >, Expr< T2 > > > >::type pow(const Expr< T1 > &expr1, const Expr< T2 > &expr2)
 
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
 
void func_deriv(double a, double b, double c, double &drda, double &drdb)
 
const T func(int n, T *x)