30 #include "Teuchos_UnitTestHarness.hpp" 31 #include "Teuchos_UnitTestRepository.hpp" 32 #include "Teuchos_GlobalMPISession.hpp" 33 #include "Teuchos_TestingHelpers.hpp" 47 struct C :
public A {};
61 TEST_EQUALITY( is_b_a,
false );
62 TEST_EQUALITY( is_a_b,
true );
63 TEST_EQUALITY( is_c_a,
true );
64 TEST_EQUALITY( is_int_double,
true );
65 TEST_EQUALITY( is_double_int,
true );
66 TEST_EQUALITY( is_double_a,
false );
69 template <
typename ad_type>
76 const bool is_value_ad =
78 const bool is_ad_value =
80 const bool is_scalar_ad =
82 const bool is_ad_scalar =
86 const bool is_int_ad =
89 TEST_EQUALITY( is_value_ad, is_not_view );
90 TEST_EQUALITY_CONST( is_ad_value,
false );
91 TEST_EQUALITY( is_scalar_ad, is_not_view );
92 TEST_EQUALITY_CONST( is_ad_scalar,
false );
93 TEST_EQUALITY( is_int_ad, is_not_view );
95 #ifdef HAVE_SACADO_CXX11 99 typedef decltype(std::declval<ad_type>()*std::declval<ad_type>()) ad_expr_type;
100 typedef decltype(std::declval<value_type>()*std::declval<value_type>()) val_expr_type;
102 const bool is_ad_expr_ad =
104 const bool is_val_expr_ad =
107 TEST_EQUALITY( is_ad_expr_ad, is_not_view );
108 TEST_EQUALITY( is_val_expr_ad, is_not_view );
121 typedef typename ad_type::value_type value_type;
125 success = success && test_ad_conversions<ad_type>(out);
126 success = success && test_ad_conversions<ad_ad_type>(out);
131 x.fastAccessDx(i) = 2.0;
132 ad_ad_type y = x + x;
133 TEST_EQUALITY_CONST( y.val().val(), 3.0 );
135 TEST_EQUALITY_CONST( y.val().dx(i), 4.0 );
136 TEST_EQUALITY_CONST( y.dx(i).val(), 0.0 );
138 TEST_EQUALITY_CONST( y.dx(i).dx(j), 0.0 );
142 ad_ad_type z = (x + x) + y;
143 TEST_EQUALITY_CONST( z.val().val(), 6.0 );
145 TEST_EQUALITY_CONST( z.val().dx(i), 8.0 );
146 TEST_EQUALITY_CONST( z.dx(i).val(), 0.0 );
148 TEST_EQUALITY_CONST( z.dx(i).dx(j), 0.0 );
153 TEST_EQUALITY_CONST( y.val().val(), 4.0 );
155 TEST_EQUALITY_CONST( y.val().dx(i), 4.0 );
156 TEST_EQUALITY_CONST( y.dx(i).val(), 0.0 );
158 TEST_EQUALITY_CONST( y.dx(i).dx(j), 0.0 );
169 success = success && test_ad_conversions<ad_type>(out);
170 success = success && test_ad_conversions<ad_ad_type>(out);
185 success = success && test_ad_conversions<ad_type>(out);
186 success = success && test_ad_conversions<fad_ad_type>(out);
196 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, ADConversions,
Fad_DFadType )
197 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, ADConversions,
Fad_SLFadType )
198 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, ADConversions,
Fad_SFadType )
199 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, ADConversions,
Fad_DMFadType )
200 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, ADConversions,
Fad_DVFadType )
201 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, ADConversions,
Fad_SimpleFadType )
202 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, ViewConversions,
Fad_VFadType )
208 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, ADConversions,
ELRFad_DFadType )
209 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, ADConversions,
ELRFad_SLFadType )
210 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, ADConversions,
ELRFad_SFadType )
211 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, ViewConversions,
ELRFad_VFadType )
217 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, ADConversions,
CacheFad_DFadType )
219 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, ADConversions,
CacheFad_SFadType )
220 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, ViewConversions,
CacheFad_VFadType )
241 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, OtherConversions,
LFadType )
242 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, OtherConversions,
SFCType )
243 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, OtherConversions,
TaylorType )
244 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, OtherConversions,
CacheTaylorType )
245 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, OtherConversions,
RadType )
246 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, OtherConversions,
Rad2Type )
247 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Conversion, OtherConversions,
RadVecType )
254 int main(
int argc,
char* argv[] ) {
255 Teuchos::GlobalMPISession mpiSession(&argc, &argv);
265 return Teuchos::UnitTestRepository::runUnitTestsFromMain(argc, argv);
MemPool * getMemoryPool(unsigned int dim)
Get memory pool for supplied dimension dim.
int main(int argc, char *argv[])
Sacado::Fad::DMFad< double > Fad_DMFadType
Forward-mode AD class using dynamic memory allocation.
TEUCHOS_UNIT_TEST_TEMPLATE_1_DECL(Conversion, ADConversions, AD)
Forward-mode AD class using dynamic memory allocation but no expression templates.
lambda< F >::type ::template apply< A1, A2, A3, A4, A5 >::type type
TEUCHOS_UNIT_TEST(Conversion, IsConvertible)
Sacado::Fad::DVFad< double > Fad_DVFadType
const int global_fad_size
Sacado::Fad::ViewFad< double, global_fad_size, 1, Fad_DFadType > Fad_VFadType
Determine whether a given type is a view.
Sacado::Fad::SFad< double, global_fad_size > Fad_SFadType
Derivative array storage class using dynamic memory allocation.
Sacado::Fad::SimpleFad< double > Fad_SimpleFadType
Sacado::Fad::SLFad< double, global_fad_size > Fad_SLFadType
Forward-mode AD class using dynamic memory allocation and expression templates.
Templated flop counter class.
Sacado::Fad::DFad< double > Fad_DFadType
Forward-mode AD class using dynamic memory allocation and expression templates.
bool test_ad_conversions(Teuchos::FancyOStream &out)