42 #include "Teuchos_UnitTestHarness.hpp" 43 #include "Teuchos_TestingHelpers.hpp" 44 #include "Teuchos_UnitTestRepository.hpp" 45 #include "Teuchos_GlobalMPISession.hpp" 51 constexpr
int ensemble_size = 8;
57 scalar a = (scalar) 1.;
60 scalar b = (scalar) 2.;
63 std::cout << std::endl;
64 std::cout << a << std::endl;
65 std::cout << b << std::endl;
66 std::cout << m1 << std::endl;
67 TEST_EQUALITY( m1.getSize(), ensemble_size );
68 TEST_EQUALITY( m1.get(0),
true );
69 TEST_EQUALITY( m1.get(1), false );
70 TEST_EQUALITY( m1.get(2),
true );
71 for (
auto i=3; i<ensemble_size; ++i)
72 TEST_EQUALITY( m1.get(i), false );
74 TEST_EQUALITY( (
double) m1, 2./ensemble_size );
79 constexpr
int ensemble_size = 16;
85 scalar a = (scalar) 1.;
88 scalar b = (scalar) 2.;
91 std::cout << std::endl;
92 std::cout << a << std::endl;
93 std::cout << b << std::endl;
94 std::cout << m1 << std::endl;
95 TEST_EQUALITY( m1.getSize(), ensemble_size );
96 TEST_EQUALITY( m1.get(0),
true );
97 TEST_EQUALITY( m1.get(1), false );
98 TEST_EQUALITY( m1.get(2),
true );
99 for (
auto i=3; i<ensemble_size; ++i)
100 TEST_EQUALITY( m1.get(i), false );
102 TEST_EQUALITY( (
double) m1, 2./ensemble_size );
107 constexpr
int ensemble_size = 8;
113 scalar a = (scalar) 1.;
116 scalar b = (scalar) 2.;
120 std::cout << m1 << std::endl;
121 std::cout << m2 << std::endl;
122 for (
auto i=0; i<ensemble_size; ++i)
123 TEST_EQUALITY( m2.get(i), !m1.get(i) );
128 constexpr
int ensemble_size = 8;
134 scalar a = (scalar) 1.;
137 scalar b = (scalar) 2.;
145 std::cout << m1 << std::endl;
146 std::cout << mul << std::endl;
148 std::cout << mul2 << std::endl;
149 std::cout << mul3 << std::endl;
151 TEST_EQUALITY( mul[0], 2.5 );
152 TEST_EQUALITY( mul[1], 0. );
153 TEST_EQUALITY( mul[2], 2.5 );
154 for (
auto i=3; i<ensemble_size; ++i)
155 TEST_EQUALITY( mul[i], 0. );
157 TEST_EQUALITY( mul2, mul3 );
162 constexpr
int ensemble_size = 16;
168 scalar a = (scalar) 1.;
171 scalar b = (scalar) 2.;
175 std::cout << m1 << std::endl;
176 std::cout << mul << std::endl;
178 TEST_EQUALITY( mul[0], 2.5 );
179 TEST_EQUALITY( mul[1], 0. );
180 TEST_EQUALITY( mul[2], 2.5 );
181 for (
auto i=3; i<ensemble_size; ++i)
182 TEST_EQUALITY( mul[i], 0. );
187 constexpr
int ensemble_size = 8;
193 scalar a = (scalar) 1.;
196 scalar b = (scalar) 2.;
199 scalar mul = m1*a + !m1*b;
200 scalar mul2 = a*m1 + !m1*b;
201 std::cout << m1 << std::endl;
202 std::cout << mul << std::endl;
203 std::cout << mul2 << std::endl;
205 TEST_EQUALITY( mul[0], 2.5 );
206 TEST_EQUALITY( mul[1], 2. );
207 TEST_EQUALITY( mul[2], 2.5 );
208 for (
auto i=3; i<ensemble_size; ++i)
209 TEST_EQUALITY( mul[i], 2. );
211 TEST_EQUALITY( mul, mul2 );
216 constexpr
int ensemble_size = 8;
224 scalar a = (scalar) 1.;
227 scalar b = (scalar) 2.;
230 auto m2 = a>(scalar) 0.;
233 std::cout << m1 << std::endl;
234 std::cout << m2 << std::endl;
235 std::cout << m3<< std::endl;
236 std::cout << m4<< std::endl;
239 {TEST_EQUALITY(
true,
false );}
241 {TEST_EQUALITY(
true,
true );}
243 TEST_EQUALITY((
bool) m1,
false );
244 TEST_EQUALITY((
bool) !m1,
true );
247 {TEST_EQUALITY(
true,
true );}
249 {TEST_EQUALITY(
true,
false );}
251 TEST_EQUALITY((
bool) m2,
true );
252 TEST_EQUALITY((
bool) !m2,
false );
254 TEST_EQUALITY( m2, m3 );
255 TEST_EQUALITY( m2, m4 );
260 constexpr
int ensemble_size = 8;
268 scalar a = (scalar) 1.;
271 scalar b = (scalar) 2.;
275 std::cout << m1 << std::endl;
276 std::cout << m2 << std::endl;
279 TEST_EQUALITY(
AND(
true),
true );
280 TEST_EQUALITY(
AND(
false),
false );
281 TEST_EQUALITY(
AND(m1),
false );
282 TEST_EQUALITY(
AND(!m1),
false );
283 TEST_EQUALITY(
AND(m2),
true );
284 TEST_EQUALITY(
AND(!m2),
false );
289 constexpr
int ensemble_size = 8;
297 scalar a = (scalar) 1.;
300 scalar b = (scalar) 2.;
304 std::cout << m1 << std::endl;
305 std::cout << m2 << std::endl;
308 TEST_EQUALITY(
OR(
true),
true );
309 TEST_EQUALITY(
OR(
false),
false );
310 TEST_EQUALITY(
OR(m1),
true );
311 TEST_EQUALITY(
OR(!m1),
true );
312 TEST_EQUALITY(
OR(m2),
true );
313 TEST_EQUALITY(
OR(!m2),
false );
318 constexpr
int ensemble_size = 8;
326 scalar a = (scalar) 1.;
328 scalar b = (scalar) 2.;
332 std::cout << m1 << std::endl;
333 std::cout << m2 << std::endl;
336 TEST_EQUALITY(
XOR(
true),
true );
337 TEST_EQUALITY(
XOR(
false),
false );
338 TEST_EQUALITY(
XOR(m1),
true );
339 TEST_EQUALITY(
XOR(!m1),
false );
340 TEST_EQUALITY(
XOR(m2),
false );
341 TEST_EQUALITY(
XOR(!m2),
false );
346 constexpr
int ensemble_size = 8;
352 scalar a = (scalar) 1.;
354 scalar b = (scalar) 2.;
359 std::cout << m1 << std::endl;
360 std::cout << m2 << std::endl;
362 TEST_EQUALITY((
double) m1,1./ensemble_size);
363 TEST_EQUALITY((
double) m2,1.);
365 TEST_EQUALITY(m1==1.,
false);
366 TEST_EQUALITY(m1!=1.,
true);
367 TEST_EQUALITY(m1==0.,
false);
368 TEST_EQUALITY(m1!=0.,
true);
370 TEST_EQUALITY(m1>=0.5,
false);
371 TEST_EQUALITY(m1<=0.5,
true);
372 TEST_EQUALITY(m1>0.5,
false);
373 TEST_EQUALITY(m1<0.5,
true);
375 TEST_EQUALITY(m2==1.,
true);
376 TEST_EQUALITY(m2!=1.,
false);
377 TEST_EQUALITY(m2==0.,
false);
378 TEST_EQUALITY(m2!=0.,
true);
380 TEST_EQUALITY(m2>=0.5,
true);
381 TEST_EQUALITY(m2<=0.5,
false);
382 TEST_EQUALITY(m2>0.5,
true);
383 TEST_EQUALITY(m2<0.5,
false);
388 constexpr
int ensemble_size = 8;
394 scalar a = (scalar) 1.;
396 scalar b = (scalar) 2.;
402 std::cout << m1 << std::endl;
403 std::cout << m2 << std::endl;
404 std::cout << m3 << std::endl;
405 TEST_EQUALITY(m3,m1);
410 constexpr
int ensemble_size = 8;
416 scalar a = (scalar) 1.;
418 scalar b = (scalar) 2.;
424 std::cout << m1 << std::endl;
425 std::cout << m2 << std::endl;
426 std::cout << m3 << std::endl;
427 TEST_EQUALITY(m3,m2);
432 constexpr
int ensemble_size = 8;
438 scalar a = (scalar) 1.;
440 scalar b = (scalar) 2.;
442 std::cout << a << std::endl;
443 std::cout << b << std::endl;
451 std::cout << m3 << std::endl;
452 TEST_EQUALITY(m3,m2);
457 constexpr
int ensemble_size = 8;
463 scalar a = (scalar) 1.;
465 scalar b = (scalar) 2.;
469 std::cout << m1 << std::endl;
470 std::cout << m2 << std::endl;
471 auto m3 = (a>0.) - (a>b);
472 std::cout << m3 << std::endl;
473 TEST_EQUALITY(m3,!m1);
478 constexpr
int ensemble_size = 8;
485 scalar a = (scalar) 1.;
491 TEST_EQUALITY(m1,m2);
496 constexpr
int ensemble_size = 8;
502 scalar a = (scalar) 1.;
505 scalar b = (scalar) 2.;
509 std::cout << std::endl;
510 std::cout << a << std::endl;
511 std::cout << b << std::endl;
513 std::cout << a << std::endl;
514 std::cout << b << std::endl;
515 TEST_EQUALITY(b[2],-2.);
520 constexpr
int ensemble_size = 8;
526 scalar a = (scalar) 1.;
531 TEST_EQUALITY(a[1],1.);
532 TEST_EQUALITY(a[2],0.);
541 TEST_EQUALITY(b,-1.);
547 constexpr
int ensemble_size = 8;
553 scalar a = (scalar) 1.;
559 TEST_EQUALITY(a[1],1.);
560 TEST_EQUALITY(a[2],0.);
565 constexpr
int ensemble_size = 8;
572 std::cout << a2 << std::endl;
574 scalar a = (scalar) 1.;
576 auto m = (a>(scalar) 0.);
577 std::cout <<
"m is computed" << std::endl;
578 std::cout << m << std::endl;
580 std::cout <<
"m is computed" << std::endl;
581 std::cout << m << std::endl;
583 std::cout << a << std::endl;
584 std::cout << m << std::endl;
585 std::cout << (a>=(scalar) 0. )<< std::endl;
586 std::cout << (a> 0. )<< std::endl;
587 std::cout << (a>= 0.) << std::endl;
588 std::cout << (0.<a )<< std::endl;
589 std::cout << (0.<=a) << std::endl;
591 mask_assign<scalar>(m,a) /= {a, 2.,-1.};
592 TEST_EQUALITY(a[1],0.5);
593 TEST_EQUALITY(a[2],-1.);
603 mask_assign<scalar>(m,a) /= {4.,2.,-1.};
604 TEST_EQUALITY(a[1],2.);
605 TEST_EQUALITY(a[2],-1.);
610 TEST_EQUALITY(b,0.5);
612 TEST_EQUALITY(b,-1.);
617 Teuchos::GlobalMPISession mpiSession(&argc, &
argv);
619 Kokkos::initialize();
624 int res = Teuchos::UnitTestRepository::runUnitTestsFromMain(argc,
argv);
KOKKOS_INLINE_FUNCTION Vector< S > copysign(const Vector< S > &a1, const Vector< S > &a2)
Stokhos::StandardStorage< int, double > storage_type
Statically allocated storage class.
Kokkos::DefaultExecutionSpace execution_space
KOKKOS_INLINE_FUNCTION bool OR(Mask< T > m)
KOKKOS_INLINE_FUNCTION MaskedAssign< scalar > mask_assign(bool b, scalar *s)
int main(int argc, char *argv[])
KOKKOS_INLINE_FUNCTION bool AND(Mask< T > m)
KOKKOS_INLINE_FUNCTION bool XOR(Mask< T > m)
TEUCHOS_UNIT_TEST(MP_Vector_MaskTraits, Create_8)
KOKKOS_INLINE_FUNCTION Mask< Sacado::MP::Vector< S > > signbit_v(const Sacado::MP::Vector< S > &a1)