7#ifndef KERNEL_LAFEM_ARCH_COMPONENT_PRODUCT_HPP 
    8#define KERNEL_LAFEM_ARCH_COMPONENT_PRODUCT_HPP 1 
   12#include <kernel/backend.hpp> 
   13#include <kernel/util/half.hpp> 
   23        template <
typename DT_>
 
   24        static void value(DT_ * r, 
const DT_ * 
const x, 
const DT_ * 
const y, 
const Index size)
 
   26          value_generic(r, x, y, size);
 
   29#ifdef FEAT_HAVE_HALFMATH 
   32          BACKEND_SKELETON_VOID(value_cuda, value_generic, value_generic, r, x, y, size)
 
   36        static void value(
float * r, 
const float * 
const x, 
const float * 
const y, 
const Index size)
 
   38          BACKEND_SKELETON_VOID(value_cuda, value_mkl, value_generic, r, x, y, size)
 
   41        static void value(
double * r, 
const double * 
const x, 
const double * 
const y, 
const Index size)
 
   43          BACKEND_SKELETON_VOID(value_cuda, value_mkl, value_generic, r, x, y, size)
 
   46        template <
typename DT_>
 
   47        static void value_generic(DT_ * r, 
const DT_ * 
const x, 
const DT_ * 
const y, 
const Index size);
 
   49        static void value_mkl(
float * r, 
const float * 
const x, 
const float * 
const y, 
const Index size);
 
   50        static void value_mkl(
double * r, 
const double * 
const x, 
const double * 
const y, 
const Index size);
 
   52        template <
typename DT_>
 
   53        static void value_cuda(DT_ * r, 
const DT_ * 
const x, 
const DT_ * 
const y, 
const Index size);
 
   57      extern template void ComponentProduct::value_generic(
float *, 
const float * 
const, 
const float * 
const, 
const Index);
 
   58      extern template void ComponentProduct::value_generic(
double *, 
const double * 
const, 
const double * 
const, 
const Index);
 
   65#include <kernel/lafem/arch/component_product_generic.hpp> 
__half Half
Half data type.
@ value
specifies whether the space should supply basis function values
std::uint64_t Index
Index data type.