42#ifndef SACADO_UQ_PCE_HPP
43#define SACADO_UQ_PCE_HPP
47#ifdef HAVE_STOKHOS_SACADO
49#include "Kokkos_Macros.hpp"
51#include "Sacado_Traits.hpp"
52#include "Sacado_mpl_apply.hpp"
60#include <initializer_list>
65 template <
typename Storage>
66 KOKKOS_INLINE_FUNCTION
67 bool is_constant(
const Sacado::UQ::PCE<Storage>& x);
77 template <
typename Storage >
80 template <
class>
friend class PCE;
87 typedef typename storage_type::value_type
value_type;
88 typedef typename storage_type::ordinal_type
ordinal_type;
91 typedef typename storage_type::volatile_pointer volatile_pointer;
93 typedef typename storage_type::const_volatile_pointer const_volatile_pointer;
95 typedef typename storage_type::volatile_reference volatile_reference;
97 typedef typename storage_type::const_volatile_reference const_volatile_reference;
100 typedef typename ScalarType<value_type>::type
scalar_type;
106 typedef Stokhos::CrsProductTensor<value_type, execution_space, Kokkos::MemoryUnmanaged> my_cijk_type;
107 typedef Stokhos::CrsProductTensor<value_type, execution_space> cijk_type;
110 template <
typename S>
119 KOKKOS_DEFAULTED_FUNCTION
126 KOKKOS_INLINE_FUNCTION
127 PCE(
const value_type& x) : cijk_(), s_(1,
x) {}
133 template <
typename M>
134 KOKKOS_INLINE_FUNCTION
135 PCE(
const Stokhos::CrsProductTensor<value_type, execution_space, M>& cijkVal) :
136 cijk_(cijkVal), s_(cijk_.dimension()) {}
142 template <
typename M>
143 KOKKOS_INLINE_FUNCTION
144 PCE(
const Stokhos::CrsProductTensor<value_type, execution_space, M>& cijkVal,
145 ordinal_type sz) : cijk_(cijkVal), s_(sz) {}
152 template <
typename M>
153 KOKKOS_INLINE_FUNCTION
154 PCE(
const Stokhos::CrsProductTensor<value_type, execution_space, M>& cijkVal,
155 ordinal_type sz, pointer v,
bool owned) :
156 cijk_(cijkVal), s_(sz,v,owned) {}
159 KOKKOS_INLINE_FUNCTION
166 KOKKOS_INLINE_FUNCTION
167 PCE(
const volatile PCE& x) :
168 cijk_(const_cast<const my_cijk_type&>(
x.cijk_)),
178 PCE(std::initializer_list<value_type> l) :
179 cijk_(), s_(l.size(), l.begin()) {}
182 KOKKOS_DEFAULTED_FUNCTION
186 KOKKOS_INLINE_FUNCTION
187 void init(const_reference v) { s_.init(v); }
190 KOKKOS_INLINE_FUNCTION
191 void init(const_reference v)
volatile { s_.init(v); }
194 KOKKOS_INLINE_FUNCTION
195 void init(const_pointer v) { s_.init(v); }
198 KOKKOS_INLINE_FUNCTION
199 void init(const_pointer v)
volatile { s_.init(v); }
202 template <
typename S>
203 KOKKOS_INLINE_FUNCTION
204 void init(
const PCE<S>& v) { s_.init(v.coeff()); }
207 template <
typename S>
208 KOKKOS_INLINE_FUNCTION
209 void init(
const PCE<S>& v)
volatile { s_.init(v.coeff()); }
212 KOKKOS_INLINE_FUNCTION
213 void load(pointer v) { s_.load(v); }
216 KOKKOS_INLINE_FUNCTION
217 void load(pointer v)
volatile { s_.load(v); }
220 template <
typename S>
221 KOKKOS_INLINE_FUNCTION
222 void load(PCE<S>& v) { s_.load(v.coeff()); }
225 template <
typename S>
226 KOKKOS_INLINE_FUNCTION
227 void load(PCE<S>& v)
volatile { s_.load(v.coeff()); }
233 template <
typename M>
234 KOKKOS_INLINE_FUNCTION
235 void reset(
const Stokhos::CrsProductTensor<value_type, execution_space, M>& cijkVal) {
237 s_.resize(cijk_.dimension());
244 template <
typename M>
245 KOKKOS_INLINE_FUNCTION
246 void reset(
const Stokhos::CrsProductTensor<value_type, execution_space, M>& cijkVal)
volatile {
248 s_.resize(cijk_.dimension());
255 template <
typename M>
256 KOKKOS_INLINE_FUNCTION
257 void reset(
const Stokhos::CrsProductTensor<value_type, execution_space, M>& cijkVal, ordinal_type sz) {
266 template <
typename M>
267 KOKKOS_INLINE_FUNCTION
268 void reset(
const Stokhos::CrsProductTensor<value_type, execution_space, M>& cijkVal, ordinal_type sz)
volatile {
283 KOKKOS_INLINE_FUNCTION
284 void copyForWrite() { }
288 KOKKOS_INLINE_FUNCTION
289 value_type evaluate(const Teuchos::Array<value_type>& point) const;
292 KOKKOS_INLINE_FUNCTION
293 value_type evaluate(const Teuchos::Array<value_type>& point,
294 const Teuchos::Array<value_type>& bvals) const;
298 KOKKOS_INLINE_FUNCTION
302 KOKKOS_INLINE_FUNCTION
306 KOKKOS_INLINE_FUNCTION
308 return std::sqrt(this->two_norm_squared());
312 KOKKOS_INLINE_FUNCTION
316 KOKKOS_INLINE_FUNCTION
320 KOKKOS_INLINE_FUNCTION
321 bool isEqualTo(
const PCE& x)
const;
324 KOKKOS_INLINE_FUNCTION
325 bool isEqualTo(
const PCE& x)
const volatile;
333 KOKKOS_INLINE_FUNCTION
334 PCE<Storage>& operator=(
const value_type
val);
337 KOKKOS_INLINE_FUNCTION
338 PCE<Storage>& operator=(
const value_type
val)
volatile;
341 KOKKOS_INLINE_FUNCTION
342 PCE<Storage>& operator=(
const PCE<Storage>& x);
345 KOKKOS_INLINE_FUNCTION
346 PCE<Storage>& operator=(
const volatile PCE<Storage>& x);
349 KOKKOS_INLINE_FUNCTION
350 PCE<Storage>& operator=(
const PCE<Storage>& x)
volatile;
353 KOKKOS_INLINE_FUNCTION
354 PCE<Storage>& operator=(
const volatile PCE<Storage>& x)
volatile;
357 template <
typename S>
358 KOKKOS_INLINE_FUNCTION
359 PCE<Storage>& operator=(
const PCE<S>& x) {
363 for (ordinal_type i=0; i<sz_new; i++)
371 for (ordinal_type i=sz_new; i<sz; i++)
381 PCE& operator=(std::initializer_list<value_type> l) {
383 if (lsz != s_.size())
385 s_.init(l.begin(), lsz);
394 operator=(std::initializer_list<value_type> l)
volatile {
396 if (lsz != s_.size())
398 s_.init(l.begin(), lsz);
399 return const_cast<PCE&
>(*this);
411 KOKKOS_INLINE_FUNCTION
412 Teuchos::RCP<const basis_type> basis() const { return s_.basis(); }
416 KOKKOS_INLINE_FUNCTION
417 my_cijk_type
cijk()
const {
return cijk_; }
420 KOKKOS_INLINE_FUNCTION
421 my_cijk_type
cijk()
const volatile {
422 return const_cast<const my_cijk_type&
>(cijk_);
433 KOKKOS_INLINE_FUNCTION
434 const_volatile_reference
val()
const volatile {
return s_[0]; }
437 KOKKOS_INLINE_FUNCTION
438 const_reference
val()
const {
return s_[0]; }
441 KOKKOS_INLINE_FUNCTION
442 volatile_reference
val()
volatile {
return s_[0]; }
445 KOKKOS_INLINE_FUNCTION
446 reference
val() {
return s_[0]; }
456 KOKKOS_INLINE_FUNCTION
460 KOKKOS_INLINE_FUNCTION
464 KOKKOS_INLINE_FUNCTION
465 bool hasFastAccess(ordinal_type sz)
const {
return s_.size()>=sz;}
468 KOKKOS_INLINE_FUNCTION
469 bool hasFastAccess(ordinal_type sz)
const volatile {
470 return s_.size()>=sz;
474 KOKKOS_INLINE_FUNCTION
475 const_pointer coeff()
const {
return s_.coeff();}
478 KOKKOS_INLINE_FUNCTION
479 const_volatile_pointer coeff()
const volatile {
return s_.coeff();}
482 KOKKOS_INLINE_FUNCTION
483 volatile_pointer coeff()
volatile {
return s_.coeff();}
486 KOKKOS_INLINE_FUNCTION
487 pointer coeff() {
return s_.coeff();}
490 KOKKOS_INLINE_FUNCTION
495 KOKKOS_INLINE_FUNCTION
496 value_type coeff(ordinal_type i)
const volatile {
500 KOKKOS_INLINE_FUNCTION
501 const_volatile_reference
fastAccessCoeff(ordinal_type i)
const volatile {
505 KOKKOS_INLINE_FUNCTION
510 KOKKOS_INLINE_FUNCTION
515 KOKKOS_INLINE_FUNCTION
521 KOKKOS_INLINE_FUNCTION
522 reference term(ordinal_type dimension, ordinal_type order) {
523 return s_.term(dimension, order); }
526 KOKKOS_INLINE_FUNCTION
527 const_reference term(ordinal_type dimension, ordinal_type order) const {
528 return s_.term(dimension, order); }
531 KOKKOS_INLINE_FUNCTION
532 Teuchos::Array<ordinal_type> order(ordinal_type term) const {
533 return s_.order(term); }
537 KOKKOS_INLINE_FUNCTION
538 pointer begin() {
return s_.coeff(); }
541 KOKKOS_INLINE_FUNCTION
542 const_pointer begin()
const {
return s_.coeff(); }
545 KOKKOS_INLINE_FUNCTION
546 volatile_pointer begin()
volatile {
return s_.coeff(); }
549 KOKKOS_INLINE_FUNCTION
550 const_volatile_pointer begin()
const volatile {
return s_.coeff(); }
553 KOKKOS_INLINE_FUNCTION
554 const_pointer cbegin()
const {
return s_.coeff(); }
557 KOKKOS_INLINE_FUNCTION
558 const_volatile_pointer cbegin()
const volatile {
return s_.coeff(); }
561 KOKKOS_INLINE_FUNCTION
562 pointer end() {
return s_.coeff() + s_.size(); }
565 KOKKOS_INLINE_FUNCTION
566 const_pointer end()
const {
return s_.coeff() + s_.size(); }
569 KOKKOS_INLINE_FUNCTION
570 volatile_pointer end()
volatile {
return s_.coeff() + s_.size(); }
573 KOKKOS_INLINE_FUNCTION
574 const_volatile_pointer end()
const volatile {
return s_.coeff() + s_.size(); }
577 KOKKOS_INLINE_FUNCTION
578 const_pointer cend()
const {
return s_.coeff()+ s_.size(); }
581 KOKKOS_INLINE_FUNCTION
582 const_volatile_pointer cend()
const volatile {
return s_.coeff()+ s_.size(); }
592 KOKKOS_INLINE_FUNCTION
596 KOKKOS_INLINE_FUNCTION
597 PCE
operator + ()
const volatile {
return *
this; }
600 KOKKOS_INLINE_FUNCTION
604 KOKKOS_INLINE_FUNCTION
608 KOKKOS_INLINE_FUNCTION
609 PCE& operator += (
const value_type x) {
615 KOKKOS_INLINE_FUNCTION
616 PCE& operator += (
const value_type x)
volatile {
618 return const_cast<PCE&
>(*this);
622 KOKKOS_INLINE_FUNCTION
623 PCE& operator -= (
const value_type x) {
629 KOKKOS_INLINE_FUNCTION
630 PCE& operator -= (
const value_type x)
volatile {
632 return const_cast<PCE&
>(*this);
636 KOKKOS_INLINE_FUNCTION
637 PCE& operator *= (
const value_type x);
640 KOKKOS_INLINE_FUNCTION
641 PCE& operator *= (
const value_type x)
volatile;
644 KOKKOS_INLINE_FUNCTION
645 PCE& operator /= (
const value_type x);
648 KOKKOS_INLINE_FUNCTION
649 PCE& operator /= (
const value_type x)
volatile;
652 KOKKOS_INLINE_FUNCTION
653 PCE& operator += (
const PCE& x);
656 KOKKOS_INLINE_FUNCTION
657 PCE& operator += (
const volatile PCE& x) {
658 return *
this +=
const_cast<const PCE&
>(
x);
662 KOKKOS_INLINE_FUNCTION
663 PCE& operator += (
const PCE& x)
volatile {
664 return const_cast<PCE&
>(*this) +=
x;
668 KOKKOS_INLINE_FUNCTION
669 PCE& operator += (
const volatile PCE& x)
volatile {
670 return const_cast<PCE&
>(*this) +=
const_cast<const PCE&
>(
x);
674 KOKKOS_INLINE_FUNCTION
675 PCE& operator -= (
const PCE& x);
678 KOKKOS_INLINE_FUNCTION
679 PCE& operator -= (
const volatile PCE& x) {
680 return *
this -=
const_cast<const PCE&
>(
x);
684 KOKKOS_INLINE_FUNCTION
685 PCE& operator -= (
const PCE& x)
volatile {
686 return const_cast<PCE&
>(*this) -=
x;
690 KOKKOS_INLINE_FUNCTION
691 PCE& operator -= (
const volatile PCE& x)
volatile {
692 return const_cast<PCE&
>(*this) -=
const_cast<const PCE&
>(
x);
696 KOKKOS_INLINE_FUNCTION
697 PCE& operator *= (
const PCE& x);
700 KOKKOS_INLINE_FUNCTION
701 PCE& operator *= (
const volatile PCE& x) {
702 return *
this *=
const_cast<const PCE&
>(
x);
706 KOKKOS_INLINE_FUNCTION
707 PCE& operator *= (
const PCE& x)
volatile {
708 return const_cast<PCE&
>(*this) *=
x;
712 KOKKOS_INLINE_FUNCTION
713 PCE& operator *= (
const volatile PCE& x)
volatile {
714 return const_cast<PCE&
>(*this) *=
const_cast<const PCE&
>(
x);
718 KOKKOS_INLINE_FUNCTION
719 PCE& operator /= (
const PCE& x);
722 KOKKOS_INLINE_FUNCTION
723 PCE& operator /= (
const volatile PCE& x) {
724 return *
this /=
const_cast<const PCE&
>(
x);
728 KOKKOS_INLINE_FUNCTION
729 PCE& operator /= (
const PCE& x)
volatile {
730 return const_cast<PCE&
>(*this) /=
x;
734 KOKKOS_INLINE_FUNCTION
735 PCE& operator /= (
const volatile PCE& x)
volatile {
736 return const_cast<PCE&
>(*this) /=
const_cast<const PCE&
>(
x);
740 KOKKOS_INLINE_FUNCTION
747 KOKKOS_INLINE_FUNCTION
748 volatile PCE& operator++()
volatile {
754 KOKKOS_INLINE_FUNCTION
755 PCE operator++(
int) {
762 KOKKOS_INLINE_FUNCTION
763 PCE operator++(
int)
volatile {
770 KOKKOS_INLINE_FUNCTION
777 KOKKOS_INLINE_FUNCTION
778 volatile PCE& operator--()
volatile {
784 KOKKOS_INLINE_FUNCTION
785 PCE operator--(
int) {
792 KOKKOS_INLINE_FUNCTION
793 PCE operator--(
int)
volatile {
805 typedef typename my_cijk_type::size_type cijk_size_type;
821 template <
typename Storage>
822 KOKKOS_INLINE_FUNCTION
826 template <
typename Storage>
827 KOKKOS_INLINE_FUNCTION
831 template <
typename Storage>
832 KOKKOS_INLINE_FUNCTION
838 template <
typename Storage>
839 KOKKOS_INLINE_FUNCTION
845 template <
typename Storage>
846 KOKKOS_INLINE_FUNCTION
853 template <
typename Storage>
854 KOKKOS_INLINE_FUNCTION
859 template <
typename Storage>
860 KOKKOS_INLINE_FUNCTION
865 template <
typename Storage>
866 KOKKOS_INLINE_FUNCTION
871 KOKKOS_INLINE_FUNCTION
875 template <
typename Storage>
876 KOKKOS_INLINE_FUNCTION
881 template <
typename Storage>
882 KOKKOS_INLINE_FUNCTION
886 template <
typename Storage>
887 KOKKOS_INLINE_FUNCTION
893 KOKKOS_INLINE_FUNCTION
897 template <
typename Storage>
898 KOKKOS_INLINE_FUNCTION
902 template <
typename Storage>
903 KOKKOS_INLINE_FUNCTION
908 template <
typename Storage>
909 KOKKOS_INLINE_FUNCTION
914 template <
typename Storage>
915 KOKKOS_INLINE_FUNCTION
919 template <
typename Storage>
920 KOKKOS_INLINE_FUNCTION
924 template <
typename Storage>
925 KOKKOS_INLINE_FUNCTION
929 template <
typename Storage>
930 KOKKOS_INLINE_FUNCTION
934 template <
typename Storage>
935 KOKKOS_INLINE_FUNCTION
939 template <
typename Storage>
940 KOKKOS_INLINE_FUNCTION
944 template <
typename Storage>
945 KOKKOS_INLINE_FUNCTION
949 template <
typename Storage>
950 KOKKOS_INLINE_FUNCTION
955 KOKKOS_INLINE_FUNCTION
959 template <
typename Storage>
960 KOKKOS_INLINE_FUNCTION
964 template <
typename Storage>
965 KOKKOS_INLINE_FUNCTION
969 template <
typename Storage>
970 KOKKOS_INLINE_FUNCTION
974 template <
typename Storage>
975 KOKKOS_INLINE_FUNCTION
979 template <
typename Storage>
980 KOKKOS_INLINE_FUNCTION
984 template <
typename Storage>
985 KOKKOS_INLINE_FUNCTION
989 template <
typename Storage>
990 KOKKOS_INLINE_FUNCTION
994 template <
typename Storage>
995 KOKKOS_INLINE_FUNCTION
999 template <
typename Storage>
1000 KOKKOS_INLINE_FUNCTION
1004 template <
typename Storage>
1005 KOKKOS_INLINE_FUNCTION
1009 template <
typename Storage>
1010 KOKKOS_INLINE_FUNCTION
1015 template <
typename Storage>
1016 KOKKOS_INLINE_FUNCTION
1021 template <
typename Storage>
1022 KOKKOS_INLINE_FUNCTION
1026 template <
typename Storage>
1027 KOKKOS_INLINE_FUNCTION
1031 template <
typename Storage>
1032 KOKKOS_INLINE_FUNCTION
1036 template <
typename Storage>
1037 KOKKOS_INLINE_FUNCTION
1041 template <
typename Storage>
1042 KOKKOS_INLINE_FUNCTION
1046 template <
typename Storage>
1047 KOKKOS_INLINE_FUNCTION
1056 template <
typename Storage>
1057 KOKKOS_INLINE_FUNCTION
1062 template <
typename Storage>
1063 KOKKOS_INLINE_FUNCTION
1073 template <
typename Storage>
1074 KOKKOS_INLINE_FUNCTION
1079 template <
typename Storage>
1080 KOKKOS_INLINE_FUNCTION
1085 template <
typename Storage>
1086 KOKKOS_INLINE_FUNCTION
1090 template <
typename Storage>
1091 KOKKOS_INLINE_FUNCTION
1096 template <
typename Storage>
1097 KOKKOS_INLINE_FUNCTION
1102 template <
typename Storage>
1103 KOKKOS_INLINE_FUNCTION
1107 template <
typename Storage>
1108 KOKKOS_INLINE_FUNCTION
1113 template <
typename Storage>
1114 KOKKOS_INLINE_FUNCTION
1119 template <
typename Storage>
1120 KOKKOS_INLINE_FUNCTION
1125 template <
typename Storage>
1126 KOKKOS_INLINE_FUNCTION
1131 template <
typename Storage>
1132 KOKKOS_INLINE_FUNCTION
1137 template <
typename Storage>
1138 KOKKOS_INLINE_FUNCTION
1142 template <
typename Storage>
1143 KOKKOS_INLINE_FUNCTION
1148 template <
typename Storage>
1149 KOKKOS_INLINE_FUNCTION
1154 template <
typename Storage>
1155 KOKKOS_INLINE_FUNCTION
1159 template <
typename Storage>
1160 KOKKOS_INLINE_FUNCTION
1165 template <
typename Storage>
1166 KOKKOS_INLINE_FUNCTION
1171 template <
typename Storage>
1172 KOKKOS_INLINE_FUNCTION
1176 template <
typename Storage>
1177 KOKKOS_INLINE_FUNCTION
1182 template <
typename Storage>
1183 KOKKOS_INLINE_FUNCTION
1188 template <
typename Storage>
1192 template <
typename Storage>
1197 struct PCEPartition {
1201 template<
typename iType0 ,
typename iType1 >
1202 KOKKOS_INLINE_FUNCTION
1203 PCEPartition(
const iType0 & i0 ,
const iType1 & i1 ) :
1204 begin(i0), end(i1) {}
1261 template <
typename S>
1262 void memcpy(
PCE<S>* dst,
const PCE<S>* src,
const size_t sz) {
1263 const size_t n = sz /
sizeof(
PCE<S>);
1264 for (
size_t i=0; i<n; ++i)
1271 template <
typename T>
struct is_uq_pce {
1272 static const bool value =
false;
1274 template <
typename S>
struct is_uq_pce<
UQ::
PCE<S> > {
1275 static const bool value =
true;
1277 template <
typename T>
struct is_uq_pce< const T > {
1278 static const bool value = is_uq_pce<T>::value;
1280 template <
typename T>
struct is_uq_pce< T* > {
1281 static const bool value = is_uq_pce<T>::value;
1283 template <
typename T>
struct is_uq_pce< T[] > {
1284 static const bool value = is_uq_pce<T>::value;
1286 template <
typename T,
unsigned N>
struct is_uq_pce< T[N] > {
1287 static const bool value = is_uq_pce<T>::value;
1291 template <
typename Storage>
1292 KOKKOS_INLINE_FUNCTION
1293 bool is_constant(
const Sacado::UQ::PCE<Storage>& x)
1296 typedef typename Storage::value_type
value_type;
1300 if (sz == 1)
return true;
1304 for (ordinal_type i=1; i<sz; ++i)
1305 if (
x.fastAccessCoeff(i) != zero)
return false;
1315#include "Kokkos_NumericTraits.hpp"
1319template <
typename Storage>
1320struct reduction_identity< Sacado::UQ::PCE<Storage> > {
1321 typedef Sacado::UQ::PCE<Storage> pce;
1322 typedef typename Storage::value_type scalar;
1323 typedef reduction_identity<scalar> RIS;
1324 KOKKOS_FORCEINLINE_FUNCTION
constexpr static pce
sum() {
1325 return pce(RIS::sum());
1327 KOKKOS_FORCEINLINE_FUNCTION
constexpr static pce prod() {
1328 return pce(RIS::prod());
1330 KOKKOS_FORCEINLINE_FUNCTION
constexpr static pce
max() {
1331 return pce(RIS::max());
1333 KOKKOS_FORCEINLINE_FUNCTION
constexpr static pce
min() {
1334 return pce(RIS::min());
1339 template <
typename Storage>
1340 struct promote<Sacado::UQ::PCE<Storage>,false> {
1341 using type =
typename Sacado::UQ::PCE<Storage>;
expr1 expr1 expr1 expr2 expr1 expr1 c expr2 expr1 c fastAccessCoeff(j) - expr2.val(j)
atan2(expr1.val(), expr2.val())
Stokhos::StandardStorage< int, double > storage_type
Kokkos::DefaultHostExecutionSpace execution_space
SparseArrayIterator< index_iterator, value_iterator >::value_reference value(const SparseArrayIterator< index_iterator, value_iterator > &it)
const double * const_pointer
const double & const_reference
Stokhos::StandardStorage< int, double > Storage
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)
KOKKOS_INLINE_FUNCTION constexpr std::enable_if< is_view_uq_pce< view_type >::value, typenameCijkType< view_type >::type >::type cijk(const view_type &view)
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 > tan(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > tanh(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > cos(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION bool operator<(const PCE< Storage > &a, const PCE< Storage > &b)
KOKKOS_INLINE_FUNCTION PCE< Storage > sin(const PCE< Storage > &a)
std::ostream & operator<<(std::ostream &os, const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > atan(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > cosh(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION bool operator>(const PCE< Storage > &a, const PCE< Storage > &b)
void CG_divide(const PCE< Storage > &a, const PCE< Storage > &b, PCE< Storage > &c)
KOKKOS_INLINE_FUNCTION PCE< Storage > abs(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > sinh(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 > acos(const PCE< Storage > &a)
std::istream & operator>>(std::istream &is, PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION bool operator!=(const PCE< Storage > &a, const PCE< Storage > &b)
KOKKOS_INLINE_FUNCTION PCE< Storage > min(const typename PCE< Storage >::value_type &a, const PCE< Storage > &b)
KOKKOS_INLINE_FUNCTION PCE< Storage > pow(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 > sqrt(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > cbrt(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > fabs(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 bool operator>=(const PCE< Storage > &a, const PCE< Storage > &b)
KOKKOS_INLINE_FUNCTION PCE< Storage > log(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION bool operator<=(const PCE< Storage > &a, const PCE< Storage > &b)
KOKKOS_INLINE_FUNCTION PCE< Storage > ceil(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > exp(const PCE< Storage > &a)
KOKKOS_INLINE_FUNCTION PCE< Storage > operator-(const PCE< Storage > &a, const PCE< Storage > &b)
KOKKOS_INLINE_FUNCTION bool is_constant(const T &x)
const IndexType const IndexType const IndexType const IndexType const ValueType const ValueType * x