# include <f2cad/dgamma.hpp>
test_result dgamma(void)
{ bool ok = true;
// independent variables
integer n = 1; // number of independent variables
double ell = 3.;
doublereal x[1]; // vector of independent variables
x[0] = ell+1.; // value of independent variables
f2cad::Independent(n, x); // declare x as independent variable vector
// dependent variables
integer m = 1; // number of dependent variables
doublereal f[1]; // vector of dependent variables
f[0] = f2cad::dgamma_(x+0); // compute value f[0] = Gamma(x[0])
f2cad::Dependent(m, f); // declare f as dependent variable vector
// check the value of f
ok &= f2cad::near_equal(f2cad::Value(f[0]), 6., 1e-10, 1e-10);
// Compute derivative of f w.r.t x using f2cad common interface.
// This general interface works with adolc, cppad, and fadbad.
// See GetStarted for package specific more efficient code.
double gamma = 0.577215664901532;
double p = f2cad::Partial<doublereal>(0, 0);
double check = 6. * ( - gamma + 1. + 1./2. + 1./3. );
ok &= f2cad::near_equal(p, check, 1e-10, 1e-10);
if( ok )
return test_pass;
return test_fail;
}