5#include <cuda/std/array>
6template <
typename T, std::
size_t D>
10#if !defined(__device__)
11#define __GARFIELD_DEFINED_DEVICE__
15template <
typename T, std::
size_t D>
21template <
typename type, std::
size_t Dimension>
24 template <
typename... Args>
26 :
GarfieldArray<type, Dimension>({std::forward<Args>(args)...}) {}
30 for (std::size_t j = 0; j != ret.size(); ++j) {
37 for (std::size_t j = 0; j != ret.size(); ++j) {
42 template <
typename T, std::
size_t D>
44 static_assert(Dimension == D,
"The vectors don't have the same dimension!");
46 for (std::size_t j = 0; j != ret.size(); ++j) {
51 template <
typename T, std::
size_t D>
53 static_assert(Dimension == D,
"The vectors don't have the same dimension!");
55 for (std::size_t j = 0; j != ret.size(); ++j) {
62template <
typename type>
66 template <
typename... xs>
72template <
typename type>
76 template <
typename... xs>
84template <
typename type>
88 template <
typename... xs>
103#if defined(__GARFIELD_DEFINED_DEVICE__)
106#undef __GARFIELD_DEFINED_DEVICE__
std::array< T, D > GarfieldArray
__host__ __device__ type & x() noexcept
__host__ __device__ Vec1Impl(xs... values)
__host__ __device__ type x() const noexcept
__host__ __device__ type x() const noexcept
__host__ __device__ Vec2Impl(xs... values)
__host__ __device__ type & x() noexcept
__host__ __device__ type & y() noexcept
__host__ __device__ type y() const noexcept
__host__ __device__ type & z() noexcept
__host__ __device__ type z() const noexcept
__host__ __device__ type & x() noexcept
__host__ __device__ type & y() noexcept
__host__ __device__ type x() const noexcept
__host__ __device__ type y() const noexcept
__host__ __device__ Vec3Impl(xs... values)
__host__ __device__ Vector operator+(const Vector< T, D > &vec)
__host__ __device__ Vector operator/(const double &i)
__host__ __device__ Vector operator-(const Vector< T, D > &vec)
__host__ __device__ Vector operator*(const double &i)
__host__ __device__ Vector()
__host__ __device__ Vector(Args &&... args)