![]() |
XII Release 0.1.0
|
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 |
xiiSimdVec4d & | operator+= (const xiiSimdVec4d &v) |
xiiSimdVec4d & | operator-= (const xiiSimdVec4d &v) |
xiiSimdVec4d & | operator*= (const xiiSimdDouble &f) |
xiiSimdVec4d & | operator/= (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 |
A 4-component SIMD vector class.