38 template <
typename Storage>
39 KOKKOS_INLINE_FUNCTION
42 standard_deviation()
const {
45 const_pointer c = this->coeff();
51 template <
typename Storage>
52 KOKKOS_INLINE_FUNCTION
55 two_norm_squared()
const {
58 const_pointer c = this->coeff();
64 template <
typename Storage>
65 KOKKOS_INLINE_FUNCTION
68 inner_product(
const PCE& x)
const {
73 const_pointer c = this->coeff();
74 const_pointer xc = x.coeff();
80 template <
typename Storage>
81 KOKKOS_INLINE_FUNCTION
84 isEqualTo(
const PCE& x)
const {
85 typedef IsEqual<value_type> IE;
87 if (x.size() != sz)
return false;
90 eq = eq && IE::eval(x.coeff(i), this->coeff(i));
94 template <
typename Storage>
95 KOKKOS_INLINE_FUNCTION
98 isEqualTo(
const PCE& x)
const volatile {
99 typedef IsEqual<value_type> IE;
101 if (x.size() != sz)
return false;
104 eq = eq && IE::eval(x.coeff(i), this->coeff(i));
108 template <
typename Storage>
109 KOKKOS_INLINE_FUNCTION
119 template <
typename Storage>
120 KOKKOS_INLINE_FUNCTION
127 return const_cast<PCE&
>(*this);
130 template <
typename Storage>
131 KOKKOS_INLINE_FUNCTION
134 operator=(
const PCE<Storage>& x)
149 if (s_.size() > x.s_.size())
156 template <
typename Storage>
157 KOKKOS_INLINE_FUNCTION
160 operator=(
const volatile PCE<Storage>& x)
164 cijk_ = const_cast<const my_cijk_type&>(x.cijk_);
175 if (s_.size() > x.s_.size())
182 template <
typename Storage>
183 KOKKOS_INLINE_FUNCTION
186 operator=(
const PCE<Storage>& x)
volatile
190 const_cast<my_cijk_type&>(cijk_) = x.cijk_;
201 if (s_.size() > x.s_.size())
205 return const_cast<PCE&
>(*this);
208 template <
typename Storage>
209 KOKKOS_INLINE_FUNCTION
212 operator=(
const volatile PCE<Storage>& x)
volatile
216 const_cast<my_cijk_type&>(cijk_) =
217 const_cast<const my_cijk_type&
>(x.cijk_);
228 if (s_.size() > x.s_.size())
232 return const_cast<PCE&
>(*this);
235 template <
typename Storage>
236 KOKKOS_INLINE_FUNCTION
242 PCE<Storage> x(cijk_, sz);
243 pointer xc = x.coeff();
244 const_pointer cc = this->coeff();
250 template <
typename Storage>
251 KOKKOS_INLINE_FUNCTION
257 PCE<Storage> x(const_cast<const my_cijk_type&>(cijk_), sz);
258 pointer xc = x.coeff();
259 const_volatile_pointer cc = this->coeff();
265 template <
typename Storage>
266 KOKKOS_INLINE_FUNCTION
271 pointer cc = this->coeff();
278 template <
typename Storage>
279 KOKKOS_INLINE_FUNCTION
284 volatile_pointer cc = this->coeff();
288 return const_cast<PCE&
>(*this);
291 template <
typename Storage>
292 KOKKOS_INLINE_FUNCTION
297 pointer cc = this->coeff();
304 template <
typename Storage>
305 KOKKOS_INLINE_FUNCTION
310 volatile pointer cc = this->coeff();
314 return const_cast<PCE&
>(*this);
317 template <
typename Storage>
318 KOKKOS_INLINE_FUNCTION
321 operator+=(
const PCE<Storage>& x)
326 this->reset(x.cijk_, xsz);
328 const_pointer xc = x.coeff();
329 pointer cc = this->coeff();
335 template <
typename Storage>
336 KOKKOS_INLINE_FUNCTION
339 operator-=(
const PCE<Storage>& x)
344 this->reset(x.cijk_, xsz);
346 const_pointer xc = x.coeff();
347 pointer cc = this->coeff();
353 template <
typename Storage>
354 KOKKOS_INLINE_FUNCTION
357 operator*=(
const PCE<Storage>& x)
366 sz != xsz && sz != 1 && xsz != 1, std::logic_error,
367 "Sacado::UQ::PCE::operator*=(): input sizes do not match");
370 if (cijk_.is_empty() && !x.cijk_.is_empty())
375 cijk_.is_empty() && csz != 1, std::logic_error,
376 "Sacado::UQ::PCE::operator*(): empty cijk but expansion size > 1");
382 const_pointer xc = x.coeff();
383 pointer cc = this->coeff();
395 PCE<Storage> y(cijk_, csz);
396 pointer yc = y.coeff();
398 const cijk_size_type num_entry = cijk_.num_entry(i);
399 const cijk_size_type entry_beg = cijk_.entry_begin(i);
400 const cijk_size_type entry_end = entry_beg + num_entry;
402 for (cijk_size_type entry = entry_beg; entry < entry_end; ++entry) {
403 const cijk_size_type
j = cijk_.coord(entry,0);
404 const cijk_size_type k = cijk_.coord(entry,1);
405 ytmp += cijk_.value(entry) * ( cc[
j] * xc[k] + cc[k] * xc[
j] );
414 template <
typename Storage>
415 KOKKOS_INLINE_FUNCTION
418 operator/=(
const PCE<Storage>& x)
426 sz != xsz && sz != 1 && xsz != 1, std::logic_error,
427 "Sacado::UQ::PCE::operator/=(): input sizes do not match");
430 if (cijk_.is_empty() && !x.cijk_.is_empty())
436 const_pointer xc = x.coeff();
437 pointer cc = this->coeff();
453 PCE<Storage> y(cijk_, csz);
463 template <
typename Storage>
464 KOKKOS_INLINE_FUNCTION
473 const ordinal_type asz = a.size();
474 const ordinal_type bsz = b.size();
475 const ordinal_type csz = asz > bsz ? asz : bsz;
476 my_cijk_type c_cijk = asz > bsz ? a.cijk() : b.cijk();
479 const_pointer ac = a.coeff();
480 const_pointer bc = b.coeff();
481 pointer cc = c.coeff();
483 for (ordinal_type i=0; i<bsz; ++i)
484 cc[i] = ac[i] + bc[i];
485 for (ordinal_type i=bsz; i<asz; ++i)
489 for (ordinal_type i=0; i<asz; ++i)
490 cc[i] = ac[i] + bc[i];
491 for (ordinal_type i=asz; i<bsz; ++i)
498 template <
typename Storage>
499 KOKKOS_INLINE_FUNCTION
508 const ordinal_type bsz = b.size();
510 const_pointer bc = b.coeff();
511 pointer cc = c.coeff();
513 for (ordinal_type i=1; i<bsz; ++i)
518 template <
typename Storage>
519 KOKKOS_INLINE_FUNCTION
528 const ordinal_type asz = a.size();
530 const_pointer ac = a.coeff();
531 pointer cc = c.coeff();
533 for (ordinal_type i=1; i<asz; ++i)
538 template <
typename Storage>
539 KOKKOS_INLINE_FUNCTION
548 const ordinal_type asz = a.size();
549 const ordinal_type bsz = b.size();
550 const ordinal_type csz = asz > bsz ? asz : bsz;
551 my_cijk_type c_cijk = asz > bsz ? a.cijk() : b.cijk();
554 const_pointer ac = a.coeff();
555 const_pointer bc = b.coeff();
556 pointer cc = c.coeff();
558 for (ordinal_type i=0; i<bsz; ++i)
559 cc[i] = ac[i] - bc[i];
560 for (ordinal_type i=bsz; i<asz; ++i)
564 for (ordinal_type i=0; i<asz; ++i)
565 cc[i] = ac[i] - bc[i];
566 for (ordinal_type i=asz; i<bsz; ++i)
573 template <
typename Storage>
574 KOKKOS_INLINE_FUNCTION
583 const ordinal_type bsz = b.size();
585 const_pointer bc = b.coeff();
586 pointer cc = c.coeff();
588 for (ordinal_type i=1; i<bsz; ++i)
593 template <
typename Storage>
594 KOKKOS_INLINE_FUNCTION
603 const ordinal_type asz = a.size();
605 const_pointer ac = a.coeff();
606 pointer cc = c.coeff();
608 for (ordinal_type i=1; i<asz; ++i)
613 template <
typename Storage>
614 KOKKOS_INLINE_FUNCTION
623 typedef typename my_cijk_type::size_type cijk_size_type;
625 const ordinal_type asz = a.size();
626 const ordinal_type bsz = b.size();
627 const ordinal_type csz = asz > bsz ? asz : bsz;
631 asz != bsz && asz != 1 && bsz != 1, std::logic_error,
632 "Sacado::UQ::PCE::operator*(): input sizes do not match");
635 my_cijk_type c_cijk = a.cijk().is_empty() ? b.cijk() : a.cijk();
639 c_cijk.is_empty() && csz != 1, std::logic_error,
640 "Sacado::UQ::PCE::operator*(): empty cijk but expansion size > 1");
644 const_pointer ac = a.coeff();
645 const_pointer bc = b.coeff();
646 pointer cc = c.coeff();
649 const value_type acz = ac[0];
650 for (ordinal_type i=0; i<csz; ++i)
654 const value_type bcz = bc[0];
655 for (ordinal_type i=0; i<csz; ++i)
659 for (ordinal_type i=0; i<csz; ++i) {
660 const cijk_size_type num_entry = c_cijk.num_entry(i);
661 const cijk_size_type entry_beg = c_cijk.entry_begin(i);
662 const cijk_size_type entry_end = entry_beg + num_entry;
664 for (cijk_size_type entry = entry_beg; entry < entry_end; ++entry) {
665 const cijk_size_type
j = c_cijk.coord(entry,0);
666 const cijk_size_type k = c_cijk.coord(entry,1);
667 ytmp += c_cijk.value(entry) * ( ac[
j] * bc[k] + ac[k] * bc[
j] );
676 template <
typename Storage>
677 KOKKOS_INLINE_FUNCTION
686 const ordinal_type bsz = b.size();
688 const_pointer bc = b.coeff();
689 pointer cc = c.coeff();
690 for (ordinal_type i=0; i<bsz; ++i)
695 template <
typename Storage>
696 KOKKOS_INLINE_FUNCTION
705 const ordinal_type asz = a.size();
707 const_pointer ac = a.coeff();
708 pointer cc = c.coeff();
709 for (ordinal_type i=0; i<asz; ++i)
714 template <
typename Storage>
715 KOKKOS_INLINE_FUNCTION
725 const ordinal_type asz = a.size();
726 const ordinal_type bsz = b.size();
727 const ordinal_type csz = asz > bsz ? asz : bsz;
731 asz != bsz && asz != 1 && bsz != 1, std::logic_error,
732 "Sacado::UQ::PCE::operator/(): input sizes do not match");
734 my_cijk_type c_cijk = asz == bsz || asz >1 ? a.cijk() : b.cijk();
739 const_pointer ac = a.coeff();
740 pointer cc = c.coeff();
741 value_type bcz = b.fastAccessCoeff(0);
742 for (ordinal_type i=0; i<asz; ++i)
748 const_pointer ac = a.coeff();
749 const_pointer bc = b.coeff();
750 pointer cc = c.coeff();
751 const value_type bcz = bc[0];
752 for (ordinal_type i=0; i<csz; ++i)
763 template <
typename Storage>
764 KOKKOS_INLINE_FUNCTION
774 template <
typename Storage>
775 KOKKOS_INLINE_FUNCTION
784 const ordinal_type asz = a.size();
786 const_pointer ac = a.coeff();
787 pointer cc = c.coeff();
788 for (ordinal_type i=0; i<asz; ++i)
793 template <
typename Storage>
794 KOKKOS_INLINE_FUNCTION
800 a.size() != 1, std::logic_error,
801 "Sacado::UQ::PCE::exp(): argument has size != 1");
805 c.fastAccessCoeff(0) =
std::exp( a.fastAccessCoeff(0) );
810 template <
typename Storage>
811 KOKKOS_INLINE_FUNCTION
817 a.size() != 1, std::logic_error,
818 "Sacado::UQ::PCE::log(): argument has size != 1");
822 c.fastAccessCoeff(0) =
std::log( a.fastAccessCoeff(0) );
827 template <
typename Storage>
828 KOKKOS_INLINE_FUNCTION
834 a.size() != 1, std::logic_error,
835 "Sacado::UQ::PCE::log10(): argument has size != 1");
839 c.fastAccessCoeff(0) =
std::log10( a.fastAccessCoeff(0) );
844 template <
typename Storage>
845 KOKKOS_INLINE_FUNCTION
851 a.size() != 1, std::logic_error,
852 "Sacado::UQ::PCE::sqrt(): argument has size != 1");
856 c.fastAccessCoeff(0) =
std::sqrt( a.fastAccessCoeff(0) );
861 template <
typename Storage>
862 KOKKOS_INLINE_FUNCTION
868 a.size() != 1, std::logic_error,
869 "Sacado::UQ::PCE::cbrt(): argument has size != 1");
873 c.fastAccessCoeff(0) =
std::cbrt( a.fastAccessCoeff(0) );
878 template <
typename Storage>
879 KOKKOS_INLINE_FUNCTION
885 a.size() != 1 || b.size() != 1, std::logic_error,
886 "Sacado::UQ::PCE::pow(): arguments have size != 1");
890 c.fastAccessCoeff(0) =
std::pow(a.fastAccessCoeff(0), b.fastAccessCoeff(0));
895 template <
typename Storage>
896 KOKKOS_INLINE_FUNCTION
903 b.size() != 1, std::logic_error,
904 "Sacado::UQ::PCE::pow(): arguments have size != 1");
908 c.fastAccessCoeff(0) =
std::pow(a, b.fastAccessCoeff(0));
913 template <
typename Storage>
914 KOKKOS_INLINE_FUNCTION
921 a.size() != 1, std::logic_error,
922 "Sacado::UQ::PCE::pow(): arguments have size != 1");
926 c.fastAccessCoeff(0) =
std::pow(a.fastAccessCoeff(0), b);
931 template <
typename Storage>
932 KOKKOS_INLINE_FUNCTION
938 a.size() != 1, std::logic_error,
939 "Sacado::UQ::PCE::sin(): argument has size != 1");
943 c.fastAccessCoeff(0) =
std::sin( a.fastAccessCoeff(0) );
948 template <
typename Storage>
949 KOKKOS_INLINE_FUNCTION
955 a.size() != 1, std::logic_error,
956 "Sacado::UQ::PCE::cos(): argument has size != 1");
960 c.fastAccessCoeff(0) =
std::cos( a.fastAccessCoeff(0) );
965 template <
typename Storage>
966 KOKKOS_INLINE_FUNCTION
972 a.size() != 1, std::logic_error,
973 "Sacado::UQ::PCE::tan(): argument has size != 1");
977 c.fastAccessCoeff(0) =
std::tan( a.fastAccessCoeff(0) );
982 template <
typename Storage>
983 KOKKOS_INLINE_FUNCTION
989 a.size() != 1, std::logic_error,
990 "Sacado::UQ::PCE::sinh(): argument has size != 1");
994 c.fastAccessCoeff(0) =
std::sinh( a.fastAccessCoeff(0) );
999 template <
typename Storage>
1000 KOKKOS_INLINE_FUNCTION
1006 a.size() != 1, std::logic_error,
1007 "Sacado::UQ::PCE::cosh(): argument has size != 1");
1011 c.fastAccessCoeff(0) =
std::cosh( a.fastAccessCoeff(0) );
1016 template <
typename Storage>
1017 KOKKOS_INLINE_FUNCTION
1023 a.size() != 1, std::logic_error,
1024 "Sacado::UQ::PCE::tanh(): argument has size != 1");
1028 c.fastAccessCoeff(0) =
std::tanh( a.fastAccessCoeff(0) );
1033 template <
typename Storage>
1034 KOKKOS_INLINE_FUNCTION
1040 a.size() != 1, std::logic_error,
1041 "Sacado::UQ::PCE::acos(): argument has size != 1");
1045 c.fastAccessCoeff(0) =
std::acos( a.fastAccessCoeff(0) );
1050 template <
typename Storage>
1051 KOKKOS_INLINE_FUNCTION
1057 a.size() != 1, std::logic_error,
1058 "Sacado::UQ::PCE::asin(): argument has size != 1");
1062 c.fastAccessCoeff(0) =
std::asin( a.fastAccessCoeff(0) );
1067 template <
typename Storage>
1068 KOKKOS_INLINE_FUNCTION
1074 a.size() != 1, std::logic_error,
1075 "Sacado::UQ::PCE::atan(): argument has size != 1");
1079 c.fastAccessCoeff(0) =
std::atan( a.fastAccessCoeff(0) );
1137 template <
typename Storage>
1138 KOKKOS_INLINE_FUNCTION
1143 c.fastAccessCoeff(0) = a.two_norm();
1147 template <
typename Storage>
1148 KOKKOS_INLINE_FUNCTION
1153 c.fastAccessCoeff(0) = a.two_norm();
1157 template <
typename Storage>
1158 KOKKOS_INLINE_FUNCTION
1163 c.fastAccessCoeff(0) =
std::ceil( a.fastAccessCoeff(0) );
1177 template <
typename Storage>
1178 KOKKOS_INLINE_FUNCTION
1183 if (a >= b.two_norm()) {
1185 c.fastAccessCoeff(0) = a;
1191 template <
typename Storage>
1192 KOKKOS_INLINE_FUNCTION
1197 if (a.two_norm() >= b)
1200 c.fastAccessCoeff(0) = b;
1214 template <
typename Storage>
1215 KOKKOS_INLINE_FUNCTION
1220 if (a <= b.two_norm()) {
1222 c.fastAccessCoeff(0) = a;
1228 template <
typename Storage>
1229 KOKKOS_INLINE_FUNCTION
1234 if (a.two_norm() <= b)
1237 c.fastAccessCoeff(0) = b;
1241 template <
typename Storage>
1242 KOKKOS_INLINE_FUNCTION
1247 const ordinal_type asz = a.size();
1248 const ordinal_type bsz = b.size();
1249 const ordinal_type n = asz > bsz ? asz : bsz;
1250 for (ordinal_type i=0; i<n; i++)
1251 if (a.coeff(i) != b.coeff(i))
1256 template <
typename Storage>
1257 KOKKOS_INLINE_FUNCTION
1263 const ordinal_type n = b.size();
1264 if (a != b.coeff(0))
1266 for (ordinal_type i=1; i<n; i++)
1272 template <
typename Storage>
1273 KOKKOS_INLINE_FUNCTION
1279 const ordinal_type n = a.size();
1280 if (a.coeff(0) != b)
1282 for (ordinal_type i=1; i<n; i++)
1288 template <
typename Storage>
1289 KOKKOS_INLINE_FUNCTION
1296 template <
typename Storage>
1297 KOKKOS_INLINE_FUNCTION
1305 template <
typename Storage>
1306 KOKKOS_INLINE_FUNCTION
1314 template <
typename Storage>
1315 KOKKOS_INLINE_FUNCTION
1319 return a.two_norm() <= b.two_norm();
1322 template <
typename Storage>
1323 KOKKOS_INLINE_FUNCTION
1328 return a <= b.two_norm();
1331 template <
typename Storage>
1332 KOKKOS_INLINE_FUNCTION
1334 operator<=(const PCE<Storage>& a,
1337 return a.two_norm() <= b;
1340 template <
typename Storage>
1341 KOKKOS_INLINE_FUNCTION
1345 return a.two_norm() >= b.two_norm();
1348 template <
typename Storage>
1349 KOKKOS_INLINE_FUNCTION
1354 return a >= b.two_norm();
1357 template <
typename Storage>
1358 KOKKOS_INLINE_FUNCTION
1363 return a.two_norm() >= b;
1366 template <
typename Storage>
1367 KOKKOS_INLINE_FUNCTION
1371 return a.two_norm() < b.two_norm();
1374 template <
typename Storage>
1375 KOKKOS_INLINE_FUNCTION
1380 return a < b.two_norm();
1383 template <
typename Storage>
1384 KOKKOS_INLINE_FUNCTION
1386 operator<(const PCE<Storage>& a,
1389 return a.two_norm() < b;
1392 template <
typename Storage>
1393 KOKKOS_INLINE_FUNCTION
1397 return a.two_norm() > b.two_norm();
1400 template <
typename Storage>
1401 KOKKOS_INLINE_FUNCTION
1406 return a > b.two_norm();
1409 template <
typename Storage>
1410 KOKKOS_INLINE_FUNCTION
1415 return a.two_norm() > b;
1418 template <
typename Storage>
1419 KOKKOS_INLINE_FUNCTION
1422 bool is_zero =
true;
1423 const ordinal_type sz = x.size();
1424 for (ordinal_type i=0; i<sz; i++)
1425 is_zero = is_zero && (x.fastAccessCoeff(i) == 0.0);
1429 template <
typename Storage>
1430 KOKKOS_INLINE_FUNCTION
1437 template <
typename Storage>
1438 KOKKOS_INLINE_FUNCTION
1446 template <
typename Storage>
1447 KOKKOS_INLINE_FUNCTION
1455 template <
typename Storage>
1456 KOKKOS_INLINE_FUNCTION
1463 template <
typename Storage>
1464 KOKKOS_INLINE_FUNCTION
1472 template <
typename Storage>
1473 KOKKOS_INLINE_FUNCTION
1481 template <
typename Storage>
1483 operator << (std::ostream& os, const PCE<Storage>& a)
1489 for (ordinal_type i=0; i<a.size(); i++) {
1490 os << a.coeff(i) <<
" ";
1497 template <
typename Storage>
1507 for (ordinal_type i=0; i<a.size(); i++) {
1508 is >> a.fastAccessCoeff(i);
1517 template <
typename Storage>
1518 KOKKOS_INLINE_FUNCTION
1524 const ordinal_type size = c.size();
1527 value_type alpha, beta, rTz, rTz_old, resid;
1539 resid = r.two_norm();
1541 rTz = r.inner_product(z);
1543 value_type tol = 1e-6;
1544 while ( resid > tol && k < 100){
1547 alpha = rTz/p.inner_product(bp);
1553 resid = r.two_norm();
1556 rTz = r.inner_product(z);
KOKKOS_INLINE_FUNCTION PCE< Storage > sqrt(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > fabs(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > tan(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION bool operator||(const PCE< Storage > &x1, const PCE< Storage > &x2)
KOKKOS_INLINE_FUNCTION PCE< Storage > sinh(const PCE< Storage > &a)
OrthogPoly< T, Storage > operator-(const OrthogPoly< T, Storage > &a, const OrthogPoly< T, Storage > &b)
KOKKOS_INLINE_FUNCTION PCE< Storage > pow(const PCE< Storage > &a, const PCE< Storage > &b)
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
KOKKOS_INLINE_FUNCTION void CG_divide(const PCE< Storage > &a, const PCE< Storage > &b, PCE< Storage > &c)
KOKKOS_INLINE_FUNCTION bool operator&&(const PCE< Storage > &x1, const PCE< Storage > &x2)
KOKKOS_INLINE_FUNCTION PCE< Storage > tanh(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > cbrt(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION bool operator!=(const PCE< Storage > &a, const PCE< Storage > &b)
KOKKOS_INLINE_FUNCTION PCE< Storage > acos(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > min(const typename PCE< Storage >::value_type &a, const PCE< Storage > &b)
KOKKOS_INLINE_FUNCTION bool operator>(const PCE< Storage > &a, const PCE< Storage > &b)
std::istream & operator>>(std::istream &is, PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > operator/(const PCE< Storage > &a, const PCE< Storage > &b)
KOKKOS_INLINE_FUNCTION PCE< Storage > ceil(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > operator-(const PCE< Storage > &a, const PCE< Storage > &b)
KOKKOS_INLINE_FUNCTION bool operator>=(const PCE< Storage > &a, const PCE< Storage > &b)
KOKKOS_INLINE_FUNCTION PCE< Storage > max(const typename PCE< Storage >::value_type &a, const PCE< Storage > &b)
KOKKOS_INLINE_FUNCTION PCE< Storage > cosh(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION bool is_constant(const T &x)
KOKKOS_INLINE_FUNCTION bool operator==(const PCE< Storage > &a, const PCE< Storage > &b)
KOKKOS_INLINE_FUNCTION PCE< Storage > abs(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > atan(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > exp(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > sin(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > operator+(const PCE< Storage > &a, const PCE< Storage > &b)
KOKKOS_INLINE_FUNCTION PCE< Storage > operator*(const PCE< Storage > &a, const PCE< Storage > &b)
KOKKOS_INLINE_FUNCTION PCE< Storage > log(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > log10(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > asin(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > cos(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION bool toBool(const PCE< Storage > &x)