# List of API 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 fx32 type 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).

### 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 transpose of a matrix.
MTX_Scale22 | Sets the scale matrix.
MTX_ScaleApply22 | Apply the scale matrix from left.
MTX_Rot22 | Sets the rotation matrix
MTX_Inverse22 | Calculates 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 transpose of a 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 | Calculates 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 transpose of a 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 | Calculates 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 transpose of a 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 scale W parameters)
MTX_PerspectiveW | Sets the projection matrix (with the scaleW parameter)
MTX_OrthoW | Sets the projection matrix. (with scale W 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