XII Release 0.1.0
Loading...
Searching...
No Matches
xiiSimdVec4d Class Reference

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

#include <SimdVec4d.h>

Public Member Functions

 XII_DECLARE_POD_TYPE ()
 
 xiiSimdVec4d (double fXyzw)
 
 xiiSimdVec4d (const xiiSimdDouble &fXyzw)
 
 xiiSimdVec4d (double x, double y, double z, double w=1.0)
 
 xiiSimdVec4d (xiiInternal::QuadDouble v)
 
void Set (double fXyzw)
 
void Set (double x, double y, double z, double w)
 
void SetX (const xiiSimdDouble &f)
 
void SetY (const xiiSimdDouble &f)
 
void SetZ (const xiiSimdDouble &f)
 
void SetW (const xiiSimdDouble &f)
 
void SetZero ()
 
template<xiiInt32 N>
void Load (const double *pDoubles)
 
template<xiiInt32 N>
void Store (double *pDoubles) const
 
template<xiiMathDoubleBits::Enum acc = xiiMathDoubleBits::FULL>
xiiSimdVec4d GetReciprocal () const
 
template<xiiMathDoubleBits::Enum acc = xiiMathDoubleBits::FULL>
xiiSimdVec4d GetSqrt () const
 
template<xiiMathDoubleBits::Enum acc = xiiMathDoubleBits::FULL>
xiiSimdVec4d GetInvSqrt () const
 
template<xiiInt32 N, xiiMathDoubleBits::Enum acc = xiiMathDoubleBits::FULL>
xiiSimdDouble GetLength () const
 
template<xiiInt32 N, xiiMathDoubleBits::Enum acc = xiiMathDoubleBits::FULL>
xiiSimdDouble GetInvLength () const
 
template<xiiInt32 N>
xiiSimdDouble GetLengthSquared () const
 
template<xiiInt32 N, xiiMathDoubleBits::Enum acc = xiiMathDoubleBits::FULL>
xiiSimdDouble GetLengthAndNormalize ()
 
template<xiiInt32 N, xiiMathDoubleBits::Enum acc = xiiMathDoubleBits::FULL>
xiiSimdVec4d GetNormalized () const
 
template<xiiInt32 N, xiiMathDoubleBits::Enum acc = xiiMathDoubleBits::FULL>
void Normalize ()
 
template<xiiInt32 N, xiiMathDoubleBits::Enum acc = xiiMathDoubleBits::FULL>
void NormalizeIfNotZero (const xiiSimdDouble &fEpsilon=xiiMath::SmallEpsilon< double >())
 
template<xiiInt32 N>
bool IsZero () const
 
template<xiiInt32 N>
bool IsZero (const xiiSimdDouble &fEpsilon) const
 
template<xiiInt32 N>
bool IsNormalized (const xiiSimdDouble &fEpsilon=xiiMath::HugeEpsilon< double >()) const
 
template<xiiInt32 N>
bool IsNaN () const
 
template<xiiInt32 N>
bool IsValid () const
 
template<xiiInt32 N>
xiiSimdDouble GetComponent () const
 
xiiSimdDouble GetComponent (xiiInt32 i) const
 
xiiSimdDouble x () const
 
xiiSimdDouble y () const
 
xiiSimdDouble z () const
 
xiiSimdDouble w () const
 
template<xiiSwizzle::Enum s>
xiiSimdVec4d Get () const
 
template<xiiSwizzle::Enum s>
xiiSimdVec4d GetCombined (const xiiSimdVec4d &other) const
 x = this[s0], y = this[s1], z = other[s2], w = other[s3]
 
xiiSimdVec4d operator- () const
 
xiiSimdVec4d operator+ (const xiiSimdVec4d &v) const
 
xiiSimdVec4d operator- (const xiiSimdVec4d &v) const
 
xiiSimdVec4d operator* (const xiiSimdDouble &f) const
 
xiiSimdVec4d operator/ (const xiiSimdDouble &f) const
 
