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;
571 scalar a2 = {0.,2.,2.,2.,2.,2.,2.,2.};
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.);
KOKKOS_INLINE_FUNCTION MaskedAssign< scalar > mask_assign(bool b, scalar *s)
KOKKOS_INLINE_FUNCTION Mask< Sacado::MP::Vector< S > > signbit_v(const Sacado::MP::Vector< S > &a1)
Stokhos::StandardStorage< int, double > storage_type
TEUCHOS_UNIT_TEST(MP_Vector_MaskTraits, Create_8)
Kokkos::DefaultExecutionSpace execution_space
Statically allocated storage class.