42 #ifndef KOKKOS_ARITHTRAITS_UQ_PCE_HPP
43 #define KOKKOS_ARITHTRAITS_UQ_PCE_HPP
46 #include "Kokkos_ArithTraits.hpp"
56 class ArithTraits<
Sacado::UQ::PCE<S> > {
62 typedef ArithTraits<base_value_type>
BAT;
67 static const bool is_specialized =
true;
68 static const bool is_signed = BAT::is_signed;
69 static const bool is_integer = BAT::is_integer;
70 static const bool is_exact = BAT::is_exact;
71 static const bool is_complex = BAT::is_complex;
76 res = res || BAT::isInf(
x.fastAccessCoeff(i));
82 res = res || BAT::isInf(
x.fastAccessCoeff(i));
109 y.fastAccessCoeff(i) = BAT::real(
x.fastAccessCoeff(i));
116 y.fastAccessCoeff(i) = BAT::imag(
x.fastAccessCoeff(i));
123 y.fastAccessCoeff(i) = BAT::conj(
x.fastAccessCoeff(i));
143 return BAT::epsilon();
150 typedef typename Sacado::mpl::apply<S,ordinal_type,base_half_precision>::type
half_storage;
151 typedef typename Sacado::mpl::apply<S,ordinal_type,base_double_precision>::type
double_storage;
154 static const bool isComplex = is_complex;
155 static const bool isOrdinal = is_integer;
156 static const bool isComparable = BAT::isComparable;
157 static const bool hasMachineParameters = BAT::hasMachineParameters;
159 return isNan (
x) || isInf (
x);
168 return Sacado::StringName<val_type>::eval();
179 static KOKKOS_FORCEINLINE_FUNCTION
int base () {
185 static KOKKOS_FORCEINLINE_FUNCTION
int t () {
191 static KOKKOS_FORCEINLINE_FUNCTION
int emin () {
197 static KOKKOS_FORCEINLINE_FUNCTION
int emax () {