xiiSimdVec4d CompMul (const xiiSimdVec4d &v) const
 
template<xiiMathDoubleBits::Enum acc = xiiMathDoubleBits::FULL>
xiiSimdVec4d CompDiv (const xiiSimdVec4d &v) const
 
xiiSimdVec4d CompMin (const xiiSimdVec4d &rhs) const
 
xiiSimdVec4d CompMax (const xiiSimdVec4d &rhs) const
 
xiiSimdVec4d Abs () const
 
xiiSimdVec4d Round () const
 
xiiSimdVec4d Floor () const
 
xiiSimdVec4d Ceil () const
 
xiiSimdVec4d Trunc () const
 
xiiSimdVec4d Fraction () const
 
xiiSimdVec4d FlipSign (const xiiSimdVec4b &vCmp) const
 
xiiSimdVec4doperator+= (const xiiSimdVec4d &v)
 
xiiSimdVec4doperator-= (const xiiSimdVec4d &v)
 
xiiSimdVec4doperator*= (const xiiSimdDouble &f)
 
xiiSimdVec4doperator/= (const xiiSimdDouble &f)
 
xiiSimdVec4b IsEqual (const xiiSimdVec4d &rhs, const xiiSimdDouble &fEpsilon) const
 
xiiSimdVec4b operator== (const xiiSimdVec4d &v) const
 
xiiSimdVec4b operator!= (const xiiSimdVec4d &v) const
 
xiiSimdVec4b operator<= (const xiiSimdVec4d &v) const
 
xiiSimdVec4b operator< (const xiiSimdVec4d &v) const
 
xiiSimdVec4b operator>= (const xiiSimdVec4d &v) const
 
xiiSimdVec4b operator> (const xiiSimdVec4d &v) const
 
template<xiiInt32 N>
xiiSimdDouble HorizontalSum () const
 
template<xiiInt32 N>
xiiSimdDouble HorizontalMin () const
 
template<xiiInt32 N>
xiiSimdDouble HorizontalMax () const
 
template<xiiInt32 N>
xiiSimdDouble Dot (const xiiSimdVec4d &v) const
 
xiiSimdVec4d CrossRH (const xiiSimdVec4d &v) const
 3D cross product, w is ignored.
 
xiiSimdVec4d GetOrthogonalVector () const
 Generates an arbitrary vector such that Dot<3>(GetOrthogonalVector()) == 0.
 
template<>
XII_ALWAYS_INLINE void Load (const double *pValues)
 
template<>
XII_ALWAYS_INLINE void Load (const double *pValues)
 
template<>
XII_ALWAYS_INLINE void Load (const double *pValues)
 
template<>
XII_ALWAYS_INLINE void Load (const double *pValues)
 
template<>
XII_ALWAYS_INLINE void Store (double *pValues) const
 
template<>
XII_ALWAYS_INLINE void Store (double *pValues) const
 
template<>
XII_ALWAYS_INLINE void Store (double *pValues) const
 
template<>
XII_ALWAYS_INLINE void Store (double *pValues) const
 
template<xiiInt32 N>
XII_ALWAYS_INLINE bool IsZero () const
 
template<xiiInt32 N>
XII_ALWAYS_INLINE bool IsZero (const xiiSimdDouble &fEpsilon) const
 
template<xiiInt32 N>
XII_ALWAYS_INLINE bool IsValid () const
 
template<xiiInt32 N>
XII_ALWAYS_INLINE xiiSimdDouble GetComponent () const
 
template<xiiSwizzle::Enum s>
XII_ALWAYS_INLINE xiiSimdVec4d Get () const
 
template<xiiSwizzle::Enum s>
XII_ALWAYS_INLINE xiiSimdVec4d GetCombined (const xiiSimdVec4d &other) const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalSum () const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalSum () const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalSum () const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalMin () const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalMin () const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalMin () const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalMax () const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalMax () const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalMax () const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble Dot (const xiiSimdVec4d &v) const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble Dot (const xiiSimdVec4d &v) const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble Dot (const xiiSimdVec4d &v) const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble Dot (const xiiSimdVec4d &v) const
 
