#include <math.h>
#include <gandalf/linalg/2x4matrix.h>
#include <gandalf/common/misc_error.h>
#include <gandalf/common/endian_io.h>
Defines | |
#define | GAN_MATTYPE Gan_Matrix24 |
#define | GAN_MATRIX_TYPE Gan_Matrix |
#define | GAN_SQUMATRIX_TYPE Gan_SquMatrix |
#define | GAN_VECTOR_TYPE Gan_Vector |
#define | GAN_MAT_ELEMENT_TYPE GAN_DOUBLE |
#define | GAN_REALTYPE double |
#define | GAN_FWRITE_LENDIAN gan_fwrite_lendian_f64 |
#define | GAN_FREAD_LENDIAN gan_fread_lendian_f64 |
#define | GAN_VECTYPE1 Gan_Vector2 |
#define | GAN_VECTYPE2 Gan_Vector4 |
#define | GAN_MATTYPEL Gan_Matrix22 |
#define | GAN_MATTYPER Gan_Matrix44 |
#define | GAN_SQUMATTYPEL Gan_SquMatrix22 |
#define | GAN_SQUMATTYPER Gan_SquMatrix44 |
#define | GAN_MAT_FPRINT gan_mat24_fprint |
#define | GAN_MAT_PRINT gan_mat24_print |
#define | GAN_MAT_FSCANF gan_mat24_fscanf |
#define | GAN_MAT_FWRITE gan_mat24_fwrite |
#define | GAN_MAT_FREAD gan_mat24_fread |
#define | GAN_MAT_ZERO_Q gan_mat24_zero_q |
#define | GAN_MAT_ZERO_S gan_mat24_zero_s |
#define | GAN_MAT_COPY_Q gan_mat24_copy_q |
#define | GAN_MAT_COPY_S gan_mat24_copy_s |
#define | GAN_MAT_SCALE_Q gan_mat24_scale_q |
#define | GAN_MAT_SCALE_I gan_mat24_scale_i |
#define | GAN_MAT_SCALE_S gan_mat24_scale_s |
#define | GAN_MAT_DIVIDE_Q gan_mat24_divide_q |
#define | GAN_MAT_DIVIDE_I gan_mat24_divide_i |
#define | GAN_MAT_DIVIDE_S gan_mat24_divide_s |
#define | GAN_MAT_NEGATE_Q gan_mat24_negate_q |
#define | GAN_MAT_NEGATE_I gan_mat24_negate_i |
#define | GAN_MAT_NEGATE_S gan_mat24_negate_s |
#define | GAN_MAT_UNIT_Q gan_mat24_unit_q |
#define | GAN_MAT_UNIT_I gan_mat24_unit_i |
#define | GAN_MAT_UNIT_S gan_mat24_unit_s |
#define | GAN_MAT_ADD_Q gan_mat24_add_q |
#define | GAN_MAT_ADD_I1 gan_mat24_add_i1 |
#define | GAN_MAT_ADD_I2 gan_mat24_add_i2 |
#define | GAN_MAT_INCREMENT gan_mat24_increment |
#define | GAN_MAT_ADD_S gan_mat24_add_s |
#define | GAN_MAT_SUB_Q gan_mat24_sub_q |
#define | GAN_MAT_SUB_I1 gan_mat24_sub_i1 |
#define | GAN_MAT_SUB_I2 gan_mat24_sub_i2 |
#define | GAN_MAT_DECREMENT gan_mat24_decrement |
#define | GAN_MAT_SUB_S gan_mat24_sub_s |
#define | GAN_VEC_OUTER_Q gan_vec24_outer_q |
#define | GAN_VEC_OUTER_S gan_vec24_outer_s |
#define | GAN_MAT_MULTV_Q gan_mat24_multv4_q |
#define | GAN_MAT_MULTV_S gan_mat24_multv4_s |
#define | GAN_MATT_MULTV_Q gan_mat24T_multv2_q |
#define | GAN_MATT_MULTV_S gan_mat24T_multv2_s |
#define | GAN_MAT_LMULTM_Q gan_mat24_lmultm22_q |
#define | GAN_MAT_LMULTM_S gan_mat24_lmultm22_s |
#define | GAN_MAT_LMULTMT_Q gan_mat24_lmultm22T_q |
#define | GAN_MAT_LMULTMT_S gan_mat24_lmultm22T_s |
#define | GAN_MAT_RMULTM_Q gan_mat24_rmultm44_q |
#define | GAN_MAT_RMULTM_S gan_mat24_rmultm44_s |
#define | GAN_MAT_RMULTMT_Q gan_mat24_rmultm44T_q |
#define | GAN_MAT_RMULTMT_S gan_mat24_rmultm44T_s |
#define | GAN_MAT_LMULTMT_SYM_Q gan_mat24_lmultm24T_sym_q |
#define | GAN_MAT_LMULTMT_SYM_S gan_mat24_lmultm24T_sym_s |
#define | GAN_MAT_RMULTMT_SYM_Q gan_mat24_rmultm24T_sym_q |
#define | GAN_MAT_RMULTMT_SYM_S gan_mat24_rmultm24T_sym_s |
#define | GAN_MAT_SLMULTT_Q gan_mat24_slmultT_q |
#define | GAN_MAT_SLMULTT_S gan_mat24_slmultT_s |
#define | GAN_MAT_SRMULTT_Q gan_mat24_srmultT_q |
#define | GAN_MAT_SRMULTT_S gan_mat24_srmultT_s |
#define | GAN_MAT_LMULTS_Q gan_mat24_lmults22_q |
#define | GAN_MAT_LMULTS_S gan_mat24_lmults22_s |
#define | GAN_MAT_RMULTS_Q gan_mat24_rmults44_q |
#define | GAN_MAT_RMULTS_S gan_mat24_rmults44_s |
#define | GAN_SYMMATL_LRMULT_Q gan_symmat22_lrmultm24T_q |
#define | GAN_SYMMATL_LRMULT_S gan_symmat22_lrmultm24T_s |
#define | GAN_SYMMATR_LRMULT_Q gan_symmat44_lrmultm24_q |
#define | GAN_SYMMATR_LRMULT_S gan_symmat44_lrmultm24_s |
#define | GAN_MAT_LMULTL_Q gan_mat24_lmultl22_q |
#define | GAN_MAT_LMULTL_S gan_mat24_lmultl22_s |
#define | GAN_MAT_LMULTL_I gan_mat24_lmultl22_i |
#define | GAN_MAT_LMULTLI_Q gan_mat24_lmultl22I_q |
#define | GAN_MAT_LMULTLI_S gan_mat24_lmultl22I_s |
#define | GAN_MAT_LMULTLI_I gan_mat24_lmultl22I_i |
#define | GAN_MAT_LMULTLT_Q gan_mat24_lmultl22T_q |
#define | GAN_MAT_LMULTLT_S gan_mat24_lmultl22T_s |
#define | GAN_MAT_LMULTLT_I gan_mat24_lmultl22T_i |
#define | GAN_MAT_LMULTLIT_Q gan_mat24_lmultl22IT_q |
#define | GAN_MAT_LMULTLIT_S gan_mat24_lmultl22IT_s |
#define | GAN_MAT_LMULTLIT_I gan_mat24_lmultl22IT_i |
#define | GAN_MAT_RMULTL_Q gan_mat24_rmultl44_q |
#define | GAN_MAT_RMULTL_S gan_mat24_rmultl44_s |
#define | GAN_MAT_RMULTL_I gan_mat24_rmultl44_i |
#define | GAN_MAT_RMULTLI_Q gan_mat24_rmultl44I_q |
#define | GAN_MAT_RMULTLI_S gan_mat24_rmultl44I_s |
#define | GAN_MAT_RMULTLI_I gan_mat24_rmultl44I_i |
#define | GAN_MAT_RMULTLT_Q gan_mat24_rmultl44T_q |
#define | GAN_MAT_RMULTLT_S gan_mat24_rmultl44T_s |
#define | GAN_MAT_RMULTLT_I gan_mat24_rmultl44T_i |
#define | GAN_MAT_RMULTLIT_Q gan_mat24_rmultl44IT_q |
#define | GAN_MAT_RMULTLIT_S gan_mat24_rmultl44IT_s |
#define | GAN_MAT_RMULTLIT_I gan_mat24_rmultl44IT_i |
#define | GAN_MAT_SUMSQR_Q gan_mat24_sumsqr_q |
#define | GAN_MAT_SUMSQR_S gan_mat24_sumsqr_s |
#define | GAN_MAT_FNORM_Q gan_mat24_Fnorm_q |
#define | GAN_MAT_FNORM_S gan_mat24_Fnorm_s |
#define | GAN_MAT_FROM_MAT_Q gan_mat24_from_mat_q |
#define | GAN_MAT_FROM_MAT_S gan_mat24_from_mat_s |
Functions | |
Gan_Bool | gan_mat24_fprint (FILE *fp, const Gan_Matrix24 *A, const char *prefix, int indent, const char *fmt) |
Print 2x4 matrix to file. | |
Gan_Bool | gan_mat24_fscanf (FILE *fp, Gan_Matrix24 *A, char *prefix, int prefix_len) |
Read 2x4 matrix from file. | |
Gan_Matrix24 | gan_mat24_fill_s (double XX, double XY, double XZ, double XW, double YX, double YY, double YZ, double YW) |
Fill 2x4 matrix with values. | |
Gan_Vector2 | gan_mat24_multv3h_s (const Gan_Matrix24 *A, const Gan_Vector3 *p, double h) |
Multiply 2x4 matrix by homogeneous 3-vector. | |
void | gan_mat24_get_rows_s (const Gan_Matrix24 *A, Gan_Vector4 *p, Gan_Vector4 *q) |
Extract rows of 2x4 matrix. | |
void | gan_mat24_get_cols_s (const Gan_Matrix24 *A, Gan_Vector2 *p, Gan_Vector2 *q, Gan_Vector2 *r, Gan_Vector2 *s) |
Extract columns of 2x4 matrix. | |
Gan_Matrix24 * | gan_mat24_from_mat_q (const Gan_Matrix *A, Gan_Matrix24 *B) |
Convert generic rectangular matrix to 2x4 matrix structure. | |
Gan_Bool | gan_mat24_print (const Gan_Matrix24 *A, const char *prefix, int indent, const char *fmt) |
Print fixed size matrix to standard output. | |
Gan_Bool | gan_mat24_fwrite (FILE *fp, const Gan_Matrix24 *A, gan_uint32 magic_number) |
Write fixed size matrix to file stream. | |
Gan_Bool | gan_mat24_fread (FILE *fp, Gan_Matrix24 *A, gan_uint32 *magic_number) |
Read fixed size matrix from file stream. | |
Gan_Matrix24 | gan_mat24_zero_s (void) |
Set fixed size matrix to zero. | |
Gan_Matrix24 | gan_mat24_copy_s (const Gan_Matrix24 *A) |
Copy fixed size matrix. | |
Gan_Matrix24 | gan_mat24_scale_s (const Gan_Matrix24 *A, double a) |
Scale fixed size matrix. | |
Gan_Matrix24 | gan_mat24_divide_s (const Gan_Matrix24 *A, double a) |
Divide fixed size matrix by scalar. | |
Gan_Matrix24 | gan_mat24_negate_s (const Gan_Matrix24 *A) |
Negate fixed size matrix. | |
Gan_Matrix24 * | gan_mat24_unit_q (Gan_Matrix24 *A, Gan_Matrix24 *B) |
Scale matrix to unit norm. | |
Gan_Matrix24 | gan_mat24_unit_s (const Gan_Matrix24 *A) |
Scale matrix to unit norm. | |
Gan_Matrix24 | gan_mat24_add_s (const Gan_Matrix24 *A, const Gan_Matrix24 *B) |
Add two fixed size matrices. | |
Gan_Matrix24 | gan_mat24_sub_s (const Gan_Matrix24 *A, const Gan_Matrix24 *B) |
Subtract two fixed size matrices. | |
Gan_Matrix24 | gan_vec24_outer_s (const Gan_Vector2 *p, const Gan_Vector4 *q) |
Compute the outer product of two fixed size vectors. | |
Gan_Vector2 | gan_mat24_multv4_s (const Gan_Matrix24 *A, const Gan_Vector4 *p) |
Matrix/vector product. | |
Gan_Vector4 | gan_mat24T_multv2_s (const Gan_Matrix24 *A, const Gan_Vector2 *p) |
Matrix/vector product with the matrix transposed. | |
Gan_Matrix24 | gan_mat24_lmultm22_s (const Gan_Matrix24 *A, const Gan_Matrix22 *B) |
Left-multiply a matrix by another matrix. | |
Gan_Matrix24 | gan_mat24_lmultm22T_s (const Gan_Matrix24 *A, const Gan_Matrix22 *B) |
Left-multiply a matrix by the transpose of another matrix. | |
Gan_Matrix24 | gan_mat24_rmultm44_s (const Gan_Matrix24 *A, const Gan_Matrix44 *B) |
Right-multiply a matrix by another matrix. | |
Gan_Matrix24 | gan_mat24_rmultm44T_s (const Gan_Matrix24 *A, const Gan_Matrix44 *B) |
Right-multiply a matrix by the transpose of another matrix. | |
Gan_SquMatrix44 | gan_mat24_lmultm24T_sym_s (const Gan_Matrix24 *A, const Gan_Matrix24 *B) |
Matrix product producing a symmetric matrix. | |
Gan_SquMatrix22 | gan_mat24_rmultm24T_sym_s (const Gan_Matrix24 *A, const Gan_Matrix24 *B) |
Matrix product producing a symmetric matrix. | |
Gan_SquMatrix44 | gan_mat24_slmultT_s (const Gan_Matrix24 *A) |
Left-multiply a matrix by its own transpose, producing a symmetric matrix. | |
Gan_SquMatrix22 | gan_mat24_srmultT_s (const Gan_Matrix24 *A) |
Right-multiply a matrix by its own transpose, producing a symmetric matrix. | |
Gan_Matrix24 | gan_mat24_lmults22_s (const Gan_Matrix24 *A, const Gan_SquMatrix22 *B) |
Left-multiply a matrix by a symmetric matrix. | |
Gan_Matrix24 | gan_mat24_rmults44_s (const Gan_Matrix24 *A, const Gan_SquMatrix44 *B) |
Right-multiply a matrix by a symmetric matrix. | |
Gan_SquMatrix44 | gan_symmat22_lrmultm24T_s (const Gan_SquMatrix22 *A, const Gan_Matrix24 *B, Gan_Matrix24 *C) |
Matrix triple product involving symmetric matrices. | |
Gan_SquMatrix22 | gan_symmat44_lrmultm24_s (const Gan_SquMatrix44 *A, const Gan_Matrix24 *B, Gan_Matrix24 *C) |
Matrix triple product involving symmetric matrices. | |
Gan_Matrix24 | gan_mat24_lmultl22_s (const Gan_Matrix24 *A, const Gan_SquMatrix22 *B) |
Left-multiply a matrix by a lower-triangular matrix. | |
Gan_Matrix24 | gan_mat24_lmultl22I_s (const Gan_Matrix24 *A, const Gan_SquMatrix22 *B) |
Left-multiply a matrix by the inverse of a lower-triangular matrix. | |
Gan_Matrix24 | gan_mat24_lmultl22T_s (const Gan_Matrix24 *A, const Gan_SquMatrix22 *B) |
Left-multiply a matrix by the transpose of a lower-triangular matrix. | |
Gan_Matrix24 | gan_mat24_lmultl22IT_s (const Gan_Matrix24 *A, const Gan_SquMatrix22 *B) |
Left-multiply a matrix by the inverse transpose of a lower-triangular matrix. | |
Gan_Matrix24 | gan_mat24_rmultl44_s (const Gan_Matrix24 *A, const Gan_SquMatrix44 *B) |
Right-multiply a matrix by a lower-triangular matrix. | |
Gan_Matrix24 | gan_mat24_rmultl44I_s (const Gan_Matrix24 *A, const Gan_SquMatrix44 *B) |
Right-multiply a matrix by the inverse of a lower-triangular matrix. | |
Gan_Matrix24 | gan_mat24_rmultl44T_s (const Gan_Matrix24 *A, const Gan_SquMatrix44 *B) |
Right-multiply a matrix by the transpose of a lower-triangular matrix. | |
Gan_Matrix24 | gan_mat24_rmultl44IT_s (const Gan_Matrix24 *A, const Gan_SquMatrix44 *B) |
Right-multiply a matrix by the inverse transpose of a lower-triangular matrix. | |
double | gan_mat24_sumsqr_s (const Gan_Matrix24 *A) |
Returns sum of squares of matrix elements. | |
double | gan_mat24_Fnorm_s (const Gan_Matrix24 *A) |
Frobenius norm of matrix. | |
Gan_Matrix24 | gan_mat24_from_mat_s (const Gan_Matrix *A) |
Convert generic rectangular matrix to fixed size matrix structure. |
Part of: Gandalf Library