ezEngine Release 26.3
Loading...
Searching...
No Matches
ezSimdVec4d Class Reference

A 4-component SIMD vector class using doubles. More...

#include <SimdVec4d.h>

Public Member Functions

 EZ_DECLARE_POD_TYPE ()
 
 ezSimdVec4d (float fXyzw)
 
 ezSimdVec4d (double fXyzw)
 
 ezSimdVec4d (const ezSimdDouble &fXyzw)
 
 ezSimdVec4d (int x, int y, int z, int w=1)
 
 ezSimdVec4d (float x, float y, float z, float w=1.0f)
 
 ezSimdVec4d (double x, double y, double z, double w=1.0)
 
 ezSimdVec4d (ezInternal::QuadDouble v)
 
void Set (float fXyzw)
 
void Set (double fXyzw)
 
void Set (int x, int y, int z, int w)
 
void Set (float x, float y, float z, float w)
 
void Set (double x, double y, double z, double w)
 
void SetX (const ezSimdDouble &f)
 
void SetY (const ezSimdDouble &f)
 
void SetZ (const ezSimdDouble &f)
 
void SetW (const ezSimdDouble &f)
 
void SetZero ()
 
template<int N>
void Load (const float *pFloats)
 Loads N floats from pFloats, converts them to double, and stores in the vector. N must be between 1 and 4. Unused components are set to zero.
 
template<int N>
void Load (const double *pDoubles)
 Loads N doubles from pDoubles into the vector. N must be between 1 and 4. Unused components are set to zero.
 
template<int N>
void Store (float *pFloats) const
 Converts the first N components to float and stores them to pFloats. N must be between 1 and 4.
 
template<int N>
void Store (double *pDoubles) const
 Stores the first N components to pDoubles. N must be between 1 and 4.
 
ezSimdVec4d GetReciprocal () const
 
ezSimdVec4d GetSqrt () const
 
ezSimdVec4d GetInvSqrt () const
 
template<int N>
ezSimdDouble GetLength () const
 
template<int N>
ezSimdDouble GetInvLength () const
 
template<int N>
ezSimdDouble GetLengthSquared () const
 
template<int N>
ezSimdDouble GetLengthAndNormalize ()
 
template<int N>
ezSimdVec4d GetNormalized () const
 
template<int N>
void Normalize ()
 
template<int N>
void NormalizeIfNotZero (const ezSimdDouble &fEpsilon=ezMath::SmallEpsilon< double >())
 Normalizes the first N components if the squared length is greater than fEpsilon, otherwise sets the vector to zero.
 
template<int N>
void NormalizeIfNotZero (const ezSimdVec4d &vFallback, const ezSimdDouble &fEpsilon=ezMath::SmallEpsilon< double >())
 Normalizes the first N components if the squared length is greater than fEpsilon, otherwise sets the vector to vFallback.
 
template<int N>
bool IsZero () const
 
template<int N>
bool IsZero (const ezSimdDouble &fEpsilon) const
 
template<int N>
bool IsNormalized (const ezSimdDouble &fEpsilon=ezMath::HugeEpsilon< double >()) const
 
template<int N>
bool IsNaN () const
 
template<int N>
bool IsValid () const
 
template<int N>
ezSimdDouble GetComponent () const
 
ezSimdDouble GetComponent (int i) const
 
ezSimdDouble x () const
 
ezSimdDouble y () const
 
ezSimdDouble z () const
 
ezSimdDouble w () const
 
template<ezSwizzle::Enum s>
ezSimdVec4d Get () const
 
template<ezSwizzle::Enum s>
ezSimdVec4d GetCombined (const ezSimdVec4d &other) const
 x = this[s0], y = this[s1], z = other[s2], w = other[s3]
 
ezSimdVec4d operator- () const
 
ezSimdVec4d operator+ (const ezSimdVec4d &v) const
 
ezSimdVec4d operator- (const ezSimdVec4d &v) const
 
ezSimdVec4d operator* (const ezSimdDouble &f) const
 
ezSimdVec4d operator/ (const ezSimdDouble &f) const
 
ezSimdVec4d CompMul (const ezSimdVec4d &v) const
 
ezSimdVec4d CompDiv (const ezSimdVec4d &v) const
 
ezSimdVec4d CompMin (const ezSimdVec4d &rhs) const
 
ezSimdVec4d CompMax (const ezSimdVec4d &rhs) const
 
ezSimdVec4d Abs () const
 
ezSimdVec4d Round () const
 
ezSimdVec4d Floor () const
 