template<xiiInt32 N>
XII_ALWAYS_INLINE void Load (const double *pValues)
 
template<xiiInt32 N>
XII_ALWAYS_INLINE void Store (double *pValues) const
 
template<xiiMathDoubleBits::Enum acc>
XII_ALWAYS_INLINE xiiSimdVec4d GetReciprocal () const
 
template<xiiMathDoubleBits::Enum acc>
XII_ALWAYS_INLINE xiiSimdVec4d GetSqrt () const
 
template<xiiInt32 N>
XII_ALWAYS_INLINE bool IsNaN () const
 
template<xiiMathDoubleBits::Enum acc>
XII_ALWAYS_INLINE xiiSimdVec4d CompDiv (const xiiSimdVec4d &v) const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalSum () const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalSum () const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalSum () const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalMin () const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalMin () const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalMin () const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalMax () const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalMax () const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalMax () const
 
template<xiiInt32 N>
XII_ALWAYS_INLINE xiiSimdDouble Dot (const xiiSimdVec4d &v) const
 
template<xiiInt32 N, xiiMathDoubleBits::Enum acc>
XII_ALWAYS_INLINE xiiSimdDouble GetLength () const
 
template<xiiInt32 N, xiiMathDoubleBits::Enum acc>
XII_ALWAYS_INLINE xiiSimdDouble GetInvLength () const
 
template<xiiInt32 N>
XII_ALWAYS_INLINE xiiSimdDouble GetLengthSquared () const
 
template<xiiInt32 N, xiiMathDoubleBits::Enum acc>
XII_ALWAYS_INLINE xiiSimdDouble GetLengthAndNormalize ()
 
template<xiiInt32 N, xiiMathDoubleBits::Enum acc>
XII_ALWAYS_INLINE xiiSimdVec4d GetNormalized () const
 
template<xiiInt32 N, xiiMathDoubleBits::Enum acc>
XII_ALWAYS_INLINE void Normalize ()
 
template<xiiInt32 N>
XII_ALWAYS_INLINE bool IsNormalized (const xiiSimdDouble &fEpsilon) const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalSum () const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalMin () const
 
template<>
XII_ALWAYS_INLINE xiiSimdDouble HorizontalMax () const
 

Static Public Member Functions

static xiiSimdVec4d MakeZero ()
 Creates a xiiSimdVec4d that is initialized to zero.
 
static xiiSimdVec4d MakeNaN ()
 Creates a xiiSimdVec4d that is initialized to Not-A-Number (NaN).
 
static xiiSimdVec4d Select (const xiiSimdVec4b &vCmp, const xiiSimdVec4d &vTrue, const xiiSimdVec4d &vFalse)
 
static xiiSimdVec4d Lerp (const xiiSimdVec4d &a, const xiiSimdVec4d &b, const xiiSimdVec4d &t)
 
static xiiSimdVec4d MulAdd (const xiiSimdVec4d &a, const xiiSimdVec4d &b, const xiiSimdVec4d &c)
 
static xiiSimdVec4d MulAdd (const xiiSimdVec4d &a, const xiiSimdDouble &b, const xiiSimdVec4d &c)
 
static xiiSimdVec4d MulSub (const xiiSimdVec4d &a, const xiiSimdVec4d &b, const xiiSimdVec4d &c)
 
static xiiSimdVec4d MulSub (const xiiSimdVec4d &a, const xiiSimdDouble &b, const xiiSimdVec4d &c)
 
static xiiSimdVec4d CopySign (const xiiSimdVec4d &vMagnitude, const xiiSimdVec4d &vSign)
 

Public Attributes

xiiInternal::QuadDouble m_v
 

Detailed Description

A 4-component SIMD vector class.


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