Definition at line 5 of file autodiff.C.
◆ CPPUNIT_TEST() [1/3]
FParserAutodiffTest::CPPUNIT_TEST |
( |
runTests |
| ) |
|
◆ CPPUNIT_TEST() [2/3]
◆ CPPUNIT_TEST() [3/3]
◆ CPPUNIT_TEST_SUITE_END()
FParserAutodiffTest::CPPUNIT_TEST_SUITE_END |
( |
| ) |
|
◆ LIBMESH_CPPUNIT_TEST_SUITE()
◆ registerDerivativeRepeatTest()
void FParserAutodiffTest::registerDerivativeRepeatTest |
( |
| ) |
|
|
inline |
Definition at line 176 of file autodiff.C.
183 std::string func =
"x*a";
184 R.SetADFlags(FunctionParserAD::ADCacheDerivatives,
true);
187 R.Parse(func,
"x,a");
191 R.RegisterDerivative(
"a",
"x",
"a");
199 FunctionParserAD dR(R);
200 CPPUNIT_ASSERT_EQUAL (dR.AutoDiff(
"x"), -1);
204 FunctionParserAD d2R(dR);
205 CPPUNIT_ASSERT_EQUAL (d2R.AutoDiff(
"x"), -1);
210 for (x = -1.0; x < 1.0; x+=0.3726)
211 for (a = -1.0; a < 1.0; a+=0.2642)
212 for (y = -1.0; y < 1.0; y+=0.3156)
214 LIBMESH_ASSERT_FP_EQUAL(x*a, R.Eval(p), 1.e-12);
215 LIBMESH_ASSERT_FP_EQUAL(a+x*a, dR.Eval(p), 1.e-12);
216 LIBMESH_ASSERT_FP_EQUAL(2*a+x*a, d2R.Eval(p), 1.e-12);
◆ registerDerivativeTest()
void FParserAutodiffTest::registerDerivativeTest |
( |
| ) |
|
|
inline |
Definition at line 134 of file autodiff.C.
139 std::string func =
"x*a";
140 R.SetADFlags(FunctionParserAD::ADCacheDerivatives,
true);
143 R.Parse(func,
"x,a");
147 R.RegisterDerivative(
"a",
"x",
"y");
155 FunctionParserAD dR(R);
156 CPPUNIT_ASSERT_EQUAL (dR.AutoDiff(
"x"), -1);
160 FunctionParserAD d2R(dR);
161 CPPUNIT_ASSERT_EQUAL (d2R.AutoDiff(
"x"), -1);
166 for (x = -1.0; x < 1.0; x+=0.3726)
167 for (a = -1.0; a < 1.0; a+=0.2642)
168 for (y = -1.0; y < 1.0; y+=0.3156)
170 LIBMESH_ASSERT_FP_EQUAL(x*a, R.Eval(p), 1.e-12);
171 LIBMESH_ASSERT_FP_EQUAL(a+x*y, dR.Eval(p), 1.e-12);
172 LIBMESH_ASSERT_FP_EQUAL(2*y, d2R.Eval(p), 1.e-12);
◆ runTests()
void FParserAutodiffTest::runTests |
( |
| ) |
|
|
inline |
Definition at line 121 of file autodiff.C.
References tests.
125 const unsigned int ntests =
tests.size();
127 unsigned int passed = 0;
128 for (
unsigned i = 0; i < ntests; ++i)
129 passed +=
tests[i].run() ? 1 : 0;
131 CPPUNIT_ASSERT_EQUAL (passed, ntests);
std::vector< ADTest > tests
◆ setUp()
virtual void FParserAutodiffTest::setUp |
( |
| ) |
|
|
inlinevirtual |
Definition at line 95 of file autodiff.C.
References tests.
97 tests.push_back(ADTest(
"log(x*x) + log2(2*x) + log10(4*x)", 0.1, 3.0));
98 tests.push_back(ADTest(
"sin(-x) + cos(2*x) + tan(4*x)", -5.0, 5.0, 1e-7, 1e-5, 100));
99 tests.push_back(ADTest(
"sinh(-x) + cosh(x/2) + tanh(x/3)", -4.0, 4.0, 0.0001, 1e-5, 100));
100 tests.push_back(ADTest(
"plog(-x,0.01)", 0.001, 0.05, 0.00001, 1e-5, 100));
101 tests.push_back(ADTest(
"2 + 4*x + 8*x^2 + 16*x^3 + 32*x^4", -5.0, 5.0, 1e-5,1e-4));
102 tests.push_back(ADTest(
"1/x^2", 0.01, 2.0, 1e-8));
103 tests.push_back(ADTest(
"sqrt(x*2)", 0.001, 2.0, 1e-6));
104 tests.push_back(ADTest(
"abs(x*2)", -1.99, 2.0));
105 tests.push_back(ADTest(
"asin(-x)", -0.99, 0.99));
106 tests.push_back(ADTest(
"acos(-x)", -0.99, 0.99));
107 tests.push_back(ADTest(
"atan(-x)", -99, 99));
108 tests.push_back(ADTest(
"x*sin(-x)*log(x)*tanh(x)", 0.001, 5, 1e-8));
109 tests.push_back(ADTest(
"exp(-x) + 2*exp2(x)", -1.0, 2.0));
110 tests.push_back(ADTest(
"hypot(2*x,1) - hypot(1,4*x)", -10, 10.0));
111 tests.push_back(ADTest(
"if(x<0, (-x)^3, x^3)", -1.0, 1.0));
112 tests.push_back(ADTest(
"max(x^2-0.5,0)", -1.5, 1.5));
113 tests.push_back(ADTest(
"min(x^2-0.5,0)", -1.5, 1.5));
114 tests.push_back(ADTest(
"atan2(x,1) + atan2(2,x)", -0.99, 0.99));
115 tests.push_back(ADTest(
"0.767^sin(x)", -1.5, 1.5));
116 tests.push_back(ADTest(
"A := sin(x) + tanh(x); A + sqrt(A) - x", -1.5, 1.5));
117 tests.push_back(ADTest(
"3*sin(2*x)*sin(2*x)", -5.0, 5.0, 1e-7, 1e-5, 100));
118 tests.push_back(ADTest(
"erf(0.5*x)", -2., 2., 1e-6, 1e-5, 100));
std::vector< ADTest > tests
◆ tests
std::vector<ADTest> FParserAutodiffTest::tests |
|
private |
The documentation for this class was generated from the following file: