VecCore 0.8.1
C++ Library for Portable SIMD Vectorization
Loading...
Searching...
No Matches
VecMath.h File Reference
#include <cmath>
Include dependency graph for VecMath.h:

Go to the source code of this file.

Namespaces

namespace  vecCore
 
namespace  vecCore::math
 

Macros

#define VECCORE_MATH_UNARY_FUNCTION(F, f)
 
#define VECCORE_MATH_BINARY_FUNCTION(F, f)
 

Functions

template<class T >
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICEvecCore::math::Min (const T &a, const T &b)
 
template<class T >
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICEvecCore::math::Max (const T &a, const T &b)
 
template<typename T >
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICEvecCore::math::Min (const T &a, const T &b, const T &c)
 
template<typename T >
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICEvecCore::math::Max (const T &a, const T &b, const T &c)
 
template<typename T , template< typename > class Wrapper>
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICE Wrapper< T > vecCore::math::Min (const Wrapper< T > &a, const Wrapper< T > &b)
 
template<typename T , template< typename > class Wrapper>
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICE Wrapper< T > vecCore::math::Max (const Wrapper< T > &a, const Wrapper< T > &b)
 
template<typename T >
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICEvecCore::math::Sign (const T &x)
 
template<typename T >
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICE void vecCore::math::SinCos (const T &x, T *s, T *c)
 
template<>
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICE void vecCore::math::SinCos (const float &x, float *s, float *c)
 
template<>
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICE void vecCore::math::SinCos (const double &x, double *s, double *c)
 
template<typename T >
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICEvecCore::math::Frexp (const T &x, int *exp)
 
template<typename T >
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICEvecCore::math::Ldexp (const T &x, int exp)
 
template<typename T >
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICEvecCore::math::Modf (const T &x, T *intpart)
 
template<typename T >
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICEvecCore::math::Rsqrt (const T &x)
 
template<typename T >
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICEvecCore::math::Scalbn (const T &x, int n)
 
template<typename T >
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICEvecCore::math::Scalbln (const T &x, long int n)
 
template<typename T >
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICE Mask< T > vecCore::math::IsInf (const T &x)
 
template<typename T >
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICE Mask< T > vecCore::math::IsNegative (const T &x)
 
template<typename T >
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICE constexpr T vecCore::math::Deg (const T &x)
 
template<typename T >
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICE constexpr T vecCore::math::Rad (const T &x)
 

Macro Definition Documentation

◆ VECCORE_MATH_BINARY_FUNCTION

#define VECCORE_MATH_BINARY_FUNCTION (   F,
 
)
Value:
template <typename T> \
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICE \
T F(const T &x, const T &y) \
{ \
T ret(x); \
for(size_t i = 0; i < VectorSize<T>(); ++i) \
Set(ret, i, std::f(Get(x,i), Get(y,i))); \
return ret; \
} \
#define VECCORE_FORCE_INLINE
Definition: Common.h:32

Definition at line 53 of file VecMath.h.

◆ VECCORE_MATH_UNARY_FUNCTION

#define VECCORE_MATH_UNARY_FUNCTION (   F,
 
)
Value:
template <typename T> \
VECCORE_FORCE_INLINE VECCORE_ATT_HOST_DEVICE \
T F(const T &x) \
{ \
T ret(x); \
for(size_t i = 0; i < VectorSize<T>(); ++i) \
Set(ret, i, std::f(Get(x,i))); \
return ret; \
} \

Definition at line 42 of file VecMath.h.