# List of Functions Related to Fixed Decimals

## Data Types

### Fixed Decimal Type

fx16 |  | This type represents a signed fixed point decimal with a 3-bit integer and 12-bit fraction.
fx32 |  | This type represents a signed fixed point decimal with a 19-bit integer and 12-bit fraction.
fx64 |  | This type represents a signed fixed point decimal with a 51-bit integer and 12-bit fraction.
fx64c |  | This type represents a signed fixed point decimal with a 31-bit integer and 32-bit fraction.

### Matrix/Vector Types

MtxFx22 |  | This is a 2x2 matrix with elements of type fx32.
MtxFx33 |  | This is a 3x3 matrix with elements of type fx32.
MtxFx43 |  | This is a 4x3 matrix with elements of type fx32.
MtxFx44 |  | This is a 4x4 matrix with elements of type fx32.
VecFx32 |  | This is a three-dimensional vector with elements of type fx32.
VecFx16 |  | This is a three-dimensional vector with elements of type fx16.

## Initialization

FX_Init |  | This initializes the fixed-point decimal APIs.

## Calculation

### Calculation of Fixed Decimal

FX_Whole |  | Returns results as integers by discarding values after the decimal point.
FX_Floor |  | Discards values after the decimal point.
FX_Modf |  | Separates fx32 into integer and decimal portions.
FX_Mul |  | Performs multiplication calculations with other fx32 types.
FX_Mul32x64c |  | Performs multiplication calculations of fx32 and fx64c types.
FX_Div |  | Performs division calculations with other fx32 types.
FX_DivFx64c |  | Performs division calculations with other fx32 types. Returns an fx64c value.
FX_Mod |  | Returns the remainder of dividing two fx32 types.
FX_Sqrt |  | Obtains a square root of type fx32.
FX_InvSqrt |  | Obtains the reciprocal of a square root of type fx32.
FX_Inv |  | Obtains a reciprocal number of type fx32 and returns an fx32 value.
FX_InvFx64c |  | Obtains a reciprocal number of type fx32 and returns an fx64c value.
FX_SinIdx |  | Calculates a sine. Receives a 16-bit index and returns the result as type fx16 (table lookup).
FX_CosIdx |  | Calculates a cosine. Receives a 16-bit index and returns the result as type fx16 (table lookup).
FX_SinFx64c |  | Calculates a sine. Receives radians as fx32 type and returns the result as type fx64c (when precision is required).
FX_CosFx64c |  | Calculates a cosine. Receives radians as type fx32 and returns the result as type fx64c (when precision is required).
FX_AtanIdx |  | Calculates the arctangent. Receives `fx32` type values and returns results as `u16` type (table lookup).
FX_Atan2Idx |  | Calculates the arctangent. Receives (y, x) as `fx32` type values and returns results as `u16` type (table lookup).
FX_Atan |  | Calculates the arctangent. Receives `fx32` type values and returns results as `fx16` type (in units of radian) (table lookup).
FX_Atan2 |  | Calculates the arctangent. Receives (y, x) as `fx32` type values and returns results as `fx16` type (in units of radian) (table lookup).
FX_AsinIdx |  | Calculates the arcsine. Receives `fx32` type values and returns results as `u16` type (table lookup).
FX_AcosIdx |  | Calculates the arccosine. Receives `fx32` type values and returns results as `u16` type (table lookup).

### Calculation of Fixed Decimal (Asynchronous)

FX_DivAsync |  | Performs asynchronous division.
FX_DivAsyncImm |  | Performs asynchronous division. It does not set the division mode.
FX_GetDivResultFx64c |  | Obtains the result of division as an fx64c type.
FX_GetDivResult |  | Obtains the result of division as a fx32 type.
FX_InvAsync |  | Performs asynchronous reciprocal calculations.
FX_InvAsyncImm |  | Performs asynchronous reciprocal calculations. It does not set the division mode.
FX_GetInvResultFx64c |  | Same as FX_GetDivResultFx64c.
FX_GetInvResult |  | Same as FX_GetDivResult.
FX_SqrtAsync |  | Performs asynchronous square root calculations.
FX_SqrtAsyncImm |  | Performs asynchronous square root calculations. Does not set the square root calculation mode.
FX_GetSqrtResult |  | Obtains the result of a square root calculation as a fx32 type.

### 2x2 Matrix Calculation

MTX_Identity22 |  | Sets the identity matrix.
MTX_Transpose22 |  | Sets the transposition matrix.
MTX_Scale22 |  | Sets the scale matrix.
MTX_ScaleApply22 |  | Apply the scale matrix from left.
MTX_Rot22 |  | Sets the rotation matrix
MTX_Inverse22 |  | Finds the inverse matrix.
MTX_Concat22 |  | Performs matrix multiplication.
MTX_Copy22 |  | Copies a matrix.

### 3x3 Matrix Calculation

MTX_Identity33 |  | Sets the identity matrix.
MTX_Copy33To43 |  | Copies a matrix.
MTX_Copy33To44 |  | Copies a matrix.
MTX_Transpose33 |  | Sets the transposition matrix.
MTX_Scale33 |  | Sets the scale matrix.
MTX_ScaleApply33 |  | Apply the scale matrix from left.
MTX_RotX33 |  | Sets the rotation matrix for the X-axis.
MTX_RotY33 |  | Sets the rotation matrix for the Y-axis.
MTX_RotZ33 |  | Sets the rotation matrix for the Z-axis.
MTX_RotAxis33 |  | Sets the rotation matrix for any axis.
MTX_Inverse33 |  | Finds the inverse matrix.
MTX_Concat33 |  | Performs matrix multiplication.
MTX_MultVec33 |  | Applies the matrix to a vector from left.
MTX_Copy33 |  | Copies a matrix.

### 4x3 Matrix Calculation

MTX_Identity43 |  | Sets the identity matrix.
MTX_Copy43To33 |  | Copies a matrix.
MTX_Copy43To44 |  | Copies a matrix.
MTX_Transpose43 |  | Sets the transposition matrix.
MTX_Scale43 |  | Sets the scale matrix.
MTX_ScaleApply43 |  | Apply the scale matrix from left.
MTX_RotX43 |  | Sets the rotation matrix for the X-axis.
MTX_RotY43 |  | Sets the rotation matrix for the Y-axis.
MTX_RotZ43 |  | Sets the rotation matrix for the Z-axis.
MTX_RotAxis43 |  | Sets the rotation matrix for any axis.
MTX_Inverse43 |  | Finds the inverse matrix.
MTX_Concat43 |  | Performs matrix multiplication.
MTX_MultVec43 |  | Applies the matrix to a vector from left.
MTX_TransApply43 |  | Applies from left a matrix with the translation matrix.
MTX_LookAt |  | Sets the camera matrix to the matrix.
MTX_Copy43 |  | Copies a matrix.

### 4x4 Matrix Calculation

MTX_Identity44 |  | Sets the identity matrix.
MTX_Copy44To33 |  | Copies a matrix.
MTX_Copy44To43 |  | Copies a matrix.
MTX_Transpose44 |  | Sets the transposition matrix.
MTX_Scale44 |  | Sets the scale matrix.
MTX_ScaleApply44 |  | Apply the scale matrix from left.
MTX_RotX44 |  | Sets the rotation matrix for the X-axis.
MTX_RotY44 |  | Sets the rotation matrix for the Y-axis.
MTX_RotZ44 |  | Sets the rotation matrix for the Z-axis.
MTX_RotAxis44 |  | Sets the rotation matrix for any axis.
MTX_Concat44 |  | Performs matrix multiplication.
MTX_TransApply44 |  | Applies from left a matrix with the translation matrix.
MTX_Frustum |  | Sets the projection matrix.
MTX_Perspective |  | Sets the projection matrix.
MTX_Ortho |  | Sets the projection matrix.
MTX_FrustumW |  | Sets the projection matrix. (With scaleW parameters.)
MTX_PerspectiveW |  | Sets the projection matrix (with the scaleW parameter)
MTX_OrthoW |  | Sets the projection matrix. (With scaleW parameters.)
MTX_Copy44 |  | Copies a matrix.

### Vector Calculation

VEC_Set |  | Sets up values in fx32 type 3-dimensional vectors.
VEC_Add |  | Adds two fx32 type 3-dimensional vectors.
VEC_Subtract |  | Subtracts two fx32 type 3-dimensional vectors.
VEC_DotProduct |  | Calculates the dot product of fx32 type 3-dimensional vectors.
VEC_CrossProduct |  | Calculates the cross product of fx32 type 3-dimensional vectors.
VEC_Mag |  | Calculates the magnitude of a fx32 type 3-dimensional vector.
VEC_Distance |  | Calculates the distance between two fx32 type 3-dimensional vectors.
VEC_Normalize |  | Normalizes a fx32 type 3-dimensional vector.
VEC_MultAdd |  | Scalar multiplies a fx32 type 3-dimensional vector and then adds a fx32 type 3-dimensional vector.
VEC_MultSubtract |  | Scalar multiplies a fx32 type 3-dimensional vector and then subtracts a fx32 type 3-dimensional vector.
VEC_Fx16Set |  | Sets up values in `fx16` type 3-dimensional vectors.
VEC_Fx16Add |  | Adds two fx16 type 3-dimensional vectors.
VEC_Fx16Subtract |  | Subtracts two fx16 type 3-dimensional vectors.
VEC_Fx16DotProduct |  | Calculates the dot product of fx16 type 3-dimensional vectors.
VEC_Fx16CrossProduct |  | Calculates the cross product of fx16 type 3-dimensional vectors.
VEC_Fx16Mag |  | Calculates the magnitude of a fx16 type 3-dimensional vector.
VEC_Fx16Distance |  | Calculates the distance between two fx16 type 3-dimensional vectors.
VEC_Fx16Normalize |  | Normalizes a fx16 type 3-dimensional vector.

### Other

FX_DivS32 |  | Division with s32 types.
FX_ModS32 |  | Calculates the remainder from s32 type division.

## Macros

fx16 Type Macros

fx32 Type Macros

fx64 Type Macros

fx64c Type Macros

## Constants

fx16 Type Constant Macros

fx32 Type Constant Macros

fx64c Type Constant Macros

CONFIDENTIAL