10 #ifndef SACADO_UQ_PCE_HPP
11 #define SACADO_UQ_PCE_HPP
15 #ifdef HAVE_STOKHOS_SACADO
17 #include "Kokkos_Macros.hpp"
19 #include "Sacado_Traits.hpp"
20 #include "Sacado_mpl_apply.hpp"
28 #include <initializer_list>
33 template <
typename Storage>
34 KOKKOS_INLINE_FUNCTION
45 template <
typename Storage >
48 template <
class>
friend class PCE;
59 typedef typename storage_type::volatile_pointer volatile_pointer;
61 typedef typename storage_type::const_volatile_pointer const_volatile_pointer;
63 typedef typename storage_type::volatile_reference volatile_reference;
65 typedef typename storage_type::const_volatile_reference const_volatile_reference;
68 typedef typename ScalarType<value_type>::type
scalar_type;
87 KOKKOS_DEFAULTED_FUNCTION
94 KOKKOS_INLINE_FUNCTION
95 PCE(
const value_type& x) : cijk_(), s_(1, x) {}
101 template <
typename M>
102 KOKKOS_INLINE_FUNCTION
104 cijk_(cijkVal), s_(cijk_.dimension()) {}
110 template <
typename M>
111 KOKKOS_INLINE_FUNCTION
120 template <
typename M>
121 KOKKOS_INLINE_FUNCTION
124 cijk_(cijkVal), s_(sz,v,owned) {}
127 KOKKOS_INLINE_FUNCTION
134 KOKKOS_INLINE_FUNCTION
135 PCE(
const volatile PCE& x) :
136 cijk_(const_cast<const my_cijk_type&>(x.cijk_)),
146 PCE(std::initializer_list<value_type> l) :
147 cijk_(), s_(l.size(), l.begin()) {}
150 KOKKOS_DEFAULTED_FUNCTION
154 KOKKOS_INLINE_FUNCTION
155 void init(const_reference v) { s_.init(v); }
158 KOKKOS_INLINE_FUNCTION
159 void init(const_reference v)
volatile { s_.init(v); }
162 KOKKOS_INLINE_FUNCTION
163 void init(const_pointer v) { s_.init(v); }
166 KOKKOS_INLINE_FUNCTION
167 void init(const_pointer v)
volatile { s_.init(v); }
170 template <
typename S>
171 KOKKOS_INLINE_FUNCTION
172 void init(
const PCE<S>& v) { s_.init(v.coeff()); }
175 template <
typename S>
176 KOKKOS_INLINE_FUNCTION
177 void init(
const PCE<S>& v)
volatile { s_.init(v.coeff()); }
180 KOKKOS_INLINE_FUNCTION
181 void load(pointer v) { s_.load(v); }
184 KOKKOS_INLINE_FUNCTION
185 void load(pointer v)
volatile { s_.load(v); }
188 template <
typename S>
189 KOKKOS_INLINE_FUNCTION
190 void load(PCE<S>& v) { s_.load(v.coeff()); }
193 template <
typename S>
194 KOKKOS_INLINE_FUNCTION
195 void load(PCE<S>& v)
volatile { s_.load(v.coeff()); }
201 template <
typename M>
202 KOKKOS_INLINE_FUNCTION
205 s_.resize(cijk_.dimension());
212 template <
typename M>
213 KOKKOS_INLINE_FUNCTION
216 s_.resize(cijk_.dimension());
223 template <
typename M>
224 KOKKOS_INLINE_FUNCTION
234 template <
typename M>
235 KOKKOS_INLINE_FUNCTION
251 KOKKOS_INLINE_FUNCTION
252 void copyForWrite() { }
266 KOKKOS_INLINE_FUNCTION
270 KOKKOS_INLINE_FUNCTION
274 KOKKOS_INLINE_FUNCTION
276 return std::sqrt(this->two_norm_squared());
280 KOKKOS_INLINE_FUNCTION
284 KOKKOS_INLINE_FUNCTION
288 KOKKOS_INLINE_FUNCTION
289 bool isEqualTo(
const PCE& x)
const;
292 KOKKOS_INLINE_FUNCTION
293 bool isEqualTo(
const PCE& x)
const volatile;
301 KOKKOS_INLINE_FUNCTION
305 KOKKOS_INLINE_FUNCTION
309 KOKKOS_INLINE_FUNCTION
310 PCE<Storage>& operator=(
const PCE<Storage>& x);
313 KOKKOS_INLINE_FUNCTION
314 PCE<Storage>& operator=(
const volatile PCE<Storage>& x);
317 KOKKOS_INLINE_FUNCTION
318 PCE<Storage>& operator=(
const PCE<Storage>& x)
volatile;
321 KOKKOS_INLINE_FUNCTION
322 PCE<Storage>& operator=(
const volatile PCE<Storage>& x)
volatile;
325 template <
typename S>
326 KOKKOS_INLINE_FUNCTION
327 PCE<Storage>& operator=(
const PCE<S>& x) {
349 PCE& operator=(std::initializer_list<value_type> l) {
351 if (lsz != s_.size())
353 s_.init(l.begin(), lsz);
362 operator=(std::initializer_list<value_type> l)
volatile {
364 if (lsz != s_.size())
366 s_.init(l.begin(), lsz);
367 return const_cast<PCE&
>(*this);
384 KOKKOS_INLINE_FUNCTION
385 my_cijk_type
cijk()
const {
return cijk_; }
388 KOKKOS_INLINE_FUNCTION
389 my_cijk_type
cijk()
const volatile {
390 return const_cast<const my_cijk_type&
>(cijk_);
401 KOKKOS_INLINE_FUNCTION
402 const_volatile_reference
val()
const volatile {
return s_[0]; }
405 KOKKOS_INLINE_FUNCTION
406 const_reference
val()
const {
return s_[0]; }
409 KOKKOS_INLINE_FUNCTION
410 volatile_reference
val()
volatile {
return s_[0]; }
413 KOKKOS_INLINE_FUNCTION
414 reference
val() {
return s_[0]; }
424 KOKKOS_INLINE_FUNCTION
428 KOKKOS_INLINE_FUNCTION
432 KOKKOS_INLINE_FUNCTION
433 bool hasFastAccess(
ordinal_type sz)
const {
return s_.size()>=sz;}
436 KOKKOS_INLINE_FUNCTION
438 return s_.size()>=sz;
442 KOKKOS_INLINE_FUNCTION
443 const_pointer coeff()
const {
return s_.coeff();}
446 KOKKOS_INLINE_FUNCTION
447 const_volatile_pointer coeff()
const volatile {
return s_.coeff();}
450 KOKKOS_INLINE_FUNCTION
451 volatile_pointer coeff()
volatile {
return s_.coeff();}
454 KOKKOS_INLINE_FUNCTION
455 pointer coeff() {
return s_.coeff();}
458 KOKKOS_INLINE_FUNCTION
463 KOKKOS_INLINE_FUNCTION
468 KOKKOS_INLINE_FUNCTION
473 KOKKOS_INLINE_FUNCTION
478 KOKKOS_INLINE_FUNCTION
483 KOKKOS_INLINE_FUNCTION
505 KOKKOS_INLINE_FUNCTION
506 pointer begin() {
return s_.coeff(); }
509 KOKKOS_INLINE_FUNCTION
510 const_pointer begin()
const {
return s_.coeff(); }
513 KOKKOS_INLINE_FUNCTION
514 volatile_pointer begin()
volatile {
return s_.coeff(); }
517 KOKKOS_INLINE_FUNCTION
518 const_volatile_pointer begin()
const volatile {
return s_.coeff(); }
521 KOKKOS_INLINE_FUNCTION
522 const_pointer cbegin()
const {
return s_.coeff(); }
525 KOKKOS_INLINE_FUNCTION
526 const_volatile_pointer cbegin()
const volatile {
return s_.coeff(); }
529 KOKKOS_INLINE_FUNCTION
530 pointer end() {
return s_.coeff() + s_.size(); }
533 KOKKOS_INLINE_FUNCTION
534 const_pointer end()
const {
return s_.coeff() + s_.size(); }
537 KOKKOS_INLINE_FUNCTION
538 volatile_pointer end()
volatile {
return s_.coeff() + s_.size(); }
541 KOKKOS_INLINE_FUNCTION
542 const_volatile_pointer end()
const volatile {
return s_.coeff() + s_.size(); }
545 KOKKOS_INLINE_FUNCTION
546 const_pointer cend()
const {
return s_.coeff()+ s_.size(); }
549 KOKKOS_INLINE_FUNCTION
550 const_volatile_pointer cend()
const volatile {
return s_.coeff()+ s_.size(); }
560 KOKKOS_INLINE_FUNCTION
564 KOKKOS_INLINE_FUNCTION
565 PCE
operator + ()
const volatile {
return *
this; }
568 KOKKOS_INLINE_FUNCTION
572 KOKKOS_INLINE_FUNCTION
576 KOKKOS_INLINE_FUNCTION
583 KOKKOS_INLINE_FUNCTION
584 PCE& operator += (
const value_type x)
volatile {
586 return const_cast<PCE&
>(*this);
590 KOKKOS_INLINE_FUNCTION
597 KOKKOS_INLINE_FUNCTION
598 PCE& operator -= (
const value_type x)
volatile {
600 return const_cast<PCE&
>(*this);
604 KOKKOS_INLINE_FUNCTION
608 KOKKOS_INLINE_FUNCTION
609 PCE& operator *= (
const value_type x)
volatile;
612 KOKKOS_INLINE_FUNCTION
616 KOKKOS_INLINE_FUNCTION
617 PCE& operator /= (
const value_type x)
volatile;
620 KOKKOS_INLINE_FUNCTION
621 PCE& operator += (
const PCE& x);
624 KOKKOS_INLINE_FUNCTION
625 PCE& operator += (
const volatile PCE& x) {
626 return *
this +=
const_cast<const PCE&
>(x);
630 KOKKOS_INLINE_FUNCTION
631 PCE& operator += (
const PCE& x)
volatile {
632 return const_cast<PCE&
>(*this) += x;
636 KOKKOS_INLINE_FUNCTION
637 PCE& operator += (
const volatile PCE& x)
volatile {
638 return const_cast<PCE&
>(*this) +=
const_cast<const PCE&
>(x);
642 KOKKOS_INLINE_FUNCTION
643 PCE& operator -= (
const PCE& x);
646 KOKKOS_INLINE_FUNCTION
647 PCE& operator -= (
const volatile PCE& x) {
648 return *
this -=
const_cast<const PCE&
>(x);
652 KOKKOS_INLINE_FUNCTION
653 PCE& operator -= (
const PCE& x)
volatile {
654 return const_cast<PCE&
>(*this) -= x;
658 KOKKOS_INLINE_FUNCTION
659 PCE& operator -= (
const volatile PCE& x)
volatile {
660 return const_cast<PCE&
>(*this) -=
const_cast<const PCE&
>(x);
664 KOKKOS_INLINE_FUNCTION
665 PCE& operator *= (
const PCE& x);
668 KOKKOS_INLINE_FUNCTION
669 PCE& operator *= (
const volatile PCE& x) {
670 return *
this *=
const_cast<const PCE&
>(x);
674 KOKKOS_INLINE_FUNCTION
675 PCE& operator *= (
const PCE& x)
volatile {
676 return const_cast<PCE&
>(*this) *= x;
680 KOKKOS_INLINE_FUNCTION
681 PCE& operator *= (
const volatile PCE& x)
volatile {
682 return const_cast<PCE&
>(*this) *=
const_cast<const PCE&
>(x);
686 KOKKOS_INLINE_FUNCTION
687 PCE& operator /= (
const PCE& x);
690 KOKKOS_INLINE_FUNCTION
691 PCE& operator /= (
const volatile PCE& x) {
692 return *
this /=
const_cast<const PCE&
>(x);
696 KOKKOS_INLINE_FUNCTION
697 PCE& operator /= (
const PCE& x)
volatile {
698 return const_cast<PCE&
>(*this) /= x;
702 KOKKOS_INLINE_FUNCTION
703 PCE& operator /= (
const volatile PCE& x)
volatile {
704 return const_cast<PCE&
>(*this) /=
const_cast<const PCE&
>(x);
708 KOKKOS_INLINE_FUNCTION
715 KOKKOS_INLINE_FUNCTION
716 volatile PCE& operator++()
volatile {
722 KOKKOS_INLINE_FUNCTION
723 PCE operator++(
int) {
730 KOKKOS_INLINE_FUNCTION
731 PCE operator++(
int)
volatile {
738 KOKKOS_INLINE_FUNCTION
745 KOKKOS_INLINE_FUNCTION
746 volatile PCE& operator--()
volatile {
752 KOKKOS_INLINE_FUNCTION
753 PCE operator--(
int) {
760 KOKKOS_INLINE_FUNCTION
761 PCE operator--(
int)
volatile {
773 typedef typename my_cijk_type::size_type cijk_size_type;
789 template <
typename Storage>
790 KOKKOS_INLINE_FUNCTION
791 void CG_divide(
const PCE<Storage>& a,
const PCE<Storage>& b, PCE<Storage>& c);
794 template <
typename Storage>
795 KOKKOS_INLINE_FUNCTION
797 operator+(
const PCE<Storage>& a,
const PCE<Storage>& b);
799 template <
typename Storage>
800 KOKKOS_INLINE_FUNCTION
802 operator+(
const volatile PCE<Storage>& a,
const PCE<Storage>& b) {
803 return const_cast<const PCE<Storage>&
>(a) + b;
806 template <
typename Storage>
807 KOKKOS_INLINE_FUNCTION
809 operator+(
const PCE<Storage>& a,
const volatile PCE<Storage>& b) {
810 return a +
const_cast<const PCE<Storage>&
>(b);
813 template <
typename Storage>
814 KOKKOS_INLINE_FUNCTION
816 operator+(
const volatile PCE<Storage>& a,
const volatile PCE<Storage>& b) {
817 return const_cast<const PCE<Storage>&
>(a) +
818 const_cast<const PCE<Storage>&
>(b);
821 template <
typename Storage>
822 KOKKOS_INLINE_FUNCTION
825 const PCE<Storage>& b);
827 template <
typename Storage>
828 KOKKOS_INLINE_FUNCTION
833 template <
typename Storage>
834 KOKKOS_INLINE_FUNCTION
836 operator-(
const PCE<Storage>& a,
const PCE<Storage>& b);
838 template <
typename Storage> PCE<Storage>
839 KOKKOS_INLINE_FUNCTION
841 const PCE<Storage>& b);
843 template <
typename Storage>
844 KOKKOS_INLINE_FUNCTION
849 template <
typename Storage>
850 KOKKOS_INLINE_FUNCTION
852 operator*(
const PCE<Storage>& a,
const PCE<Storage>& b);
854 template <
typename Storage>
855 KOKKOS_INLINE_FUNCTION
858 const PCE<Storage>& b);
860 template <
typename Storage> PCE<Storage>
861 KOKKOS_INLINE_FUNCTION
865 template <
typename Storage>
866 KOKKOS_INLINE_FUNCTION
868 operator/(
const PCE<Storage>& a,
const PCE<Storage>& b);
870 template <
typename Storage>
871 KOKKOS_INLINE_FUNCTION
874 const PCE<Storage>& b);
876 template <
typename Storage>
877 KOKKOS_INLINE_FUNCTION
882 template <
typename Storage>
883 KOKKOS_INLINE_FUNCTION
885 exp(
const PCE<Storage>& a);
887 template <
typename Storage>
888 KOKKOS_INLINE_FUNCTION
890 log(
const PCE<Storage>& a);
892 template <
typename Storage>
893 KOKKOS_INLINE_FUNCTION
895 log(PCE<Storage>& c,
const PCE<Storage>& a);
897 template <
typename Storage>
898 KOKKOS_INLINE_FUNCTION
900 log10(
const PCE<Storage>& a);
902 template <
typename Storage>
903 KOKKOS_INLINE_FUNCTION
905 sqrt(
const PCE<Storage>& a);
907 template <
typename Storage>
908 KOKKOS_INLINE_FUNCTION
910 cbrt(
const PCE<Storage>& a);
912 template <
typename Storage>
913 KOKKOS_INLINE_FUNCTION
915 pow(
const PCE<Storage>& a,
const PCE<Storage>& b);
917 template <
typename Storage>
918 KOKKOS_INLINE_FUNCTION
922 template <
typename Storage> PCE<Storage>
923 KOKKOS_INLINE_FUNCTION
924 pow(
const PCE<Storage>& a,
927 template <
typename Storage>
928 KOKKOS_INLINE_FUNCTION
930 cos(
const PCE<Storage>& a);
932 template <
typename Storage>
933 KOKKOS_INLINE_FUNCTION
935 sin(
const PCE<Storage>& a);
937 template <
typename Storage>
938 KOKKOS_INLINE_FUNCTION
940 tan(
const PCE<Storage>& a);
942 template <
typename Storage>
943 KOKKOS_INLINE_FUNCTION
945 cosh(
const PCE<Storage>& a);
947 template <
typename Storage>
948 KOKKOS_INLINE_FUNCTION
950 sinh(
const PCE<Storage>& a);
952 template <
typename Storage>
953 KOKKOS_INLINE_FUNCTION
955 tanh(
const PCE<Storage>& a);
957 template <
typename Storage>
958 KOKKOS_INLINE_FUNCTION
960 acos(
const PCE<Storage>& a);
962 template <
typename Storage>
963 KOKKOS_INLINE_FUNCTION
965 asin(
const PCE<Storage>& a);
967 template <
typename Storage>
968 KOKKOS_INLINE_FUNCTION
970 atan(
const PCE<Storage>& a);
972 template <
typename Storage>
973 KOKKOS_INLINE_FUNCTION
975 atan2(
const PCE<Storage>& a,
const PCE<Storage>& b);
977 template <
typename Storage>
978 KOKKOS_INLINE_FUNCTION
981 const PCE<Storage>& b);
983 template <
typename Storage>
984 KOKKOS_INLINE_FUNCTION
986 atan2(
const PCE<Storage>& a,
989 template <
typename Storage>
990 KOKKOS_INLINE_FUNCTION
992 acosh(
const PCE<Storage>& a);
994 template <
typename Storage>
995 KOKKOS_INLINE_FUNCTION
997 asinh(
const PCE<Storage>& a);
999 template <
typename Storage>
1000 KOKKOS_INLINE_FUNCTION
1002 atanh(
const PCE<Storage>& a);
1004 template <
typename Storage>
1005 KOKKOS_INLINE_FUNCTION
1007 abs(
const PCE<Storage>& a);
1009 template <
typename Storage>
1010 KOKKOS_INLINE_FUNCTION
1012 fabs(
const PCE<Storage>& a);
1014 template <
typename Storage>
1015 KOKKOS_INLINE_FUNCTION
1017 ceil(
const PCE<Storage>& a);
1024 template <
typename Storage>
1025 KOKKOS_INLINE_FUNCTION
1028 const PCE<Storage>& b);
1030 template <
typename Storage>
1031 KOKKOS_INLINE_FUNCTION
1033 max(
const PCE<Storage>& a,
1041 template <
typename Storage>
1042 KOKKOS_INLINE_FUNCTION
1045 const PCE<Storage>& b);
1047 template <
typename Storage>
1048 KOKKOS_INLINE_FUNCTION
1050 min(
const PCE<Storage>& a,
1053 template <
typename Storage>
1054 KOKKOS_INLINE_FUNCTION
1056 operator==(
const PCE<Storage>& a,
const PCE<Storage>& b);
1058 template <
typename Storage>
1059 KOKKOS_INLINE_FUNCTION
1062 const PCE<Storage>& b);
1064 template <
typename Storage>
1065 KOKKOS_INLINE_FUNCTION
1070 template <
typename Storage>
1071 KOKKOS_INLINE_FUNCTION
1073 operator!=(
const PCE<Storage>& a,
const PCE<Storage>& b);
1075 template <
typename Storage>
1076 KOKKOS_INLINE_FUNCTION
1079 const PCE<Storage>& b);
1081 template <
typename Storage>
1082 KOKKOS_INLINE_FUNCTION
1087 template <
typename Storage>
1088 KOKKOS_INLINE_FUNCTION
1090 operator<=(const PCE<Storage>& a,
1091 const PCE<Storage>& b);
1093 template <
typename Storage>
1094 KOKKOS_INLINE_FUNCTION
1097 const PCE<Storage>& b);
1099 template <
typename Storage>
1100 KOKKOS_INLINE_FUNCTION
1102 operator<=(const PCE<Storage>& a,
1105 template <
typename Storage>
1106 KOKKOS_INLINE_FUNCTION
1108 operator>=(
const PCE<Storage>& a,
const PCE<Storage>& b);
1110 template <
typename Storage>
1111 KOKKOS_INLINE_FUNCTION
1114 const PCE<Storage>& b);
1116 template <
typename Storage>
1117 KOKKOS_INLINE_FUNCTION
1122 template <
typename Storage>
1123 KOKKOS_INLINE_FUNCTION
1125 operator<(const PCE<Storage>& a,
const PCE<Storage>& b);
1127 template <
typename Storage>
1128 KOKKOS_INLINE_FUNCTION
1131 const PCE<Storage>& b);
1133 template <
typename Storage>
1134 KOKKOS_INLINE_FUNCTION
1136 operator<(const PCE<Storage>& a,
1139 template <
typename Storage>
1140 KOKKOS_INLINE_FUNCTION
1142 operator>(
const PCE<Storage>& a,
const PCE<Storage>& b);
1144 template <
typename Storage>
1145 KOKKOS_INLINE_FUNCTION
1148 const PCE<Storage>& b);
1150 template <
typename Storage>
1151 KOKKOS_INLINE_FUNCTION
1156 template <
typename Storage>
1158 operator << (std::ostream& os, const PCE<Storage>& a);
1160 template <
typename Storage>
1165 struct PCEPartition {
1169 template<
typename iType0 ,
typename iType1 >
1170 KOKKOS_INLINE_FUNCTION
1171 PCEPartition(
const iType0 & i0 ,
const iType1 & i1 ) :
1172 begin(i0), end(i1) {}
1229 template <
typename S>
1230 void memcpy(PCE<S>* dst,
const PCE<S>* src,
const size_t sz) {
1231 const size_t n = sz /
sizeof(PCE<S>);
1232 for (
size_t i=0; i<n; ++i)
1239 template <
typename T>
struct is_uq_pce {
1240 static const bool value =
false;
1242 template <
typename S>
struct is_uq_pce< UQ::PCE<S> > {
1243 static const bool value =
true;
1245 template <
typename T>
struct is_uq_pce< const T > {
1246 static const bool value = is_uq_pce<T>::value;
1248 template <
typename T>
struct is_uq_pce< T* > {
1249 static const bool value = is_uq_pce<T>::value;
1251 template <
typename T>
struct is_uq_pce< T[] > {
1252 static const bool value = is_uq_pce<T>::value;
1254 template <
typename T,
unsigned N>
struct is_uq_pce< T[N] > {
1255 static const bool value = is_uq_pce<T>::value;
1259 template <
typename Storage>
1260 KOKKOS_INLINE_FUNCTION
1267 const ordinal_type sz = x.size();
1268 if (sz == 1)
return true;
1271 const value_type zero = 0;
1272 for (ordinal_type i=1; i<sz; ++i)
1273 if (x.fastAccessCoeff(i) != zero)
return false;
1283 #include "Kokkos_NumericTraits.hpp"
1287 template <
typename Storage>
1288 struct reduction_identity< Sacado::UQ::PCE<Storage> > {
1291 typedef reduction_identity<scalar> RIS;
1292 KOKKOS_FORCEINLINE_FUNCTION constexpr
static pce
sum() {
1295 KOKKOS_FORCEINLINE_FUNCTION constexpr
static pce prod() {
1296 return pce(RIS::prod());
1298 KOKKOS_FORCEINLINE_FUNCTION constexpr
static pce
max() {
1301 KOKKOS_FORCEINLINE_FUNCTION constexpr
static pce
min() {
1307 template <
typename Storage>
1308 struct promote<Sacado::UQ::PCE<Storage>,false> {
1315 #endif // HAVE_STOKHOS_SACADO
1317 #endif // SACADO_PCE_ORTHOGPOLY_HPP
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)
Stokhos::StandardStorage< int, double > storage_type
const double & const_reference
KOKKOS_INLINE_FUNCTION PCE< Storage > sinh(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > pow(const PCE< Storage > &a, const PCE< Storage > &b)
Kokkos::DefaultExecutionSpace execution_space
KOKKOS_INLINE_FUNCTION void CG_divide(const PCE< Storage > &a, const PCE< Storage > &b, PCE< Storage > &c)
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)
atan2(expr1.val(), expr2.val())
KOKKOS_INLINE_FUNCTION PCE< Storage > min(const typename PCE< Storage >::value_type &a, const PCE< Storage > &b)
Sparse product tensor with replicated entries to provide subsets with a given coordinate.
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)
const double * const_pointer
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)
expr1 expr1 expr1 expr2 expr1 expr1 c expr2 expr1 c fastAccessCoeff(j)-expr2.val(j)
KOKKOS_INLINE_FUNCTION PCE< Storage > atan(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > exp(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION constexpr std::enable_if< is_view_uq_pce< view_type >::value, typename CijkType< view_type >::type >::type cijk(const view_type &view)
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)
std::enable_if< Kokkos::is_view_uq_pce< Kokkos::View< RD, RP...> >::value &&Kokkos::is_view_uq_pce< Kokkos::View< XD, XP...> >::value >::type sum(const Kokkos::View< RD, RP...> &r, const Kokkos::View< XD, XP...> &x)