42 #include "Teuchos_UnitTestHarness.hpp" 43 #include "Teuchos_TestingHelpers.hpp" 44 #include "Teuchos_UnitTestRepository.hpp" 45 #include "Teuchos_GlobalMPISession.hpp" 50 #include "Kokkos_Core.hpp" 51 #include "Kokkos_Complex.hpp" 61 template <
typename VectorType>
86 for (
int i=0; i<
sz; i++) {
87 x.fastAccessCoeff(i) = 0.1*i;
88 y.fastAccessCoeff(i) = 0.25*i;
97 #define UNARY_UNIT_TEST(VEC, SCALAR_T, OP, OPNAME, USING_OP) \ 98 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME) { \ 100 UTS::vec_type u = OP(setup.x); \ 101 UTS::vec_type v(setup.sz, 0.0); \ 102 for (int i=0; i<setup.sz; i++) \ 105 v.fastAccessCoeff(i) = OP(setup.x.fastAccessCoeff(i)); \ 107 success = compareVecs(u, "u",v, "v", \ 108 setup.rtol, setup.atol, out); \ 110 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_const) { \ 112 UTS::vec_type u = OP(setup.cx); \ 113 UTS::vec_type v(1, 0.0); \ 114 for (int i=0; i<v.size(); i++) \ 117 v.fastAccessCoeff(i) = OP(setup.cx.fastAccessCoeff(0)); \ 119 success = compareVecs(u, "u",v, "v", \ 120 setup.rtol, setup.atol, out); \ 122 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_resize) { \ 126 UTS::vec_type v(setup.sz, 0.0); \ 127 for (int i=0; i<setup.sz; i++) \ 130 v.fastAccessCoeff(i) = OP(setup.x.fastAccessCoeff(i)); \ 132 success = compareVecs(u, "u",v, "v", \ 133 setup.rtol, setup.atol, out); \ 136 #define BINARY_UNIT_TEST(VEC, SCALAR_T, OP, OPNAME) \ 137 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME) { \ 139 UTS::vec_type u = setup.x OP setup.y; \ 140 UTS::vec_type v(setup.sz, 0.0); \ 141 for (int i=0; i<setup.sz; i++) \ 142 v.fastAccessCoeff(i) = setup.x.fastAccessCoeff(i) OP \ 143 setup.y.fastAccessCoeff(i); \ 144 success = compareVecs(u, "u",v, "v", \ 145 setup.rtol, setup.atol, out); \ 147 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_left_const) { \ 149 UTS::vec_type u = setup.a OP setup.y; \ 150 UTS::vec_type v(setup.sz, 0.0); \ 151 for (int i=0; i<setup.sz; i++) \ 152 v.fastAccessCoeff(i) = setup.a OP setup.y.fastAccessCoeff(i); \ 153 success = compareVecs(u, "u",v, "v", \ 154 setup.rtol, setup.atol, out); \ 156 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_right_const) { \ 158 UTS::vec_type u = setup.x OP setup.a ; \ 159 UTS::vec_type v(setup.sz, 0.0); \ 160 for (int i=0; i<setup.sz; i++) \ 161 v.fastAccessCoeff(i) = setup.x.fastAccessCoeff(i) OP \ 163 success = compareVecs(u, "u",v, "v", \ 164 setup.rtol, setup.atol, out); \ 166 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_both_const) { \ 168 UTS::vec_type u = setup.cx OP setup.cx; \ 169 UTS::vec_type v(1, 0.0); \ 170 for (int i=0; i<v.size(); i++) \ 171 v.fastAccessCoeff(i) = setup.cx.fastAccessCoeff(0) OP \ 172 setup.cx.fastAccessCoeff(0); \ 173 success = compareVecs(u, "u",v, "v", \ 174 setup.rtol, setup.atol, out); \ 176 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_left_const2) { \ 178 UTS::vec_type u = setup.cx OP setup.x; \ 179 UTS::vec_type v(setup.sz, 0.0); \ 180 for (int i=0; i<setup.sz; i++) \ 181 v.fastAccessCoeff(i) = setup.cx.fastAccessCoeff(0) OP \ 182 setup.x.fastAccessCoeff(i); \ 183 success = compareVecs(u, "u",v, "v", \ 184 setup.rtol, setup.atol, out); \ 186 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_right_const2) { \ 188 UTS::vec_type u = setup.x OP setup.cx; \ 189 UTS::vec_type v(setup.sz, 0.0); \ 190 for (int i=0; i<setup.sz; i++) \ 191 v.fastAccessCoeff(i) = setup.x.fastAccessCoeff(i) OP \ 192 setup.cx.fastAccessCoeff(0); \ 193 success = compareVecs(u, "u",v, "v", \ 194 setup.rtol, setup.atol, out); \ 196 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_resize) { \ 199 u = setup.x OP setup.y; \ 200 UTS::vec_type v(setup.sz, 0.0); \ 201 for (int i=0; i<setup.sz; i++) \ 202 v.fastAccessCoeff(i) = setup.x.fastAccessCoeff(i) OP \ 203 setup.y.fastAccessCoeff(i); \ 204 success = compareVecs(u, "u",v, "v", \ 205 setup.rtol, setup.atol, out); \ 207 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_left_const_resize) { \ 210 u = setup.a OP setup.y; \ 211 UTS::vec_type v(setup.sz, 0.0); \ 212 for (int i=0; i<setup.sz; i++) \ 213 v.fastAccessCoeff(i) = setup.a OP \ 214 setup.y.fastAccessCoeff(i); \ 215 success = compareVecs(u, "u",v, "v", \ 216 setup.rtol, setup.atol, out); \ 218 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_right_const_resize) { \ 221 u = setup.x OP setup.a; \ 222 UTS::vec_type v(setup.sz, 0.0); \ 223 for (int i=0; i<setup.sz; i++) \ 224 v.fastAccessCoeff(i) = setup.x.fastAccessCoeff(i) OP \ 226 success = compareVecs(u, "u",v, "v", \ 227 setup.rtol, setup.atol, out); \ 230 #define BINARYFUNC_UNIT_TEST(VEC, SCALAR_T, OP, SOP, USING_SOP, OPNAME) \ 231 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME) { \ 233 UTS::vec_type u = OP(setup.x,setup.y); \ 234 UTS::vec_type v(setup.sz, 0.0); \ 235 for (int i=0; i<setup.sz; i++) \ 238 v.fastAccessCoeff(i) = SOP(setup.x.fastAccessCoeff(i), \ 239 setup.y.fastAccessCoeff(i)); \ 241 success = compareVecs(u, "u",v, "v", \ 242 setup.rtol, setup.atol, out); \ 244 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_left_const) { \ 246 UTS::vec_type u = OP(setup.a,setup.y); \ 247 UTS::vec_type v(setup.sz, 0.0); \ 248 for (int i=0; i<setup.sz; i++) \ 251 v.fastAccessCoeff(i) = SOP(setup.a, \ 252 setup.y.fastAccessCoeff(i)); \ 254 success = compareVecs(u, "u",v, "v", \ 255 setup.rtol, setup.atol, out); \ 257 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_right_const) { \ 259 UTS::vec_type u = OP(setup.x,setup.a); \ 260 UTS::vec_type v(setup.sz, 0.0); \ 261 for (int i=0; i<setup.sz; i++) \ 264 v.fastAccessCoeff(i) = SOP(setup.x.fastAccessCoeff(i), \ 267 success = compareVecs(u, "u",v, "v", \ 268 setup.rtol, setup.atol, out); \ 270 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_both_const) { \ 272 UTS::vec_type u = OP(setup.cx,setup.cx); \ 273 UTS::vec_type v(1, 0.0); \ 274 for (int i=0; i<v.size(); i++) \ 277 v.fastAccessCoeff(i) = SOP(setup.cx.fastAccessCoeff(0), \ 278 setup.cx.fastAccessCoeff(0)); \ 280 success = compareVecs(u, "u",v, "v", \ 281 setup.rtol, setup.atol, out); \ 283 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_left_const2) { \ 285 UTS::vec_type u = OP(setup.cx,setup.x); \ 286 UTS::vec_type v(setup.sz, 0.0); \ 287 for (int i=0; i<setup.sz; i++) \ 290 v.fastAccessCoeff(i) = SOP(setup.cx.fastAccessCoeff(0), \ 291 setup.x.fastAccessCoeff(i)); \ 293 success = compareVecs(u, "u",v, "v", \ 294 setup.rtol, setup.atol, out); \ 296 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_right_const2) { \ 298 UTS::vec_type u = OP(setup.x,setup.cx); \ 299 UTS::vec_type v(setup.sz, 0.0); \ 300 for (int i=0; i<setup.sz; i++) \ 303 v.fastAccessCoeff(i) = SOP(setup.x.fastAccessCoeff(i), \ 304 setup.cx.fastAccessCoeff(0)); \ 306 success = compareVecs(u, "u",v, "v", \ 307 setup.rtol, setup.atol, out); \ 309 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_resize) { \ 312 u = OP(setup.x,setup.y); \ 313 UTS::vec_type v(setup.sz, 0.0); \ 314 for (int i=0; i<setup.sz; i++) \ 317 v.fastAccessCoeff(i) = SOP(setup.x.fastAccessCoeff(i), \ 318 setup.y.fastAccessCoeff(i)); \ 320 success = compareVecs(u, "u",v, "v", \ 321 setup.rtol, setup.atol, out); \ 323 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_left_const_resize) { \ 326 u = OP(setup.a,setup.y); \ 327 UTS::vec_type v(setup.sz, 0.0); \ 328 for (int i=0; i<setup.sz; i++) \ 331 v.fastAccessCoeff(i) = SOP(setup.a, \ 332 setup.y.fastAccessCoeff(i)); \ 334 success = compareVecs(u, "u",v, "v", \ 335 setup.rtol, setup.atol, out); \ 337 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_right_const_resize) { \ 340 u = OP(setup.x,setup.a); \ 341 UTS::vec_type v(setup.sz, 0.0); \ 342 for (int i=0; i<setup.sz; i++) \ 345 v.fastAccessCoeff(i) = SOP(setup.x.fastAccessCoeff(i), \ 348 success = compareVecs(u, "u",v, "v", \ 349 setup.rtol, setup.atol, out); \ 352 #define OPASSIGN_UNIT_TEST(VEC, SCALAR_T, OP, OPNAME) \ 353 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME) { \ 355 UTS::vec_type u = std::sin(setup.x); \ 356 UTS::vec_type v = std::sin(setup.x); \ 358 for (int i=0; i<setup.sz; i++) \ 359 v.fastAccessCoeff(i) OP setup.x.fastAccessCoeff(i); \ 360 success = compareVecs(u, "u",v, "v", \ 361 setup.rtol, setup.atol, out); \ 363 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_const) { \ 365 UTS::vec_type u = std::sin(setup.x); \ 366 UTS::vec_type v = std::sin(setup.x); \ 368 for (int i=0; i<setup.sz; i++) \ 369 v.fastAccessCoeff(i) OP setup.a; \ 370 success = compareVecs(u, "u",v, "v", \ 371 setup.rtol, setup.atol, out); \ 373 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_const2) { \ 375 UTS::vec_type u = std::sin(setup.x); \ 376 UTS::vec_type v = std::sin(setup.x); \ 378 for (int i=0; i<setup.sz; i++) \ 379 v.fastAccessCoeff(i) OP setup.cx.fastAccessCoeff(0); \ 380 success = compareVecs(u, "u",v, "v", \ 381 setup.rtol, setup.atol, out); \ 383 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, OPNAME##_resize) { \ 385 UTS::vec_type u = setup.a; \ 386 UTS::vec_type v(setup.sz, 0.0); \ 388 for (int i=0; i<setup.sz; i++) { \ 389 v.fastAccessCoeff(i) = setup.a; \ 390 v.fastAccessCoeff(i) OP setup.x.fastAccessCoeff(i); \ 392 success = compareVecs(u, "u",v, "v", \ 393 setup.rtol, setup.atol, out); \ 396 #define SAXPY_UNIT_TEST(VEC, SCALAR_T) \ 397 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, saxpy) { \ 399 UTS::vec_type u = std::sin(setup.x); \ 400 UTS::vec_type v = std::sin(setup.x); \ 401 u += setup.x*setup.y; \ 402 for (int i=0; i<setup.sz; i++) \ 403 v.fastAccessCoeff(i) += \ 404 setup.x.fastAccessCoeff(i)*setup.y.fastAccessCoeff(i); \ 405 success = compareVecs(u, "u",v, "v", \ 406 setup.rtol, setup.atol, out); \ 408 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, saxpy_resize) { \ 410 UTS::vec_type u = setup.cx; \ 411 UTS::vec_type v(setup.sz, 0.0); \ 412 u += setup.x*setup.y; \ 413 for (int i=0; i<setup.sz; i++) \ 414 v.fastAccessCoeff(i) = setup.cx.fastAccessCoeff(0) + \ 415 setup.x.fastAccessCoeff(i)*setup.y.fastAccessCoeff(i); \ 416 success = compareVecs(u, "u",v, "v", \ 417 setup.rtol, setup.atol, out); \ 419 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, saxpy_const) { \ 421 UTS::vec_type u = std::sin(setup.x); \ 422 UTS::vec_type v = std::sin(setup.x); \ 423 u += setup.a*setup.y; \ 424 for (int i=0; i<setup.sz; i++) \ 425 v.fastAccessCoeff(i) += \ 426 setup.a*setup.y.fastAccessCoeff(i); \ 427 success = compareVecs(u, "u",v, "v", \ 428 setup.rtol, setup.atol, out); \ 430 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, saxpy_const2) { \ 432 UTS::vec_type u = std::sin(setup.x); \ 433 UTS::vec_type v = std::sin(setup.x); \ 434 u += setup.cx*setup.y; \ 435 for (int i=0; i<setup.sz; i++) \ 436 v.fastAccessCoeff(i) += \ 437 setup.cx.fastAccessCoeff(0)*setup.y.fastAccessCoeff(i); \ 438 success = compareVecs(u, "u",v, "v", \ 439 setup.rtol, setup.atol, out); \ 442 #define TERNARY_UNIT_TEST(VEC, SCALAR_T) \ 443 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, ternay) { \ 445 UTS::vec_type u = std::sin(setup.x); \ 446 UTS::vec_type v = -std::sin(setup.x); \ 447 u = u >= 0 ? -u : u; \ 448 success = compareVecs(u, "u", v, "v", \ 449 setup.rtol, setup.atol, out); \ 456 #define VECTOR_UNIT_TESTS_ANY_TYPE(VEC,SCALAR_T) \ 457 UNARY_UNIT_TEST(VEC, SCALAR_T, + , UnaryPlus ,) \ 458 UNARY_UNIT_TEST(VEC, SCALAR_T, - , UnaryMinus,) \ 459 UNARY_UNIT_TEST(VEC, SCALAR_T, exp , Exp , using std::exp; ) \ 460 UNARY_UNIT_TEST(VEC, SCALAR_T, log , Log , using std::log; ) \ 461 UNARY_UNIT_TEST(VEC, SCALAR_T, log10, Log10 , using std::log10;) \ 462 UNARY_UNIT_TEST(VEC, SCALAR_T, sqrt , Sqrt , using std::sqrt; ) \ 463 UNARY_UNIT_TEST(VEC, SCALAR_T, sin , Sin , using std::sin; ) \ 464 UNARY_UNIT_TEST(VEC, SCALAR_T, cos , Cos , using std::cos; ) \ 465 UNARY_UNIT_TEST(VEC, SCALAR_T, tan , Tan , using std::tan; ) \ 466 UNARY_UNIT_TEST(VEC, SCALAR_T, sinh , Sinh , using std::sinh; ) \ 467 UNARY_UNIT_TEST(VEC, SCALAR_T, cosh , Cosh , using std::cosh; ) \ 468 UNARY_UNIT_TEST(VEC, SCALAR_T, tanh , Tanh , using std::tanh; ) \ 469 UNARY_UNIT_TEST(VEC, SCALAR_T, asin , ASin , using std::asin; ) \ 470 UNARY_UNIT_TEST(VEC, SCALAR_T, acos , ACos , using std::acos; ) \ 471 UNARY_UNIT_TEST(VEC, SCALAR_T, atan , ATan , using std::atan; ) \ 472 UNARY_UNIT_TEST(VEC, SCALAR_T, asinh, ASinh , using std::asinh;) \ 473 UNARY_UNIT_TEST(VEC, SCALAR_T, acosh, ACosh , using std::acosh;) \ 474 UNARY_UNIT_TEST(VEC, SCALAR_T, atanh, ATanh , using std::atanh;) \ 476 BINARY_UNIT_TEST(VEC, SCALAR_T, +, Plus) \ 477 BINARY_UNIT_TEST(VEC, SCALAR_T, -, Minus) \ 478 BINARY_UNIT_TEST(VEC, SCALAR_T, *, Times) \ 479 BINARY_UNIT_TEST(VEC, SCALAR_T, /, Divide) \ 481 BINARYFUNC_UNIT_TEST(VEC, SCALAR_T, pow, pow, using std::pow;, Pow) \ 483 OPASSIGN_UNIT_TEST(VEC, SCALAR_T, +=, PlusEqual) \ 484 OPASSIGN_UNIT_TEST(VEC, SCALAR_T, -=, MinusEqual) \ 485 OPASSIGN_UNIT_TEST(VEC, SCALAR_T, *=, TimesEqual) \ 486 OPASSIGN_UNIT_TEST(VEC, SCALAR_T, /=, DivideEqual) \ 488 SAXPY_UNIT_TEST(VEC, SCALAR_T) \ 490 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, initializer_list_constructor ) { \ 492 UTS::vec_type u{ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 }; \ 493 UTS::vec_type v(setup.sz, 0.0); \ 494 for (int i=0; i<setup.sz; i++) \ 495 v.fastAccessCoeff(i) = i+1; \ 496 success = compareVecs(u, "u", v, "v", \ 497 setup.rtol, setup.atol, out); \ 499 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, initializer_list_copy ) { \ 501 UTS::vec_type u = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 }; \ 502 UTS::vec_type v(setup.sz, 0.0); \ 503 for (int i=0; i<setup.sz; i++) \ 504 v.fastAccessCoeff(i) = i+1; \ 505 success = compareVecs(u, "u", v, "v", \ 506 setup.rtol, setup.atol, out); \ 508 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, initializer_list_assign ) { \ 511 u = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 }; \ 512 UTS::vec_type v(setup.sz, 0.0); \ 513 for (int i=0; i<setup.sz; i++) \ 514 v.fastAccessCoeff(i) = i+1; \ 515 success = compareVecs(u, "u", v, "v", \ 516 setup.rtol, setup.atol, out); \ 518 TEUCHOS_UNIT_TEST( VEC##_##SCALAR_T, range_based_for ) { \ 520 UTS::vec_type u(setup.sz, 0.0); \ 521 for (auto& z : u) { z = 3.0; } \ 522 UTS::vec_type v(setup.sz, 3.0); \ 523 success = compareVecs(u, "u", v, "v", \ 524 setup.rtol, setup.atol, out); \ 530 #define VECTOR_UNIT_TESTS_SFS_ANY_VALUE_TYPE(SCALAR_T) \ 531 TEUCHOS_UNIT_TEST( StaticFixedVector##_##SCALAR_T, initializer_list_constructor_partial ) {\ 533 UTS::vec_type u{ 1.0}; \ 534 UTS::vec_type v(setup.sz, 1.0); \ 535 success = compareVecs(u, "u", v, "v", \ 536 setup.rtol, setup.atol, out); \ 538 TEUCHOS_UNIT_TEST( StaticFixedVector##_##SCALAR_T, initializer_list_constructor_empty ) { \ 540 UTS::vec_type u{ std::initializer_list<typename UTS::value_type>()}; \ 541 UTS::vec_type v(setup.sz, 0.0); \ 542 success = compareVecs(u, "u", v, "v", \ 543 setup.rtol, setup.atol, out); \ 549 #define VECTOR_UNIT_TESTS_COMPLEX_TYPE(VEC,SCALAR_T) \ 551 VECTOR_UNIT_TESTS_ANY_TYPE(VEC,SCALAR_T) 558 #define VECTOR_UNIT_TESTS_REAL_TYPE(VEC,SCALAR_T) \ 560 VECTOR_UNIT_TESTS_ANY_TYPE(VEC,SCALAR_T) \ 562 UNARY_UNIT_TEST(VEC, SCALAR_T, cbrt , Cbrt, using std::cbrt;) \ 564 BINARYFUNC_UNIT_TEST(VEC, SCALAR_T, atan2, atan2, using std::atan2;, ATan2) \ 566 BINARYFUNC_UNIT_TEST(VEC, SCALAR_T, max , max , using std::max ;, Max) \ 567 BINARYFUNC_UNIT_TEST(VEC, SCALAR_T, min , min , using std::min ;, Min) \ 569 TERNARY_UNIT_TEST(VEC, SCALAR_T) 574 #define TEST_DYNAMIC_STORAGE(__storage_type__,__vec_type__,__scalar_type__,__macro_for_tests__)\ 575 typedef Kokkos::DefaultExecutionSpace execution_space; \ 576 typedef Stokhos::__storage_type__<int,__scalar_type__,execution_space> storage_type; \ 577 typedef Sacado::MP::Vector<storage_type> vec_type; \ 578 typedef UnitTestSetup<vec_type> UTS; \ 579 __macro_for_tests__(__vec_type__,__scalar_type__) 594 #define TEST_STATIC_STORAGE(__storage_type__,__vec_type__,__scalar_type__,__scalar_type_name__,__storage_size__,__macro_for_tests__) \ 595 typedef ::Kokkos::DefaultExecutionSpace execution_space; \ 596 typedef ::Stokhos::__storage_type__<int,__scalar_type__,__storage_size__,execution_space> storage_type; \ 597 typedef ::Sacado::MP::Vector<storage_type> vec_type; \ 598 typedef UnitTestSetup<vec_type> UTS; \ 599 __macro_for_tests__(__vec_type__,__scalar_type_name__) 609 #define TEST_STATIC_FIXED_STORAGE(__storage_type__,__vec_type__,__scalar_type__,__scalar_type_name__,__storage_size__,__macro_for_tests__) \ 610 TEST_STATIC_STORAGE(__storage_type__,__vec_type__,__scalar_type__,__scalar_type_name__,__storage_size__,__macro_for_tests__) \ 611 VECTOR_UNIT_TESTS_SFS_ANY_VALUE_TYPE(__scalar_type_name__) 621 #if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_HIP) #define VECTOR_UNIT_TESTS_REAL_TYPE(VEC, SCALAR_T)
#define TEST_DYNAMIC_STORAGE(__storage_type__, __vec_type__, __scalar_type__, __macro_for_tests__)
#define TEST_STATIC_STORAGE(__storage_type__, __vec_type__, __scalar_type__, __scalar_type_name__, __storage_size__, __macro_for_tests__)
#define TEST_STATIC_FIXED_STORAGE(__storage_type__, __vec_type__, __scalar_type__, __scalar_type_name__, __storage_size__, __macro_for_tests__)
#define VECTOR_UNIT_TESTS_COMPLEX_TYPE(VEC, SCALAR_T)
vec_type::value_type value_type