# [−][src]Crate directx_math

# DirectX Math for Rust

A rust translation of DirectXMath, a SIMD linear algebra library for use in games and graphics apps.

Most functions and structs are exported at the crate root. Modules are organized according to the DirectXMath reference documentation. Additional DirectXMath documentation may be found in the previous version reference.

## Matrix multiplication order and memory layout

DirectXMath uses "row-major" matrices, row-vectors, and pre-multiplication. Handedness is determined by
which function version is used (`RH`

vs. `LH`

). Multiplication order is the same as transformation order.

**Row-major** multiplication order:

```
MVP = Model * View * Projection;
```

**Column-major** multiplication order:

```
MVP = Projection * View * Model;
```

When laid out in memory, the data elements `0`

through `15`

of a "row-major" matrix with "row-vectors"
are in the same order as an OpenGL "column-major" matrix with "column-vectors". The translation
components of a transformation matrix occupy elements `12`

, `13`

, and `14`

.

For example, `XMMatrixTranslation`

`(12.0, 13.0, 14.0)`

results in the following contiguous
memory (e.g. `[f32; 16]`

):

```
[1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 12.0, 13.0, 14.0, 1.0]
```

## Example

use directx_math::*; let eye = XMVectorSet(10.0, 10.0, 10.0, 0.0); let focus = XMVectorSet(0.0, 0.0, 0.0, 0.0); let up = XMVectorSet(0.0, 1.0, 0.0, 0.0); let view = XMMatrixLookAtRH(eye, focus, up); let fov_y = XMConvertToRadians(65.0); let aspect_ratio = 1024.0 / 768.0; let near_z = 0.1; let far_z = 1000.0; let projection = XMMatrixPerspectiveFovRH(fov_y, aspect_ratio, near_z, far_z); let model = XMMatrixIdentity(); let mvp = XMMatrixMultiply(XMMatrixMultiply(model, &view), &projection); // or use the unit struct with operator overloads let model = XMMatrix(model); let view = XMMatrix(view); let projection = XMMatrix(projection); // row-major multiplication order is the same as the transformation order assert_eq!(XMMatrix(mvp), model * view * projection);

## Modules

accessor | Vector accessors |

collision | Collision functions and bounding volumes |

conversion | Vector data conversion functions |

load | Vector and Matrix load functions |

matrix | Matrix functions |

plane | Plane functions |

quaternion | Quaternion functions |

scalar | Scalar functions |

store | Vector and Matrix store functions |

template | Vector manipulation functions |

utility | Utility and comparison functions |

vector | Vector functions usable on any vector type |

vector2d | 2D Vector functions |

vector3d | 3D Vector functions |

vector4d | 4D Vector functions |

## Structs

Align16 | |

XMFLOAT2 | |

XMFLOAT3 | |

XMFLOAT3X3 | |

XMFLOAT3X4 | |

XMFLOAT4 | |

XMFLOAT4X3 | |

XMFLOAT4X4 | |

XMINT2 | |

XMINT3 | |

XMINT4 | |

XMMatrix | Unit struct for |

XMUINT2 | |

XMUINT3 | |

XMUINT4 | |

XMVector | Unit struct for |

## Enums

Permute0W | |

Permute0X | |

Permute0Y | |

Permute0Z | |

Permute1W | |

Permute1X | |

Permute1Y | |

Permute1Z | |

SwizzleW | |

SwizzleX | |

SwizzleY | |

SwizzleZ |

## Constants

## Traits

Permute | XMVectorPermute trait parameters |

Swizzle | XMVectorSwizzle trait parameters |

XMVectorPermute | Permutes the components of two vectors to create a new vector. |

XMVectorSwizzle | Swizzles a vector |

## Functions

XMComparisonAllFalse | Tests the comparison value to determine if all of the compared components are false. |

XMComparisonAllInBounds | Tests the comparison value to determine if all of the compared components are within set bounds. |

XMComparisonAllTrue | Tests the comparison value to determine if all of the compared components are true. |

XMComparisonAnyFalse | Tests the comparison value to determine if any of the compared components are false. |

XMComparisonAnyOutOfBounds | Tests the comparison value to determine if any of the compared components are outside the set bounds. |

XMComparisonAnyTrue | Tests the comparison value to determine if any of the compared components are true. |

XMComparisonMixed | Tests the comparison value to determine if the compared components had mixed results--some true and some false. |

XMConvertFloatToHalf | Converts a single-precision floating-point value to a half-precision floating-point value. |

XMConvertHalfToFloat | Converts a half-precision floating-point value to a single-precision floating-point value. |

XMConvertToDegrees | Converts an angle measured in radians into one measured in degrees. |

XMConvertToRadians | Converts an angle measured in degrees into one measured in radians. |

XMConvertVectorFloatToInt | Converts an XMVECTOR with float components to an XMVECTOR with int32_t components and applies a uniform bias. |

XMConvertVectorFloatToUInt | Converts an XMVECTOR with uint32_t components to an XMVECTOR with float components and applies a uniform bias. |

XMConvertVectorIntToFloat | Converts an XMVECTOR with int32_t components to an XMVECTOR with float components and applies a uniform bias. |

XMConvertVectorUIntToFloat | Converts an XMVECTOR with uint32_t components to an XMVECTOR with float components and applies a uniform bias. |

XMFresnelTerm | Calculates the Fresnel term for unpolarized light. |

XMLoadFloat2 | Loads data into the x, y, and z components of an XMVECTOR, without type checking. |

XMLoadFloat3 | Loads an XMFLOAT3 into an XMVECTOR. |

XMLoadFloat3A | Loads an XMFLOAT3 into an aligned XMVECTOR. |

XMLoadFloat3x3 | Loads an XMFLOAT3X3 into an MATRIX. |

XMLoadFloat3x4 | Loads an XMFLOAT3X4 into an XMMATRIX. |

XMLoadFloat4 | Loads an XMFLOAT4 into an XMVECTOR. |

XMLoadFloat4A | Loads an XMFLOAT4 into an aligned XMVECTOR. |

XMLoadFloat4x3 | Loads an XMFLOAT4X3 into an XMMATRIX. |

XMLoadFloat4x4 | Loads an XMFLOAT4X4 into an XMMATRIX. |

XMLoadFloat4x4A | Loads an XMFLOAT4X4 into an aligned XMMATRIX. |

XMLoadInt2 | Loads data into the x and y components of an XMVECTOR. |

XMLoadInt3 | Loads data into the x, y, and z components of an XMVECTOR, without type checking. |

XMLoadInt4 | Loads data into an XMVECTOR, without type checking. |

XMMatrixAffineTransformation | Builds an affine transformation matrix. |

XMMatrixAffineTransformation2D | Builds a 2D affine transformation matrix in the xy plane. |

XMMatrixDecompose | Breaks down a general 3D transformation matrix into its scalar, rotational, and translational components. |

XMMatrixDeterminant | Computes the determinant of a matrix. |

XMMatrixIdentity | Builds the identity matrix. |

XMMatrixInverse | Computes the inverse of a matrix. |

XMMatrixIsIdentity | Tests whether a matrix is the identity matrix. |

XMMatrixIsInfinite | Tests whether any of the elements of a matrix are infinite. |

XMMatrixIsNaN | Tests whether any of the elements of a matrix are NaN. |

XMMatrixLookAtLH | Builds a view matrix for a left-handed coordinate system using a camera position, an up direction, and a focal point. |

XMMatrixLookAtRH | Builds a view matrix for a right-handed coordinate system using a camera position, an up direction, and a focal point. |

XMMatrixLookToLH | Builds a view matrix for a left-handed coordinate system using a camera position, an up direction, and a camera direction. |

XMMatrixLookToRH | Builds a view matrix for a right-handed coordinate system using a camera position, an up direction, and a camera direction. |

XMMatrixMultiply | Computes the product of two matrices. |

XMMatrixMultiplyTranspose | Computes the transpose of the product of two matrices. |

XMMatrixOrthographicLH | Builds an orthogonal projection matrix for a left-handed coordinate system. |

XMMatrixOrthographicRH | Builds an orthogonal projection matrix for a right-handed coordinate system. |

XMMatrixPerspectiveFovLH | Builds a left-handed perspective projection matrix based on a field of view. |

XMMatrixPerspectiveFovRH | Builds a right-handed perspective projection matrix based on a field of view. |

XMMatrixPerspectiveLH | Builds a left-handed perspective projection matrix. |

XMMatrixPerspectiveRH | Builds a right-handed perspective projection matrix. |

XMMatrixReflect | Builds a transformation matrix designed to reflect vectors through a given plane. |

XMMatrixRotationAxis | Builds a matrix that rotates around an arbitrary axis. |

XMMatrixRotationNormal | Builds a matrix that rotates around an arbitrary normal vector. |

XMMatrixRotationQuaternion | Builds a rotation matrix from a quaternion. |

XMMatrixRotationRollPitchYaw | Builds a rotation matrix based on a given |

XMMatrixRotationRollPitchYawFromVector | Builds a rotation matrix based on a vector containing the Euler angles ( |

XMMatrixRotationX | Builds a matrix that rotates around the |

XMMatrixRotationY | Builds a matrix that rotates around the |

XMMatrixRotationZ | Builds a matrix that rotates around the |

XMMatrixScaling | Builds a matrix that scales along the x-axis, y-axis, and z-axis. |

XMMatrixScalingFromVector | Builds a matrix that scales along the x-axis, y-axis, and z-axis. |

XMMatrixSet | Creates a matrix with float values. |

XMMatrixShadow | Builds a transformation matrix that flattens geometry into a plane. |

XMMatrixTransformation | Builds a transformation matrix. |

XMMatrixTransformation2D | Builds a 2D transformation matrix. |

XMMatrixTranslation | Builds a translation matrix from the specified offsets. |

XMMatrixTranslationFromVector | Builds a translation matrix from a vector. |

XMMatrixTranspose | Computes the transpose of a matrix. |

XMMatrixVectorTensorProduct | XMMatrixVectorTensorProduct |

XMMax | Compares two numeric data type instances, or two instances of an object
which supports an overload of |

XMMin | Compares two numeric data type instances, or two instances of an object
which supports an overload of |

XMPlaneDot | Calculates the dot product between an input plane and a 4D vector. |

XMPlaneDotCoord | Calculates the dot product between an input plane and a 3D vector. |

XMPlaneDotNormal | Calculates the dot product between the normal vector of a plane and a 3D vector. |

XMPlaneEqual | Determines if two planes are equal. |

XMPlaneFromPointNormal | Computes the equation of a plane constructed from a point in the plane and a normal vector. |

XMPlaneFromPoints | Computes the equation of a plane constructed from three points in the plane. |

XMPlaneIntersectLine | Finds the intersection between a plane and a line. |

XMPlaneIntersectPlane | Finds the intersection of two planes. |

XMPlaneIsInfinite | Tests whether any of the coefficients of a plane is positive or negative infinity. |

XMPlaneIsNaN | Tests whether any of the coefficients of a plane is a NaN. |

XMPlaneNearEqual | Determines whether two planes are nearly equal. |

XMPlaneNormalize | Normalizes the coefficients of a plane so that coefficients of x, y, and z form a unit normal vector. |

XMPlaneNormalizeEst | Estimates the coefficients of a plane so that coefficients of x, y, and z form a unit normal vector. |

XMPlaneNotEqual | Determines if two planes are equal. |

XMPlaneTransform | Transforms a plane by a given matrix. |

XMQuaternionBaryCentric | Returns a point in barycentric coordinates, using the specified quaternions. |

XMQuaternionBaryCentricV | Returns a point in barycentric coordinates, using the specified quaternions. |

XMQuaternionConjugate | Computes the conjugate of a quaternion. |

XMQuaternionDot | Computes the dot product of two quaternions. |

XMQuaternionEqual | Tests whether two quaternions are equal. |

XMQuaternionExp | Computes the exponential of a given pure quaternion. |

XMQuaternionIdentity | Returns the identity quaternion. |

XMQuaternionInverse | Computes the inverse of a quaternion. |

XMQuaternionIsIdentity | Tests whether a specific quaternion is the identity quaternion. |

XMQuaternionIsInfinite | Test whether any component of a quaternion is either positive or negative infinity. |

XMQuaternionIsNaN | Test whether any component of a quaternion is a NaN. |

XMQuaternionLength | Computes the magnitude of a quaternion. |

XMQuaternionLengthSq | Computes the square of the magnitude of a quaternion. |

XMQuaternionLn | Computes the natural logarithm of a given unit quaternion. |

XMQuaternionMultiply | Computes the product of two quaternions. |

XMQuaternionNormalize | Computes the normalized version of a quaternion. |

XMQuaternionNormalizeEst | Estimates the normalized version of a quaternion. |

XMQuaternionNotEqual | Tests whether two quaternions are not equal. |

XMQuaternionReciprocalLength | Computes the reciprocal of the magnitude of a quaternion. |

XMQuaternionRotationAxis | Computes a rotation quaternion about an axis. |

XMQuaternionRotationMatrix | Computes a rotation quaternion from a rotation matrix. |

XMQuaternionRotationNormal | Computes the rotation quaternion about a normal vector. |

XMQuaternionRotationRollPitchYaw | Computes a rotation quaternion based on the |

XMQuaternionRotationRollPitchYawFromVector | Computes a rotation quaternion based on a vector containing the Euler angles ( |

XMQuaternionSlerp | Interpolates between two unit quaternions, using spherical linear interpolation. |

XMQuaternionSlerpV | Interpolates between two unit quaternions, using spherical linear interpolation. |

XMQuaternionSquad | Interpolates between four unit quaternions, using spherical quadrangle interpolation. |

XMQuaternionSquadSetup | Provides addresses of setup control points for spherical quadrangle interpolation. |

XMQuaternionSquadV | Interpolates between four unit quaternions, using spherical quadrangle interpolation. |

XMQuaternionToAxisAngle | Computes an axis and angle of rotation about that axis for a given quaternion. |

XMScalarACos | Computes the arccosine of a floating-point number. |

XMScalarACosEst | Estimates the arccosine of a floating-point number. |

XMScalarASin | Computes the arcsine of a floating-point number. |

XMScalarASinEst | Estimates the arcsine of a floating-point number. |

XMScalarCos | Computes the cosine of a radian angle. |

XMScalarCosEst | Estimates the cosine of a radian angle. |

XMScalarModAngle | Computes an angle between |

XMScalarNearEqual | Determines if two floating-point values are nearly equal. |

XMScalarSin | Computes the sine of a radian angle. |

XMScalarSinCos | Computes both the sine and cosine of a radian angle. |

XMScalarSinCosEst | Estimates both the sine and cosine of a radian angle. |

XMScalarSinEst | Estimates the sine of a radian angle. |

XMStoreFloat | Stores an XMVECTOR in a float. |

XMStoreFloat2 | Stores an XMVECTOR in an XMFLOAT2. |

XMStoreFloat3 | Stores an XMVECTOR in an XMFLOAT3. |

XMStoreFloat3A | Stores an XMVECTOR in an aligned XMFLOAT3. |

XMStoreFloat3x3 | Stores an XMMATRIX in an XMFLOAT3X3. |

XMStoreFloat3x4 | Stores an XMMATRIX in an XMFLOAT3X4. |

XMStoreFloat4 | Stores an XMVECTOR in an XMFLOAT4. |

XMStoreFloat4A | Stores an XMVECTOR in an aligned XMFLOAT4. |

XMStoreFloat4x3 | Stores an XMMATRIX in an XMFLOAT4X3. |

XMStoreFloat4x4 | Stores an XMMATRIX in an XMFLOAT4X4. |

XMStoreFloat4x4A | Stores an XMMATRIX in an aligned XMFLOAT4X4. |

XMStoreInt2 | Stores an XMVECTOR in a 2-element uint32_t array. |

XMStoreInt3 | Stores an XMVECTOR in a 3-element uint32_t array. |

XMStoreInt4 | Stores an XMVECTOR in a 4-element uint32_t array. |

XMVector2AngleBetweenNormals | Computes the radian angle between two normalized 2D vectors. |

XMVector2AngleBetweenNormalsEst | Estimates the radian angle between two normalized 2D vectors. |

XMVector2AngleBetweenVectors | Computes the radian angle between two 2D vectors. |

XMVector2ClampLength | Clamps the length of a 2D vector to a given range. |

XMVector2ClampLengthV | Clamps the length of a 2D vector to a given range. |

XMVector2Cross | Computes the 2D cross product. |

XMVector2Dot | Computes the dot product between 2D vectors. |

XMVector2Equal | Tests whether two 2D vectors are equal. |

XMVector2EqualInt | Tests whether two 2D vectors are equal, treating each component as an unsigned integer. |

XMVector2EqualIntR | Tests whether two 2D vectors are equal, treating each component as an unsigned integer. In addition, this function returns a comparison value that can be examined using functions such as XMComparisonAllTrue. |

XMVector2EqualR | Tests whether two 2D vectors are equal. In addition, this function returns a comparison value that can be examined using functions such as XMComparisonAllTrue. |

XMVector2Greater | Tests whether one 2D vector is greater than another 2D vector. |

XMVector2GreaterOrEqual | Tests whether one 2D vector is greater-than-or-equal-to another 2D vector. |

XMVector2GreaterOrEqualR | Tests whether one 2D vector is greater-than-or-equal-to another 2D vector and returns a comparison value that can be examined using functions such as XMComparisonAllTrue. |

XMVector2GreaterR | Tests whether one 2D vector is greater than another 2D vector and returns a comparison value that can be examined using functions such as XMComparisonAllTrue. |

XMVector2InBounds | Tests whether the components of a 2D vector are within set bounds. |

XMVector2IntersectLine | Finds the intersection of two lines. |

XMVector2IsInfinite | Tests whether any component of a 2D vector is positive or negative infinity. |

XMVector2IsNaN | Tests whether any component of a 2D vector is a NaN. |

XMVector2Length | Computes the length of a 2D vector. |

XMVector2LengthEst | Estimates the length of a 2D vector. |

XMVector2LengthSq | Computes the square of the length of a 2D vector. |

XMVector2Less | Tests whether one 2D vector is less than another 2D vector. |

XMVector2LessOrEqual | Tests whether one 2D vector is less-than-or-equal-to another 2D vector. |

XMVector2LinePointDistance | Computes the minimum distance between a line and a point. |

XMVector2NearEqual | Tests whether one 2D vector is near another 2D vector. |

XMVector2Normalize | Returns the normalized version of a 2D vector. |

XMVector2NormalizeEst | Estimates the normalized version of a 2D vector. |

XMVector2NotEqual | Tests whether two 2D vectors are not equal. |

XMVector2NotEqualInt | Test whether two vectors are not equal, treating each component as an unsigned integer. |

XMVector2Orthogonal | Computes a vector perpendicular to a 2D vector. |

XMVector2ReciprocalLength | Computes the reciprocal of the length of a 2D vector. |

XMVector2ReciprocalLengthEst | Estimates the reciprocal of the length of a 2D vector. |

XMVector2Reflect | Reflects an incident 2D vector across a 2D normal vector. |

XMVector2Refract | Refracts an incident 2D vector across a 2D normal vector. |

XMVector2RefractV | Refracts an incident 2D vector across a 2D normal vector. |

XMVector2Transform | Transforms a 2D vector by a matrix. |

XMVector2TransformCoord | Transforms a 2D vector by a given matrix, projecting the result back into |

XMVector2TransformNormal | Transforms a 2D vector by a matrix. |

XMVector3AngleBetweenNormals | Computes the radian angle between two normalized 3D vectors. |

XMVector3AngleBetweenNormalsEst | Estimates the radian angle between two normalized 3D vectors. |

XMVector3AngleBetweenVectors | Computes the radian angle between two 3D vectors. |

XMVector3ClampLength | Clamps the length of a 3D vector to a given range. |

XMVector3ClampLengthV | Clamps the length of a 3D vector to a given range. |

XMVector3ComponentsFromNormal | Using a reference normal vector, splits a 3D vector into components that are parallel and perpendicular to the normal. |

XMVector3Cross | Computes the cross product between 3D vectors. |

XMVector3Dot | Computes the dot product between 3D vectors. |

XMVector3Equal | Tests whether two 3D vectors are equal. |

XMVector3EqualInt | Tests whether two 3D vectors are equal, treating each component as an unsigned integer. |

XMVector3EqualIntR | Tests whether two 3D vectors are equal, treating each component as an unsigned integer. In addition, this function returns a comparison value that can be examined using functions such as XMComparisonAllTrue. |

XMVector3EqualR | Tests whether two 3D vectors are equal. In addition, this function returns a comparison value that can be examined using functions such as XMComparisonAllTrue. |

XMVector3Greater | Tests whether one 3D vector is greater than another 3D vector. |

XMVector3GreaterOrEqual | Tests whether one 3D vector is greater-than-or-equal-to another 3D vector. |

XMVector3GreaterOrEqualR | Tests whether one 3D vector is greater-than-or-equal-to another 3D vector and returns a comparison value that can be examined using functions such as XMComparisonAllTrue. |

XMVector3GreaterR | Tests whether one 3D vector is greater than another 3D vector and returns a comparison value that can be examined using functions such as XMComparisonAllTrue. |

XMVector3InBounds | Tests whether the components of a 3D vector are within set bounds. |

XMVector3InverseRotate | Rotates a 3D vector using the inverse of a quaternion. |

XMVector3IsInfinite | Tests whether any component of a 3D vector is positive or negative infinity. |

XMVector3IsNaN | Tests whether any component of a 3D vector is a NaN. |

XMVector3Length | Computes the length of a 3D vector. |

XMVector3LengthEst | Estimates the length of a 3D vector. |

XMVector3LengthSq | Computes the square of the length of a 3D vector. |

XMVector3Less | Tests whether one 3D vector is less than another 3D vector. |

XMVector3LessOrEqual | Tests whether one 3D vector is less than or equal to another 3D vector. |

XMVector3LinePointDistance | Computes the minimum distance between a line and a point. |

XMVector3NearEqual | Tests whether one 3D vector is near another 3D vector. |

XMVector3Normalize | Returns the normalized version of a 3D vector. |

XMVector3NormalizeEst | Estimates the normalized version of a 3D vector. |

XMVector3NotEqual | Tests whether two 3D vectors are not equal. |

XMVector3NotEqualInt | Test whether two 3D vectors are not equal, treating each component as an unsigned integer. |

XMVector3Orthogonal | Computes a vector perpendicular to a 3D vector. |

XMVector3Project | Project a 3D vector from object space into screen space. |

XMVector3ReciprocalLength | Computes the reciprocal of the length of a 3D vector. |

XMVector3ReciprocalLengthEst | Estimates the reciprocal of the length of a 3D vector. |

XMVector3Reflect | Reflects an incident 3D vector across a 3D normal vector. |

XMVector3Refract | Refracts an incident 3D vector across a 3D normal vector. |

XMVector3RefractV | Refracts an incident 3D vector across a 3D normal vector. |

XMVector3Rotate | Rotates a 3D vector using a quaternion. |

XMVector3Transform | Transforms a 3D vector by a matrix. |

XMVector3TransformCoord | Transforms a 3D vector by a given matrix, projecting the result back into |

XMVector3TransformNormal | Transforms the 3D vector normal by the given matrix. |

XMVector3Unproject | Projects a 3D vector from screen space into object space. |

XMVector4AngleBetweenNormals | Computes the radian angle between two normalized 4D vectors. |

XMVector4AngleBetweenNormalsEst | Estimates the radian angle between two normalized 4D vectors. |

XMVector4AngleBetweenVectors | Compute the radian angle between two 4D vectors. |

XMVector4ClampLength | Clamps the length of a 4D vector to a given range. |

XMVector4ClampLengthV | Clamps the length of a 4D vector to a given range. |

XMVector4Cross | Computes the cross product between 4D vectors. |

XMVector4Dot | Computes the dot product between 4D vectors. |

XMVector4Equal | Tests whether two 4D vectors are equal. |

XMVector4EqualInt | Tests whether two 4D vectors are equal, treating each component as an unsigned integer. |

XMVector4EqualIntR | Tests whether two 4D vectors are equal, treating each component as an unsigned integer. In addition, this function returns a comparison value that can be examined using functions such as XMComparisonAllTrue. |

XMVector4EqualR | Tests whether two 4D vectors are equal. In addition, this function returns a comparison value that can be examined using functions such as XMComparisonAllTrue. |

XMVector4Greater | Tests whether one 4D vector is greater than another 4D vector. |

XMVector4GreaterOrEqual | Tests whether one 4D vector is greater-than-or-equal-to another 4D vector. |

XMVector4GreaterOrEqualR | Tests whether one 4D vector is greater-than-or-equal-to another 4D vector and returns a comparison value that can be examined using functions such as XMComparisonAllTrue. |

XMVector4GreaterR | Tests whether one 4D vector is greater than another 4D vector and returns a comparison value that can be examined using functions such as XMComparisonAllTrue. |

XMVector4InBounds | Tests whether the components of a 4D vector are within set bounds. |

XMVector4IsInfinite | Tests whether any component of a 4D vector is a NaN. |

XMVector4IsNaN | Tests whether any component of a 4D vector is a NaN. |

XMVector4Length | Computes the length of a 4D vector. |

XMVector4LengthEst | Estimates the length of a 4D vector. |

XMVector4LengthSq | Computes the square of the length of a 4D vector. |

XMVector4Less | Tests whether one 4D vector is less than another 4D vector. |

XMVector4LessOrEqual | Tests whether one 4D vector is less than or equal to another 4D vector. |

XMVector4NearEqual | Tests whether one 4D vector is near another 4D vector. |

XMVector4Normalize | Computes the normalized version of a 4D vector. |

XMVector4NormalizeEst | Estimates the normalized version of a 4D vector. |

XMVector4NotEqual | Tests whether two 4D vectors are not equal. |

XMVector4NotEqualInt | Test whether two 4D vectors are not equal, treating each component as an unsigned integer. |

XMVector4Orthogonal | Computes a vector perpendicular to a 4D vector. |

XMVector4ReciprocalLength | Computes the reciprocal of the length of a 4D vector. |

XMVector4ReciprocalLengthEst | Estimates the reciprocal of the length of a 4D vector. |

XMVector4Reflect | Reflects an incident 4D vector across a 4D normal vector. |

XMVector4Refract | Reflects an incident 4D vector across a 4D normal vector. |

XMVector4RefractV | Computes a vector perpendicular to a 4D vector. |

XMVector4Transform | Transforms a 4D vector by a matrix. |

XMVectorACos | Computes the arccosine of each component of an XMVECTOR. |

XMVectorACosEst | Estimates the arccosine of each component of an XMVECTOR. |

XMVectorASin | Computes the arcsine of each component of an XMVECTOR. |

XMVectorASinEst | Estimates the arcsine of each component of an XMVECTOR. |

XMVectorATan | Computes the arctangent of each component of an XMVECTOR. |

XMVectorATan2 | Computes the arctangent of Y/X. |

XMVectorATan2Est | Estimates the arctangent of Y/X. |

XMVectorATanEst | Estimates the arctangent of each component of an XMVECTOR. |

XMVectorAbs | Computes the absolute value of each component of an XMVECTOR. |

XMVectorAdd | Computes the sum of two vectors. |

XMVectorAddAngles | Adds two vectors representing angles. |

XMVectorAndCInt | Computes the logical AND of one vector with the negation of a second vector, treating each component as an unsigned integer. |

XMVectorAndInt | Computes the logical AND of two vectors, treating each component as an unsigned integer. |

XMVectorBaryCentric | Returns a point in Barycentric coordinates, using the specified position vectors. |

XMVectorBaryCentricV | Returns a point in Barycentric coordinates, using the specified position vectors. |

XMVectorCatmullRom | Performs a Catmull-Rom interpolation, using the specified position vectors. |

XMVectorCatmullRomV | Performs a Catmull-Rom interpolation, using the specified position vectors. |

XMVectorCeiling | Computes the ceiling of each component of an XMVECTOR. |

XMVectorClamp | Clamps the components of a vector to a specified minimum and maximum range. |

XMVectorCos | Computes the cosine of each component of an XMVECTOR. |

XMVectorCosEst | Estimates the cosine of each component of an XMVECTOR. |

XMVectorCosH | Computes the hyperbolic cosine of each component of an XMVECTOR. |

XMVectorDivide | Divides one instance of XMVECTOR by a second instance, returning the result in a third instance. |

XMVectorEqual | Performs a per-component test for equality of two vectors. |

XMVectorEqualInt | Performs a per-component test for the equality of two vectors, treating each component as an unsigned integer. |

XMVectorEqualIntR | Performs a per-component test for equality of two vectors, treating each component as an unsigned integer. In addition, this function sets a comparison value that can be examined using functions such as XMComparisonAllTrue. |

XMVectorEqualR | Performs a per-component test for equality of two vectors and sets a comparison value that can be examined using functions such as XMComparisonAllTrue. |

XMVectorExp | Computes two raised to the power for each component. |

XMVectorExp2 | Computes two raised to the power for each component. |

XMVectorFalseInt | Returns the zero (false) vector. |

XMVectorFloor | Computes the floor of each component of an XMVECTOR. |

XMVectorGetByIndex | Retrieve the value of one of the four components of an XMVECTOR Data Type containing floating-point data by index. |

XMVectorGetIntByIndex | Retrieve the value of one of the four components of an XMVECTOR Data Type containing integer data by index. |

XMVectorGetIntW | Retrieve the |

XMVectorGetIntX | Retrieve the |

XMVectorGetIntY | Retrieve the |

XMVectorGetIntZ | Retrieve the |

XMVectorGetW | Retrieve the |

XMVectorGetWPtr | Retrieve the |

XMVectorGetX | Retrieve the |

XMVectorGetXPtr | Retrieve the |

XMVectorGetY | Retrieve the |

XMVectorGetYPtr | Retrieve the |

XMVectorGetZ | Retrieve the |

XMVectorGetZPtr | Retrieve the |

XMVectorGreater | Performs a per-component test for greater-than between two vectors. |

XMVectorGreaterOrEqual | Performs a per-component test for greater-than-or-equal between two vectors. |

XMVectorGreaterOrEqualR | Performs a per-component test for greater-than-or-equal between two vectors and sets a comparison value that can be examined using functions such as XMComparisonAllTrue. |

XMVectorGreaterR | Performs a per-component test for greater-than between two vectors and sets a comparison value that can be examined using functions such as XMComparisonAllTrue. |

XMVectorHermite | Performs a Hermite spline interpolation, using the specified vectors. |

XMVectorHermiteV | Performs a Hermite spline interpolation, using the specified vectors. |

XMVectorInBounds | Tests whether the components of a given vector are within set bounds. |

XMVectorInBoundsR | Tests whether the components of a given vector are within certain bounds and sets a comparison value that can be examined using functions such as XMComparisonAllTrue. |

XMVectorInsert | Rotates a vector left by a given number of 32-bit components and insert selected elements of that result into another vector. |

XMVectorIsInfinite | Performs a per-component test for +/- infinity on a vector. |

XMVectorIsNaN | Performs a per-component NaN test on a vector. |

XMVectorLerp | Performs a linear interpolation between two vectors. |

XMVectorLerpV | Performs a linear interpolation between two vectors. |

XMVectorLess | Performs a per-component test for less-than between two vectors. |

XMVectorLessOrEqual | Performs a per-component test for less-than-or-equal between two vectors. |

XMVectorMax | Makes a per-component comparison between two vectors, and returns a vector containing the largest components. |

XMVectorMergeXY | Creates a new vector by combining the |

XMVectorMergeZW | Creates a new vector by combining the |

XMVectorMin | Makes a per-component comparison between two vectors, and returns a vector containing the smallest components. |

XMVectorMod | Computes the per-component floating-point remainder of the quotient of two vectors. |

XMVectorModAngles | Computes the per-component angle modulo 2PI. |

XMVectorMultiply | Computes the per-component product of two vectors. |

XMVectorMultiplyAdd | Computes the product of the first two vectors added to the third vector. |

XMVectorNearEqual | Performs a per-component test for equality of two vectors within a given threshold. |

XMVectorNegate | Computes the negation of a vector. |

XMVectorNegativeMultiplySubtract | Computes the difference of a third vector and the product of the first two vectors. |

XMVectorNorInt | Computes the logical NOR of two vectors, treating each component as an unsigned integer. |

XMVectorNotEqual | Performs a per-component test for the inequality of two vectors. |

XMVectorNotEqualInt | Performs a per-component test for the inequality of two vectors, treating each component as an unsigned integer. |

XMVectorOrInt | Computes the logical OR of two vectors, treating each component as an unsigned integer. |

XMVectorPermute | Permutes the components of two vectors to create a new vector. |

XMVectorPow | Computes V1 raised to the power of V2. |

XMVectorReciprocal | Estimates the per-component reciprocal of a vector. |

XMVectorReciprocalEst | Estimates the per-component reciprocal of a vector. |

XMVectorReciprocalSqrt | Computes the per-component reciprocal square root of a vector. |

XMVectorReciprocalSqrtEst | Estimates the per-component reciprocal square root of a vector. |

XMVectorReplicate | Replicates a floating-point value into all four components of a vector. |

XMVectorReplicateInt | Replicates an integer value into all four components of a vector. |

XMVectorReplicatePtr | Replicates a floating-point value referenced by pointer into all four components of a vector. |

XMVectorRotateLeft | Rotates the vector left by a given number of 32-bit elements. |

XMVectorRotateRight | Rotates the vector right by a given number of 32-bit elements. |

XMVectorRound | Rounds each component of a vector to the nearest even integer (known as "Bankers Rounding"). |

XMVectorSaturate | Saturates each component of a vector to the range 0.0f to 1.0f. |

XMVectorScale | Scalar multiplies a vector by a floating-point value. |

XMVectorSelect | Performs a per-component selection between two input vectors and returns the resulting vector. |

XMVectorSelectControl | Defines a control vector for use in XMVectorSelect. |

XMVectorSet | Creates a vector using four floating-point values. |

XMVectorSetBinaryConstant | Creates a vector, each of whose components is either |

XMVectorSetByIndex | Use a floating-point object to set the value of one of the four components of an XMVECTOR Data Type containing integer data referenced by an index. |

XMVectorSetInt | Creates a vector with unsigned integer components. |

XMVectorSetIntByIndex | Use an integer instance to set the value of one of the four components of an XMVECTOR Data Type containing integer data referenced by an index. |

XMVectorSetIntW | Set the value of the |

XMVectorSetIntX | Set the value of the |

XMVectorSetIntY | Set the value of the |

XMVectorSetIntZ | Set the value of the |

XMVectorSetW | Set the value of the |

XMVectorSetX | Set the value of the |

XMVectorSetY | Set the value of the |

XMVectorSetZ | Set the value of the |

XMVectorShiftLeft | Shifts a vector left by a given number of 32-bit elements, filling the vacated elements with elements from a second vector. |

XMVectorSin | Computes the sine of each component of an XMVECTOR. |

XMVectorSinCos | Computes the sine and cosine of each component of an XMVECTOR. |

XMVectorSinCosEst | Estimates the sine and cosine of each component of an XMVECTOR. |

XMVectorSinEst | Estimates the sine of each component of an XMVECTOR. |

XMVectorSinH | Computes the hyperbolic sine of each component of an XMVECTOR. |

XMVectorSplatConstant | Creates a vector with identical floating-point components. Each component is a constant divided by two raised to an integer exponent. |

XMVectorSplatConstantInt | Creates a vector with identical integer components. |

XMVectorSplatEpsilon | Returns a vector, each of whose components are epsilon ( |

XMVectorSplatInfinity | Returns a vector, each of whose components are infinity ( |

XMVectorSplatOne | Returns a vector, each of whose components are one. |

XMVectorSplatQNaN | Returns a vector, each of whose components are QNaN ( |

XMVectorSplatSignMask | Returns a vector, each of whose components are the sign mask ( |

XMVectorSplatW | Replicates the |

XMVectorSplatX | Replicates the |

XMVectorSplatY | Replicates the |

XMVectorSplatZ | Replicates the |

XMVectorSqrt | Computes the per-component square root of a vector. |

XMVectorSqrtEst | Estimates the per-component square root of a vector. |

XMVectorSubtract | Computes the difference of two vectors. |

XMVectorSubtractAngles | Subtracts two vectors representing angles. |

XMVectorSum | Computes the horizontal sum of the components of an XMVECTOR. The horizontal sum is the result of adding each component in the vector together. |

XMVectorSwizzle | Swizzles a vector. |

XMVectorTan | Computes the tangent of each component of an XMVECTOR. |

XMVectorTanEst | Estimates the tangent of each component of an XMVECTOR. |

XMVectorTanH | Computes the hyperbolic tangent of each component of an XMVECTOR. |

XMVectorTrueInt | Returns a vector, each of whose components represents true ( |

XMVectorTruncate | Rounds each component of a vector to the nearest integer value in the direction of zero. |

XMVectorXorInt | Computes the logical XOR of two vectors, treating each component as an unsigned integer. |

XMVectorZero | Creates the zero vector. |

## Type Definitions

CXMMATRIX | |

CXMVECTOR | |

FXMMATRIX | |

FXMVECTOR | |

GXMVECTOR | |

HALF | A 16-bit floating point number consisting of a sign bit, a 5-bit biased exponent, and a 10-bit mantissa. |

HXMVECTOR | |

XMVECTOR | |

XM_PERMUTE_0W | |

XM_PERMUTE_0X | |

XM_PERMUTE_0Y | |

XM_PERMUTE_0Z | |

XM_PERMUTE_1W | |

XM_PERMUTE_1X | |

XM_PERMUTE_1Y | |

XM_PERMUTE_1Z | |

XM_SWIZZLE_W | |

XM_SWIZZLE_X | |

XM_SWIZZLE_Y | |

XM_SWIZZLE_Z |

## Unions

XMMATRIX | |

XMVECTORF32 | |

XMVECTORI32 | |

XMVECTORU8 | |

XMVECTORU32 |