ezSimdVec4d Ceil () const
 
ezSimdVec4d Trunc () const
 
ezSimdVec4d Fraction () const
 
ezSimdVec4d FlipSign (const ezSimdVec4bWide &vCmp) const
 
ezSimdVec4doperator+= (const ezSimdVec4d &v)
 
ezSimdVec4doperator-= (const ezSimdVec4d &v)
 
ezSimdVec4doperator*= (const ezSimdDouble &f)
 
ezSimdVec4doperator/= (const ezSimdDouble &f)
 
ezSimdVec4bWide IsEqual (const ezSimdVec4d &rhs, const ezSimdDouble &fEpsilon) const
 
ezSimdVec4bWide operator== (const ezSimdVec4d &v) const
 
ezSimdVec4bWide operator!= (const ezSimdVec4d &v) const
 
ezSimdVec4bWide operator<= (const ezSimdVec4d &v) const
 
ezSimdVec4bWide operator< (const ezSimdVec4d &v) const
 
ezSimdVec4bWide operator>= (const ezSimdVec4d &v) const
 
ezSimdVec4bWide operator> (const ezSimdVec4d &v) const
 
template<int N>
ezSimdDouble HorizontalSum () const
 Returns the sum of the first N components.
 
template<int N>
ezSimdDouble HorizontalMin () const
 Returns the minimum of the first N components.
 
template<int N>
ezSimdDouble HorizontalMax () const
 Returns the maximum of the first N components.
 
template<int N>
ezSimdDouble Dot (const ezSimdVec4d &v) const
 Returns the dot product of the first N components of this vector and v.
 
ezSimdVec4d CrossRH (const ezSimdVec4d &v) const
 3D cross product, w is ignored.
 
ezSimdVec4d GetOrthogonalVector () const
 Generates an arbitrary vector such that Dot<3>(GetOrthogonalVector()) == 0.
 
template<int N>
EZ_ALWAYS_INLINE void Load (const double *pDoubles)
 
template<int N>
EZ_ALWAYS_INLINE void Store (double *pDoubles) const
 
template<int N>
EZ_ALWAYS_INLINE void Load (const float *pFloats)
 
template<int N>
EZ_ALWAYS_INLINE void Store (float *pFloats) const
 
template<int N>
EZ_ALWAYS_INLINE bool IsZero () const
 
template<int N>
EZ_ALWAYS_INLINE bool IsZero (const ezSimdDouble &fEpsilon) const
 
template<int N>
EZ_ALWAYS_INLINE bool IsNaN () const
 
template<int N>
EZ_ALWAYS_INLINE bool IsValid () const
 
template<int N>
EZ_ALWAYS_INLINE ezSimdDouble GetComponent () const
 
template<ezSwizzle::Enum s>
EZ_ALWAYS_INLINE ezSimdVec4d Get () const
 
template<ezSwizzle::Enum s>
EZ_ALWAYS_INLINE ezSimdVec4d GetCombined (const ezSimdVec4d &other) const
 x = this[s0], y = this[s1], z = other[s2], w = other[s3]
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMax () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMax () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMax () const
 
template<int N>
EZ_ALWAYS_INLINE ezSimdDouble Dot (const ezSimdVec4d &v) const
 
template<>
EZ_ALWAYS_INLINE void Load (const double *pDoubles)
 
template<>
EZ_ALWAYS_INLINE void Load (const double *pDoubles)
 
template<>
EZ_ALWAYS_INLINE void Load (const double *pDoubles)
 
template<>
EZ_ALWAYS_INLINE void Load (const double *pDoubles)
 
template<>
EZ_ALWAYS_INLINE void Load (const float *pFloats)
 
template<>
EZ_ALWAYS_INLINE void Load (const float *pFloats)
 
template<>
EZ_ALWAYS_INLINE void Load (const float *pFloats)
 
template<>
EZ_ALWAYS_INLINE void Load (const float *pFloats)
 
template<>
EZ_ALWAYS_INLINE void Store (double *pDoubles) const
 
template<>
EZ_ALWAYS_INLINE void Store (double *pDoubles) const
 
template<>
EZ_ALWAYS_INLINE void Store (double *pDoubles) const
 
template<>
EZ_ALWAYS_INLINE void Store (double *pDoubles) const
 
template<>
EZ_ALWAYS_INLINE void Store (float *pFloats) const
 
template<>
EZ_ALWAYS_INLINE void Store (float *pFloats) const
 
template<>
EZ_ALWAYS_INLINE void Store (float *pFloats) const
 
