# Matrix operations

Matrix operations for 4x4 matrices.

### f_matrix_clearf

void f_matrix_clearf(float *matrix);

Description: Clears a 4x4 32 bit float matrix to an identity matrix.

### f_matrix_cleard

void f_matrix_cleard(double *matrix);

Description: Clears a 4x4 64 bit double matrix to an identity matrix.

### f_transform3f

void f_transform3f(float *output, const float *matrix, const float x, const float y, const float z);

Description: Transforms a 3D point with a 4x4 32 bit float matrix.

### f_transform3d

void f_transform3d(double *out, const double *matrix, const double x, const double y, const double z);

Description: Transforms a 3D point with a 4x4 64 bit double matrix.

### f_transform4f

void f_transform4f(float *output, const float *matrix, const float x, const float y, const float z, const double w);

Description: Transforms a 4D point with a 4x4 32 bit float matrix.

### f_transform4d

void f_transform4d(double *out, const double *matrix, const double x, const double y, const double z, const double w);

Description: Transforms a 4D point with a 4x4 64 bit double matrix.

### f_transforminv3f

void f_transforminv3f(float *out, const float *matrix, float x, float y, float z);

### f_transforminv3d

void f_transforminv3d(double *out, const double *matrix, double x, double y, double z);

### f_transforminv_scaled3f

void f_transforminv_scaled3f(float *output, const float *matrix, float x, float y, float z);

### f_matrix_multiplyf

void f_matrix_multiplyf(float *output, const float *a, const float *b);

Description: Multiplies two 4x4 32 bit float matrices.

### f_matrix_multiplyd

void f_matrix_multiplyd(double *output, const double *a, const double *b);

Description: Multiplies two 4x4 64 bit double matrices.

### f_matrix_reverse4f

void f_matrix_reverse4f(float *output, const float *matrix);

Description: Reverces a 4x4 32 bit float matrix.

### f_matrix_reverse4d

void f_matrix_reverse4d(double *output, const double *matrix);

Description: Reverces a 4x4 64 bit double matrix.

### f_quaternion_to_matrixf

void f_quaternion_to_matrixf(float *matrix, float x, float y, float z, float w);

Description: Converts a 32 bit float quaternoion to a 4x4 32 bit float matrix.

### f_quaternion_to_matrixd

void f_quaternion_to_matrixd(double *matrix, double x, double y, double z, double w);

Description: Converts a 64 bit double quaternoion to a 4x4 64 bit double matrix.

### f_matrix_to_quaternionf

void f_matrix_to_quaternionf(float *quaternion, float *matrix);

Description: Converts a 4x4 32 bit float matrix to a 32 bit float quaternoion.

### f_matrix_to_quaterniond

void f_matrix_to_quaterniond(double *quaternion, double *matrix);

Description: Converts a 4x4 64 bit double matrix to a 64 bit double quaternoion.

### f_matrix_to_pos_quaternion_scalef

void f_matrix_to_pos_quaternion_scalef(float *matrix, float *pos, float *quaternion, float *scale);

Description: Converts a 4x4 32 bit float matrix to a 32 bit float position, scale and quaternoion.

### f_matrix_to_pos_quaternion_scaled

void f_matrix_to_pos_quaternion_scaled(double *matrix, double *pos, double *quaternion, double *scale);

Description: Converts a 4x4 64 bit double matrix to a 64 bit double position, scale and quaternoion.

### f_pos_quaternion_scale_to_matrixf

void f_pos_quaternion_scale_to_matrixf(float *pos, float *quaternion, float *scale, float *matrix);

Description: Converts a 32 bit float position, scale and quaternoion to a 4x4 32 bit float matrix.

### f_pos_quaternion_scale_to_matrixd

void f_pos_quaternion_scale_to_matrixd(double *pos, double *quaternion, double *scale, double *matrix);

Description: Converts a 64 bit double position, scale and quaternoion to a 4x4 64 bit double matrix.

### f_pos_quaternion_scale_to_matrix_invf

void f_pos_quaternion_scale_to_matrix_invf(float *pos, float *quaternion, float *scale, float *matrix);

Description: Converts a 32 bit float position, scale and quaternoion to a 4x4 32 bit float matrix.

### f_pos_quaternion_scale_to_matrix_invd

void f_pos_quaternion_scale_to_matrix_invd(double *pos, double *quaternion, double *scale, double *matrix);

Description: Converts a 64 bit double position, scale and quaternoion to a 4x4 64 bit double matrix.

### f_matrix_rotatef

void f_matrix_rotatef(float *matrix, float angle, float x, float y, float z);

Description: Generates a 4x4 32 bit float matrix rotating agnle number of degrees around the axis described by x, y, and z

### f_matrix_rotated

void f_matrix_rotated(double *matrix, double angle, double x, double y, double z);

Description: Generates a 4x4 64 bit float matrix rotating agnle number of degrees around the axis described by x, y, and z