3#include "../terra/kokkos/kokkos_wrapper.hpp"
7template <
typename T,
int N >
12 KOKKOS_INLINE_FUNCTION
15 KOKKOS_INLINE_FUNCTION
18 template <
int SliceSize >
22 for (
int i = 0; i < SliceSize; ++i )
24 result( i ) =
data[i + start];
29 KOKKOS_INLINE_FUNCTION
32 for (
int i = 0; i < N; ++i )
38 KOKKOS_INLINE_FUNCTION
42 for (
int i = 0; i < N; ++i )
43 sum +=
data[i] * other( i );
47 KOKKOS_INLINE_FUNCTION
50 static_assert( N == 3 );
52 data[1] * other( 2 ) -
data[2] * other( 1 ),
53 data[2] * other( 0 ) -
data[0] * other( 2 ),
54 data[0] * other( 1 ) -
data[1] * other( 0 ) };
57 KOKKOS_INLINE_FUNCTION
61 for (
int i = 0; i < N; ++i )
62 out( i ) =
data[i] + rhs( i );
66 KOKKOS_INLINE_FUNCTION
70 for (
int i = 0; i < N; ++i )
71 out( i ) =
data[i] - rhs( i );
75 KOKKOS_INLINE_FUNCTION
79 for (
int i = 0; i < N; ++i )
83 return Kokkos::sqrt( sum );
87 KOKKOS_INLINE_FUNCTION
93 for (
int i = 0; i < N; ++i )
101 KOKKOS_INLINE_FUNCTION
109 KOKKOS_INLINE_FUNCTION
113 for (
int i = 0; i < N; ++i )
114 res( i ) = 1.0 /
data[i];
119template <
typename T,
int N >
123 for (
int i = 0; i < N; ++i )
124 result( i ) = v( i ) * scalar;
128template <
typename T,
int N >
132 for (
int i = 0; i < N; ++i )
133 result( i ) = v( i ) * scalar;
137template <
typename T,
int N >
140 for (
int i = 0; i < N; ++i )
142 os << v( i ) <<
'\n';
std::ostream & operator<<(std::ostream &os, const Mat< T, Rows, Cols > &A)
Definition mat.hpp:392
constexpr Vec< T, N > operator*(const Vec< T, N > &v, const T scalar) noexcept
Definition vec.hpp:120
constexpr Vec operator-(const Vec &rhs) const
Definition vec.hpp:67
Vec normalized() const
Return a normalized copy of the vector.
Definition vec.hpp:102
constexpr const T & operator()(int i) const
Definition vec.hpp:16
constexpr Vec< T, SliceSize > slice(const int start)
Definition vec.hpp:19
constexpr T & operator()(int i)
Definition vec.hpp:13
constexpr Vec cross(const Vec &other) const
Definition vec.hpp:48
T dot(const Vec &other) const
Definition vec.hpp:39
T norm() const
Definition vec.hpp:76
Vec inverted_elementwise() const
Definition vec.hpp:110
void normalize()
Normalize the vector to unit length in-place.
Definition vec.hpp:88
void fill(const T value)
Definition vec.hpp:30
T data[N]
Definition vec.hpp:10
constexpr Vec operator+(const Vec &rhs) const
Definition vec.hpp:58