42#ifndef KOKKOS_INNER_PRODUCT_SPACE_TRAITS_UQ_PCE_HPP
43#define KOKKOS_INNER_PRODUCT_SPACE_TRAITS_UQ_PCE_HPP
46#include "Kokkos_InnerProductSpaceTraits.hpp"
58class InnerProductSpaceTraits<
Sacado::UQ::PCE<S> > {
64 typedef InnerProductSpaceTraits<base_value_type>
BIT;
67 typedef typename ArithTraits<val_type>::mag_type
mag_type;
70 static KOKKOS_FORCEINLINE_FUNCTION
76 const mag_type n = BIT::norm( x.fastAccessCoeff(i) );
79 return std::sqrt(nrm);
82 static KOKKOS_FORCEINLINE_FUNCTION
89 if (x.hasFastAccess(sz) && y.hasFastAccess(sz))
91 r += BIT::dot( x.fastAccessCoeff(i), y.fastAccessCoeff(i) );
94 r += BIT::dot( x.coeff(i), y.coeff(i) );
102class InnerProductSpaceTraits< const
Sacado::UQ::PCE<S> > {
108 typedef InnerProductSpaceTraits<base_value_type>
BIT;
111 typedef typename ArithTraits<val_type>::mag_type
mag_type;
114 static KOKKOS_FORCEINLINE_FUNCTION
120 const mag_type n = BIT::norm( x.fastAccessCoeff(i) );
123 return std::sqrt(nrm);
126 static KOKKOS_FORCEINLINE_FUNCTION
133 if (x.hasFastAccess(sz) && y.hasFastAccess(sz))
135 r += BIT::dot( x.fastAccessCoeff(i), y.fastAccessCoeff(i) );
138 r += BIT::dot( x.coeff(i), y.coeff(i) );
val_type::ordinal_type ordinal_type
val_type::value_type base_value_type
InnerProductSpaceTraits< base_value_type > BIT
Sacado::UQ::PCE< S > val_type
ArithTraits< val_type >::mag_type mag_type
static KOKKOS_FORCEINLINE_FUNCTION mag_type norm(const val_type &x)
BIT::dot_type base_dot_type
static KOKKOS_FORCEINLINE_FUNCTION dot_type dot(const val_type &x, const val_type &y)
val_type::ordinal_type ordinal_type
BIT::dot_type base_dot_type
Sacado::UQ::PCE< S > val_type
val_type::value_type base_value_type
static KOKKOS_FORCEINLINE_FUNCTION mag_type norm(const val_type &x)
ArithTraits< val_type >::mag_type mag_type
InnerProductSpaceTraits< base_value_type > BIT
static KOKKOS_FORCEINLINE_FUNCTION dot_type dot(const val_type &x, const val_type &y)