30#include "Teuchos_UnitTestHarness.hpp"
31#include "Teuchos_UnitTestRepository.hpp"
32#include "Teuchos_GlobalMPISession.hpp"
33#include "Teuchos_TestingHelpers.hpp"
37#if SACADO_ENABLE_NEW_DESIGN
50 typedef double value_type;
57 x.fastAccessDx(
i) = value_type(2.0+
i);
60 ad_type
y = std::move(
x);
64 TEST_EQUALITY_CONST(
y.val(), value_type(1.5) );
66 TEST_EQUALITY_CONST(
y.dx(
i), value_type(2.0+
i) );
71 TEST_EQUALITY_CONST(
x.val(), value_type(1.5) );
72 TEST_INEQUALITY(
x.dx(),
y.dx() );
74 TEST_EQUALITY_CONST(
x.dx(
i), value_type(2.0+
i) );
80 typedef double value_type;
87 x.fastAccessDx(
i) = value_type(2.0+
i);
90 ad_type
y = std::move(
x);
94 TEST_EQUALITY_CONST(
y.val(), value_type(1.5) );
96 TEST_EQUALITY_CONST(
y.dx(
i), value_type(2.0+
i) );
101 TEST_EQUALITY_CONST(
x.val(), value_type(1.5) );
102 TEST_INEQUALITY(
x.dx(),
y.dx() );
104 TEST_EQUALITY_CONST(
x.dx(
i), value_type(2.0+
i) );
110 typedef double value_type;
117 x.fastAccessDx(
i) = value_type(2.0+
i);
120 ad_type
y = std::move(
x);
124 TEST_EQUALITY_CONST(
y.val(), value_type(1.5) );
126 TEST_EQUALITY_CONST(
y.dx(
i), value_type(2.0+
i) );
130 value_type *null_ptr =
nullptr;
131 TEST_EQUALITY_CONST(
x.size(), 0 );
132 TEST_EQUALITY_CONST(
x.val(), value_type(1.5) );
133 TEST_EQUALITY(
x.dx(), null_ptr );
138 typedef double value_type;
145 x.fastAccessDx(
i) = value_type(2.0+
i);
148 ad_type
y = std::move(
x);
152 TEST_EQUALITY_CONST(
y.val(), value_type(1.5) );
154 TEST_EQUALITY_CONST(
y.dx(
i), value_type(2.0+
i) );
159 TEST_EQUALITY_CONST(
x.val(), value_type(1.5) );
160 TEST_INEQUALITY(
x.dx(),
y.dx() );
162 TEST_EQUALITY_CONST(
x.dx(
i), value_type(2.0+
i) );
168 typedef double value_type;
173 value_type x_val = value_type(1.5);
176 x_dx[
i] = value_type(2.0+
i);
180 ad_type
y = std::move(
x);
184 TEST_EQUALITY_CONST(
y.val(), value_type(1.5) );
186 TEST_EQUALITY_CONST(
y.dx(
i), value_type(2.0+
i) );
191 TEST_EQUALITY_CONST(
x.val(), value_type(1.5) );
192 TEST_INEQUALITY(
x.dx(),
y.dx() );
194 TEST_EQUALITY_CONST(
x.dx(
i), value_type(2.0+
i) );
200 typedef double value_type;
206 value_type x_val = value_type(1.5);
209 x_dx[
i] = value_type(2.0+
i);
213 ad_type
y = std::move(
x);
217 TEST_EQUALITY_CONST(
y.val(), value_type(1.5) );
218 TEST_EQUALITY(
y.dx(), x_dx.data() );
220 TEST_EQUALITY_CONST(
y.dx(
i), value_type(2.0+
i) );
225 TEST_EQUALITY_CONST(
x.val(), value_type(1.5) );
226 TEST_EQUALITY(
x.dx(), x_dx.data() );
228 TEST_EQUALITY_CONST(
x.dx(
i), value_type(2.0+
i) );
238 typedef double value_type;
245 x.fastAccessDx(
i) = value_type(2.0+
i);
253 TEST_EQUALITY_CONST(
y.val(), value_type(1.5) );
255 TEST_EQUALITY_CONST(
y.dx(
i), value_type(2.0+
i) );
260 TEST_EQUALITY_CONST(
x.val(), value_type(1.5) );
261 TEST_INEQUALITY(
x.dx(),
y.dx() );
263 TEST_EQUALITY_CONST(
x.dx(
i), value_type(2.0+
i) );
269 typedef double value_type;
276 x.fastAccessDx(
i) = value_type(2.0+
i);
284 TEST_EQUALITY_CONST(
y.val(), value_type(1.5) );
286 TEST_EQUALITY_CONST(
y.dx(
i), value_type(2.0+
i) );
291 TEST_EQUALITY_CONST(
x.val(), value_type(1.5) );
292 TEST_INEQUALITY(
x.dx(),
y.dx() );
294 TEST_EQUALITY_CONST(
x.dx(
i), value_type(2.0+
i) );
300 typedef double value_type;
307 x.fastAccessDx(
i) = value_type(2.0+
i);
315 TEST_EQUALITY_CONST(
y.val(), value_type(1.5) );
317 TEST_EQUALITY_CONST(
y.dx(
i), value_type(2.0+
i) );
321 value_type *null_ptr =
nullptr;
322 TEST_EQUALITY_CONST(
x.size(), 0 );
323 TEST_EQUALITY_CONST(
x.val(), value_type(1.5) );
324 TEST_EQUALITY(
x.dx(), null_ptr );
329 typedef double value_type;
336 x.fastAccessDx(
i) = value_type(2.0+
i);
344 TEST_EQUALITY_CONST(
y.val(), value_type(1.5) );
346 TEST_EQUALITY_CONST(
y.dx(
i), value_type(2.0+
i) );
351 TEST_EQUALITY_CONST(
x.val(), value_type(1.5) );
352 TEST_INEQUALITY(
x.dx(),
y.dx() );
354 TEST_EQUALITY_CONST(
x.dx(
i), value_type(2.0+
i) );
360 typedef double value_type;
365 value_type x_val = value_type(1.5);
368 x_dx[
i] = value_type(2.0+
i);
377 TEST_EQUALITY_CONST(
y.val(), value_type(1.5) );
379 TEST_EQUALITY_CONST(
y.dx(
i), value_type(2.0+
i) );
384 TEST_EQUALITY_CONST(
x.val(), value_type(1.5) );
385 TEST_INEQUALITY(
x.dx(),
y.dx() );
387 TEST_EQUALITY_CONST(
x.dx(
i), value_type(2.0+
i) );
393 typedef double value_type;
399 value_type x_val = value_type(1.5);
402 x_dx[
i] = value_type(2.0+
i);
406 value_type y_val = value_type(0.5);
409 y_dx[
i] = value_type(20.0+
i);
415 TEST_EQUALITY_CONST(
y.val(), value_type(1.5) );
416 TEST_EQUALITY(
y.dx(), y_dx.data() );
418 TEST_EQUALITY_CONST(
y.dx(
i), value_type(2.0+
i) );
423 TEST_EQUALITY_CONST(
x.val(), value_type(1.5) );
424 TEST_EQUALITY(
x.dx(), x_dx.data() );
426 TEST_EQUALITY_CONST(
x.dx(
i), value_type(2.0+
i) );
432int main(
int argc,
char* argv[] ) {
433 Teuchos::GlobalMPISession mpiSession(&argc, &argv);
434 return Teuchos::UnitTestRepository::runUnitTestsFromMain(argc, argv);
const int global_fad_size
TEUCHOS_UNIT_TEST(Conversion, IsConvertible)
Forward-mode AD class templated on the storage for the derivative array.