42 #ifndef KOKKOS_ARITHTRAITS_MP_VECTOR_HPP
43 #define KOKKOS_ARITHTRAITS_MP_VECTOR_HPP
46 #include "Kokkos_ArithTraits.hpp"
56 class ArithTraits<
Sacado::MP::Vector<S> > {
62 typedef ArithTraits<base_value_type>
BAT;
64 #ifdef HAVE_STOKHOS_ENSEMBLE_REDUCT
65 typedef typename BAT::mag_type
mag_type;
70 static const bool is_specialized =
true;
71 static const bool is_signed = BAT::is_signed;
72 static const bool is_integer = BAT::is_integer;
73 static const bool is_exact = BAT::is_exact;
74 static const bool is_complex = BAT::is_complex;
79 res = res || BAT::isInf(
x.fastAccessCoeff(i));
85 res = res || BAT::isInf(
x.fastAccessCoeff(i));
90 #ifdef HAVE_STOKHOS_ENSEMBLE_REDUCT
97 n.fastAccessCoeff(i) =
BAT::abs(
x.fastAccessCoeff(i) );
117 y.fastAccessCoeff(i) = BAT::real(
x.fastAccessCoeff(i));
124 y.fastAccessCoeff(i) = BAT::imag(
x.fastAccessCoeff(i));
131 y.fastAccessCoeff(i) = BAT::conj(
x.fastAccessCoeff(i));
151 return BAT::epsilon();
158 typedef typename Sacado::mpl::apply<S,ordinal_type,base_half_precision>::type
half_storage;
159 typedef typename Sacado::mpl::apply<S,ordinal_type,base_double_precision>::type
double_storage;
162 static const bool isComplex = is_complex;
163 static const bool isOrdinal = is_integer;
164 static const bool isComparable = BAT::isComparable;
165 static const bool hasMachineParameters = BAT::hasMachineParameters;
167 return isNan (
x) || isInf (
x);
176 return Sacado::StringName<val_type>::eval();
187 static KOKKOS_FORCEINLINE_FUNCTION
int base () {
193 static KOKKOS_FORCEINLINE_FUNCTION
int t () {
199 static KOKKOS_FORCEINLINE_FUNCTION
int emin () {
205 static KOKKOS_FORCEINLINE_FUNCTION
int emax () {