3
/* Try to test all combinations of types and operations */
7
#define ADT_RAD Sacado::Rad::
11
#include "Sacado_trad.hpp"
19
typedef ADT_RAD IndepADvar<double> AI;
21
typedef ADT_RAD ADvar<double> A;
23
typedef ADT_RAD ConstADvar<double> C;
25
typedef ADT_RAD ADvari<double> Ai;
27
typedef const ADT_RAD IndepADvar<double> cAI;
29
typedef const ADT_RAD ADvar<double> cA;
31
typedef const ADT_RAD ConstADvar<double> cC;
33
typedef const ADT_RAD ADvari<double> cAi;
39
/* This is to be run through an awk program that changes lines */
41
/* with "BINTEST" or "UNOPTEST" at the beginning of the line into */
43
/* a the desired C++ (which we can then inspect). */
49
botch(const char *what, double wanted, double got)
53
printf("%s: expected %g, got %g, diff = %.2g\n", what, wanted, got, wanted-got);
61
const double tol = 5e-16;
67
differ(double a, double b)
105
#ifdef RAD_AUTO_AD_Const
131
double dx, dy, f, xd, yd;
142
/**** Test of fabs ****/
144
xd = 37.; f = 37.; dx = 1.;
148
if (differ(fA.val(), f)) botch("fA = fabs(xAI)", f, fA.val());
149
else if (differ(xAI.adj(), dx)) botch("d fabs(xAI)/dx", dx, xAI.adj());
155
if (differ(fA.val(), f)) botch("fA = fabs(xcAI)", f, fA.val());
156
else if (differ(xcAI.adj(), dx)) botch("d fabs(xcAI)/dx", dx, xcAI.adj());
161
if (differ(fA.val(), f)) botch("fA = fabs(xA)", f, fA.val());
162
else if (differ(xA.adj(), dx)) botch("d fabs(xA)/dx", dx, xA.adj());
168
if (differ(fA.val(), f)) botch("fA = fabs(xcA)", f, fA.val());
169
else if (differ(xcA.adj(), dx)) botch("d fabs(xcA)/dx", dx, xcA.adj());
174
if (differ(fA.val(), f)) botch("fA = fabs(xC)", f, fA.val());
175
else if (differ(xC.adj(), dx)) botch("d fabs(xC)/dx", dx, xC.adj());
181
if (differ(fA.val(), f)) botch("fA = fabs(xcC)", f, fA.val());
182
else if (differ(xcC.adj(), dx)) botch("d fabs(xcC)/dx", dx, xcC.adj());
188
if (differ(fA.val(), f)) botch("fA = fabs(xcAi)", f, fA.val());
189
else if (differ(xcAi.aval, dx)) botch("d fabs(xcAi)/dx", dx, xcAi.aval);
196
if (differ(fA.val(), f)) botch("fA = fabs(xcAi)", f, fA.val());
197
else if (differ(xcAi.aval, dx)) botch("d fabs(xcAi)/dx", dx, xcAi.aval);
201
if (!rc) // chatter for cppunit test, which cannot tolerate silence