template<>
EZ_ALWAYS_INLINE void Store (float *pFloats) const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMax () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMax () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMax () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble Dot (const ezSimdVec4d &v) const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble Dot (const ezSimdVec4d &v) const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble Dot (const ezSimdVec4d &v) const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble Dot (const ezSimdVec4d &v) const
 
template<int N>
EZ_ALWAYS_INLINE ezSimdDouble GetLength () const
 
template<int N>
EZ_ALWAYS_INLINE ezSimdDouble GetInvLength () const
 
template<int N>
EZ_ALWAYS_INLINE ezSimdDouble GetLengthSquared () const
 
template<int N>
EZ_ALWAYS_INLINE ezSimdDouble GetLengthAndNormalize ()
 
template<int N>
EZ_ALWAYS_INLINE ezSimdVec4d GetNormalized () const
 
template<int N>
EZ_ALWAYS_INLINE void Normalize ()
 
template<int N>
EZ_ALWAYS_INLINE void NormalizeIfNotZero (const ezSimdVec4d &vFallback, const ezSimdDouble &fEpsilon)
 
template<int N>
EZ_ALWAYS_INLINE bool IsNormalized (const ezSimdDouble &fEpsilon) const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMax () const
 
template<>
EZ_ALWAYS_INLINE void Load (const float *pFloat)
 
template<>
EZ_ALWAYS_INLINE void Load (const float *pFloat)
 
template<>
EZ_ALWAYS_INLINE void Load (const float *pFloat)
 
template<>
EZ_ALWAYS_INLINE void Load (const float *pFloat)
 
template<>
EZ_ALWAYS_INLINE void Load (const double *pDouble)
 
template<>
EZ_ALWAYS_INLINE void Load (const double *pDouble)
 
template<>
EZ_ALWAYS_INLINE void Load (const double *pDouble)
 
template<>
EZ_ALWAYS_INLINE void Load (const double *pDouble)
 
template<>
EZ_ALWAYS_INLINE void Store (float *pFloat) const
 
template<>
EZ_ALWAYS_INLINE void Store (float *pFloat) const
 
template<>
EZ_ALWAYS_INLINE void Store (float *pFloat) const
 
template<>
EZ_ALWAYS_INLINE void Store (float *pFloat) const
 
template<>
EZ_ALWAYS_INLINE void Store (double *pDouble) const
 
template<>
EZ_ALWAYS_INLINE void Store (double *pDouble) const
 
template<>
EZ_ALWAYS_INLINE void Store (double *pDouble) const
 
template<>
EZ_ALWAYS_INLINE void Store (double *pDouble) const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalSum () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMin () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMax () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMax () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble HorizontalMax () const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble Dot (const ezSimdVec4d &v) const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble Dot (const ezSimdVec4d &v) const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble Dot (const ezSimdVec4d &v) const
 
template<>
EZ_ALWAYS_INLINE ezSimdDouble Dot (const ezSimdVec4d &v) const
 

Static Public Member Functions

static ezSimdVec4d MakeZero ()
 Creates an ezSimdVec4d that is initialized to zero.
 
static ezSimdVec4d MakeNaN ()
 Creates an ezSimdVec4d that is initialized to Not-A-Number (NaN).
 
static ezSimdVec4d Select (const ezSimdVec4bWide &vCmp, const ezSimdVec4d &vTrue, const ezSimdVec4d &vFalse)
 
static ezSimdVec4d Lerp (const ezSimdVec4d &a, const ezSimdVec4d &b, const ezSimdVec4d &t)
 
static ezSimdVec4d MulAdd (const ezSimdVec4d &a, const ezSimdVec4d &b, const ezSimdVec4d &c)
 Returns a * b + c.
 
static ezSimdVec4d MulAdd (const ezSimdVec4d &a, const ezSimdDouble &b, const ezSimdVec4d &c)
 
static ezSimdVec4d MulSub (const ezSimdVec4d &a, const ezSimdVec4d &b, const ezSimdVec4d &c)
 Returns a * b - c.
 
static ezSimdVec4d MulSub (const ezSimdVec4d &a, const ezSimdDouble &b, const ezSimdVec4d &c)
 
static ezSimdVec4d CopySign (const ezSimdVec4d &vMagnitude, const ezSimdVec4d &vSign)
 Returns a vector with the magnitude from vMagnitude and the sign from vSign.
 

Public Attributes

ezInternal::QuadDouble m_v
 

Detailed Description

A 4-component SIMD vector class using doubles.


The documentation for this class was generated from the following files: