matvec.h File Reference

Go to the source code of this file.

Functions

void mat2_rmul (double *A, double const *B)
 In-place right matrix-matrix multiplication for 2x2 matrices. More...
 
void mat2_lmul (double const *A, double *B)
 In-place left matrix-matrix multiplication for 2x2 matrices. More...
 
void mat2_vfms (double *C, double const *A, double const *B)
 Fused multiply-subtract for 2x2 matrices. More...
 
void mat2_inv (double *invA, double const *A)
 Matrix inverse for 2x2 matrix. More...
 
void mat4_rmul (double *A, double const *B)
 In-place right matrix-matrix multiplication for 4x4 matrices. More...
 
void mat4_lmul (double const *A, double *B)
 In-place left matrix-matrix multiplication for 4x4 matrices. More...
 
void mat4_vfms (double *C, double const *A, double const *B)
 Fused multiply-subtract for 4x4 matrices. More...
 
void mat4_inv (double *invA, const double *A)
 Matrix inverse for 4x4 matrix. More...
 
void mat4_vinv (double *invA, double const *A)
 Matrix inverse for 4x4 matrix. More...
 
void mat4_inv2 (float *A)
 Matrix inverse for 4x4 matrix. More...
 

Function Documentation

◆ mat2_inv()

void mat2_inv ( double *  invA,
double const *  A 
)

Matrix inverse for 2x2 matrix.

Parameters
invAPointer to inverse matrix.
APointer to input matrix.

◆ mat2_lmul()

void mat2_lmul ( double const *  A,
double *  B 
)

In-place left matrix-matrix multiplication for 2x2 matrices.

Parameters
APointer to left input matrix.
BPointer to right input and output matrix.

◆ mat2_rmul()

void mat2_rmul ( double *  A,
double const *  B 
)

In-place right matrix-matrix multiplication for 2x2 matrices.

Parameters
APointer to left input and output matrix.
BPointer to right input matrix.

◆ mat2_vfms()

void mat2_vfms ( double *  C,
double const *  A,
double const *  B 
)

Fused multiply-subtract for 2x2 matrices.

Parameters
CPointer to output matrix.
APointer to left input matrix.
BPointer to right input matrix.

◆ mat4_inv()

void mat4_inv ( double *  invA,
const double *  A 
)

Matrix inverse for 4x4 matrix.

Note
This is a generic implementation without pivoting hardcoded for 4x4 matrices. Primary purpose is to confirm the avx2 implementations below
Parameters
invAPointer to inverse matrix.
APointer to input matrix.

◆ mat4_inv2()

void mat4_inv2 ( float *  A)

Matrix inverse for 4x4 matrix.

Note
This is a slightly modifed version of Intel's SSE single-precision 4x4 matrix inverse using Cramer's rule.
Parameters
invAPointer to inverse matrix.
APointer to input matrix.

◆ mat4_lmul()

void mat4_lmul ( double const *  A,
double *  B 
)

In-place left matrix-matrix multiplication for 4x4 matrices.

Note
Function is optimized with avx2 intrinsics
Parameters
APointer to left input matrix.
BPointer to right input and output matrix.

◆ mat4_rmul()

void mat4_rmul ( double *  A,
double const *  B 
)

In-place right matrix-matrix multiplication for 4x4 matrices.

Note
Function is optimized with avx2 intrinsics
Parameters
APointer to left input and output matrix.
BPointer to right input matrix.

◆ mat4_vfms()

void mat4_vfms ( double *  C,
double const *  A,
double const *  B 
)

Fused multiply-subtract for 4x4 matrices.

Note
Function is optimized with avx2 intrinsics
Parameters
CPointer to output matrix.
APointer to left input matrix.
BPointer to right input matrix.

◆ mat4_vinv()

void mat4_vinv ( double *  invA,
double const *  A 
)

Matrix inverse for 4x4 matrix.

Note
This is an avx2 double-precision translation of Intel's SSE single-precision 4x4 matrix inverse using Cramer's rule.
Parameters
invAPointer to inverse matrix.
APointer to input matrix.