#include <math.h>
#include <string.h>
#include <gandalf/linalg/3x3matrix.h>
#include <gandalf/common/misc_error.h>
#include <gandalf/linalg/mat_symmetric.h>
#include <gandalf/linalg/mat_diagonal.h>
#include <gandalf/linalg/mat_scaledI.h>
#include <gandalf/linalg/mat_triangular.h>
#include <gandalf/common/endian_io.h>
Defines | |
#define | GAN_MATTYPE Gan_Matrix33 |
#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_Vector3 |
#define | GAN_VECTYPE2 Gan_Vector3 |
#define | GAN_MATTYPEL Gan_Matrix33 |
#define | GAN_MATTYPER Gan_Matrix33 |
#define | GAN_SQUMATTYPEL Gan_SquMatrix33 |
#define | GAN_SQUMATTYPER Gan_SquMatrix33 |
#define | GAN_MAT_FPRINT gan_mat33_fprint |
#define | GAN_MAT_PRINT gan_mat33_print |
#define | GAN_MAT_FSCANF gan_mat33_fscanf |
#define | GAN_MAT_FWRITE gan_mat33_fwrite |
#define | GAN_MAT_FREAD gan_mat33_fread |
#define | GAN_MAT_ZERO_Q gan_mat33_zero_q |
#define | GAN_MAT_ZERO_S gan_mat33_zero_s |
#define | GAN_MAT_COPY_Q gan_mat33_copy_q |
#define | GAN_MAT_COPY_S gan_mat33_copy_s |
#define | GAN_MAT_SCALE_Q gan_mat33_scale_q |
#define | GAN_MAT_SCALE_I gan_mat33_scale_i |
#define | GAN_MAT_SCALE_S gan_mat33_scale_s |
#define | GAN_MAT_DIVIDE_Q gan_mat33_divide_q |
#define | GAN_MAT_DIVIDE_I gan_mat33_divide_i |
#define | GAN_MAT_DIVIDE_S gan_mat33_divide_s |
#define | GAN_MAT_NEGATE_Q gan_mat33_negate_q |
#define | GAN_MAT_NEGATE_I gan_mat33_negate_i |
#define | GAN_MAT_NEGATE_S gan_mat33_negate_s |
#define | GAN_MAT_UNIT_Q gan_mat33_unit_q |
#define | GAN_MAT_UNIT_I gan_mat33_unit_i |
#define | GAN_MAT_UNIT_S gan_mat33_unit_s |
#define | GAN_MAT_ADD_Q gan_mat33_add_q |
#define | GAN_MAT_ADD_I1 gan_mat33_add_i1 |
#define | GAN_MAT_ADD_I2 gan_mat33_add_i2 |
#define | GAN_MAT_INCREMENT gan_mat33_increment |
#define | GAN_MAT_ADD_S gan_mat33_add_s |
#define | GAN_MAT_SUB_Q gan_mat33_sub_q |
#define | GAN_MAT_SUB_I1 gan_mat33_sub_i1 |
#define | GAN_MAT_SUB_I2 gan_mat33_sub_i2 |
#define | GAN_MAT_DECREMENT gan_mat33_decrement |
#define | GAN_MAT_SUB_S gan_mat33_sub_s |
#define | GAN_VEC_OUTER_Q gan_vec33_outer_q |
#define | GAN_VEC_OUTER_S gan_vec33_outer_s |
#define | GAN_MAT_MULTV_Q gan_mat33_multv3_q |
#define | GAN_MAT_MULTV_S gan_mat33_multv3_s |
#define | GAN_MATT_MULTV_Q gan_mat33T_multv3_q |
#define | GAN_MATT_MULTV_S gan_mat33T_multv3_s |
#define | GAN_MAT_LMULTMT_Q gan_mat33_lmultm33T_q |
#define | GAN_MAT_LMULTMT_S gan_mat33_lmultm33T_s |
#define | GAN_MAT_RMULTM_Q gan_mat33_rmultm33_q |
#define | GAN_MAT_RMULTM_S gan_mat33_rmultm33_s |
#define | GAN_MAT_RMULTMT_Q gan_mat33_rmultm33T_q |
#define | GAN_MAT_RMULTMT_S gan_mat33_rmultm33T_s |
#define | GAN_MAT_LMULTMT_SYM_Q gan_mat33_lmultm33T_sym_q |
#define | GAN_MAT_LMULTMT_SYM_S gan_mat33_lmultm33T_sym_s |
#define | GAN_MAT_RMULTMT_SYM_Q gan_mat33_rmultm33T_sym_q |
#define | GAN_MAT_RMULTMT_SYM_S gan_mat33_rmultm33T_sym_s |
#define | GAN_MAT_SLMULTT_Q gan_mat33_slmultT_q |
#define | GAN_MAT_SLMULTT_S gan_mat33_slmultT_s |
#define | GAN_MAT_SRMULTT_Q gan_mat33_srmultT_q |
#define | GAN_MAT_SRMULTT_S gan_mat33_srmultT_s |
#define | GAN_MAT_LMULTS_Q gan_mat33_lmults33_q |
#define | GAN_MAT_LMULTS_S gan_mat33_lmults33_s |
#define | GAN_MAT_RMULTS_Q gan_mat33_rmults33_q |
#define | GAN_MAT_RMULTS_S gan_mat33_rmults33_s |
#define | GAN_SYMMATL_LRMULT_Q gan_symmat33_lrmultm33T_q |
#define | GAN_SYMMATL_LRMULT_S gan_symmat33_lrmultm33T_s |
#define | GAN_SYMMATR_LRMULT_Q gan_symmat33_lrmultm33_q |
#define | GAN_SYMMATR_LRMULT_S gan_symmat33_lrmultm33_s |
#define | GAN_MAT_LMULTL_Q gan_mat33_lmultl33_q |
#define | GAN_MAT_LMULTL_S gan_mat33_lmultl33_s |
#define | GAN_MAT_LMULTL_I gan_mat33_lmultl33_i |
#define | GAN_MAT_LMULTLI_Q gan_mat33_lmultl33I_q |
#define | GAN_MAT_LMULTLI_S gan_mat33_lmultl33I_s |
#define | GAN_MAT_LMULTLI_I gan_mat33_lmultl33I_i |
#define | GAN_MAT_LMULTLT_Q gan_mat33_lmultl33T_q |
#define | GAN_MAT_LMULTLT_S gan_mat33_lmultl33T_s |
#define | GAN_MAT_LMULTLT_I gan_mat33_lmultl33T_i |
#define | GAN_MAT_LMULTLIT_Q gan_mat33_lmultl33IT_q |
#define | GAN_MAT_LMULTLIT_S gan_mat33_lmultl33IT_s |
#define | GAN_MAT_LMULTLIT_I gan_mat33_lmultl33IT_i |
#define | GAN_MAT_RMULTL_Q gan_mat33_rmultl33_q |
#define | GAN_MAT_RMULTL_S gan_mat33_rmultl33_s |
#define | GAN_MAT_RMULTL_I gan_mat33_rmultl33_i |
#define | GAN_MAT_RMULTLI_Q gan_mat33_rmultl33I_q |
#define | GAN_MAT_RMULTLI_S gan_mat33_rmultl33I_s |
#define | GAN_MAT_RMULTLI_I gan_mat33_rmultl33I_i |
#define | GAN_MAT_RMULTLT_Q gan_mat33_rmultl33T_q |
#define | GAN_MAT_RMULTLT_S gan_mat33_rmultl33T_s |
#define | GAN_MAT_RMULTLT_I gan_mat33_rmultl33T_i |
#define | GAN_MAT_RMULTLIT_Q gan_mat33_rmultl33IT_q |
#define | GAN_MAT_RMULTLIT_S gan_mat33_rmultl33IT_s |
#define | GAN_MAT_RMULTLIT_I gan_mat33_rmultl33IT_i |
#define | GAN_MAT_SUMSQR_Q gan_mat33_sumsqr_q |
#define | GAN_MAT_SUMSQR_S gan_mat33_sumsqr_s |
#define | GAN_MAT_FNORM_Q gan_mat33_Fnorm_q |
#define | GAN_MAT_FNORM_S gan_mat33_Fnorm_s |
#define | GAN_MAT_FROM_MAT_Q gan_mat33_from_mat_q |
#define | GAN_MAT_FROM_MAT_S gan_mat33_from_mat_s |
#define | GAN_MAT_FROM_SQUMAT_Q gan_mat33_from_squmat_q |
#define | GAN_MAT_FROM_SQUMAT_S gan_mat33_from_squmat_s |
#define | GAN_SQUMAT_FROM_SQUMAT_Q gan_squmat33_from_squmat_q |
#define | GAN_SQUMAT_FROM_SQUMAT_S gan_squmat33_from_squmat_s |
#define | GAN_SQUMAT_IDENT_Q gan_mat33_ident_q |
#define | GAN_SQUMAT_IDENT_S gan_mat33_ident_s |
#define | GAN_SQUMAT_TPOSE_Q gan_mat33_tpose_q |
#define | GAN_SQUMAT_TPOSE_S gan_mat33_tpose_s |
#define | GAN_SQUMAT_TPOSE_I gan_mat33_tpose_i |
#define | GAN_MAT_SADDT_Q gan_mat33_saddT_q |
#define | GAN_MAT_SADDT_S gan_mat33_saddT_s |
#define | GAN_SQUMAT_INVERT gan_mat33_invert |
#define | GAN_SQUMAT_INVERT_Q gan_mat33_invert_q |
#define | GAN_SQUMAT_INVERT_S gan_mat33_invert_s |
#define | GAN_SQUMAT_INVERT_I gan_mat33_invert_i |
#define | GAN_SQUMAT_ADJOINT_Q gan_mat33_adjoint_q |
#define | GAN_SQUMAT_ADJOINT_S gan_mat33_adjoint_s |
#define | GAN_SQUMAT_ADJOINTT_Q gan_mat33_adjointT_q |
#define | GAN_SQUMAT_ADJOINTT_S gan_mat33_adjointT_s |
#define | GAN_SQUMAT_DET_Q gan_mat33_det_q |
#define | GAN_SQUMAT_DET_S gan_mat33_det_s |
#define | GAN_SQUMAT_TRACE_Q gan_mat33_trace_q |
#define | GAN_SQUMAT_TRACE_S gan_mat33_trace_s |
#define | GAN_MATTYPE Gan_SquMatrix33 |
#define | GAN_MATRIX_TYPE Gan_SquMatrix |
#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_Vector3 |
#define | GAN_VECTYPE2 Gan_Vector3 |
#define | GAN_FIXED_MATRIX_TYPE GAN_SYMMETRIC_MATRIX33 |
#define | GAN_MAT_FPRINT gan_symmat33_fprint |
#define | GAN_MAT_PRINT gan_symmat33_print |
#define | GAN_MAT_FSCANF gan_symmat33_fscanf |
#define | GAN_MAT_FWRITE gan_symmat33_fwrite |
#define | GAN_MAT_FREAD gan_symmat33_fread |
#define | GAN_MAT_ZERO_Q gan_symmat33_zero_q |
#define | GAN_MAT_ZERO_S gan_symmat33_zero_s |
#define | GAN_MAT_COPY_Q gan_symmat33_copy_q |
#define | GAN_MAT_COPY_S gan_symmat33_copy_s |
#define | GAN_MAT_SCALE_Q gan_symmat33_scale_q |
#define | GAN_MAT_SCALE_S gan_symmat33_scale_s |
#define | GAN_MAT_SCALE_I gan_symmat33_scale_i |
#define | GAN_MAT_DIVIDE_Q gan_symmat33_divide_q |
#define | GAN_MAT_DIVIDE_S gan_symmat33_divide_s |
#define | GAN_MAT_DIVIDE_I gan_symmat33_divide_i |
#define | GAN_MAT_NEGATE_Q gan_symmat33_negate_q |
#define | GAN_MAT_NEGATE_S gan_symmat33_negate_s |
#define | GAN_MAT_NEGATE_I gan_symmat33_negate_i |
#define | GAN_MAT_UNIT_Q gan_symmat33_unit_q |
#define | GAN_MAT_UNIT_S gan_symmat33_unit_s |
#define | GAN_MAT_UNIT_I gan_symmat33_unit_i |
#define | GAN_MAT_ADD_Q gan_symmat33_add_q |
#define | GAN_MAT_ADD_I1 gan_symmat33_add_i1 |
#define | GAN_MAT_ADD_I2 gan_symmat33_add_i2 |
#define | GAN_MAT_INCREMENT gan_symmat33_increment |
#define | GAN_MAT_ADD_S gan_symmat33_add_s |
#define | GAN_MAT_SUB_Q gan_symmat33_sub_q |
#define | GAN_MAT_SUB_I1 gan_symmat33_sub_i1 |
#define | GAN_MAT_SUB_I2 gan_symmat33_sub_i2 |
#define | GAN_MAT_DECREMENT gan_symmat33_decrement |
#define | GAN_MAT_SUB_S gan_symmat33_sub_s |
#define | GAN_MAT_MULTV_Q gan_symmat33_multv3_q |
#define | GAN_MAT_MULTV_S gan_symmat33_multv3_s |
#define | GAN_MAT_SUMSQR_Q gan_symmat33_sumsqr_q |
#define | GAN_MAT_SUMSQR_S gan_symmat33_sumsqr_s |
#define | GAN_MAT_FNORM_Q gan_symmat33_Fnorm_q |
#define | GAN_MAT_FNORM_S gan_symmat33_Fnorm_s |
#define | GAN_SQUMAT_IDENT_Q gan_symmat33_ident_q |
#define | GAN_SQUMAT_IDENT_S gan_symmat33_ident_s |
#define | GAN_SQUMAT_INVERT gan_symmat33_invert |
#define | GAN_SQUMAT_INVERT_Q gan_symmat33_invert_q |
#define | GAN_SQUMAT_INVERT_S gan_symmat33_invert_s |
#define | GAN_SQUMAT_INVERT_I gan_symmat33_invert_i |
#define | GAN_SQUMAT_DET_Q gan_symmat33_det_q |
#define | GAN_SQUMAT_DET_S gan_symmat33_det_s |
#define | GAN_SQUMAT_TRACE_Q gan_symmat33_trace_q |
#define | GAN_SQUMAT_TRACE_S gan_symmat33_trace_s |
#define | GAN_VEC_OUTER_SYM_Q gan_vec33_outer_sym_q |
#define | GAN_VEC_OUTER_SYM_S gan_vec33_outer_sym_s |
#define | GAN_SYMMAT_CHOLESKY gan_symmat33_cholesky |
#define | GAN_SYMMAT_CHOLESKY_Q gan_symmat33_cholesky_q |
#define | GAN_SYMMAT_CHOLESKY_S gan_symmat33_cholesky_s |
#define | GAN_SYMMAT_CHOLESKY_I gan_symmat33_cholesky_i |
#define | GAN_MATTYPE Gan_SquMatrix33 |
#define | GAN_MATRIX_TYPE Gan_SquMatrix |
#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_Vector3 |
#define | GAN_VECTYPE2 Gan_Vector3 |
#define | GAN_SQUMATTYPEL Gan_SquMatrix33 |
#define | GAN_SQUMATTYPER Gan_SquMatrix33 |
#define | GAN_FIXED_MATRIX_TYPE GAN_LOWER_TRI_MATRIX33 |
#define | GAN_MAT_FPRINT gan_ltmat33_fprint |
#define | GAN_MAT_PRINT gan_ltmat33_print |
#define | GAN_MAT_FSCANF gan_ltmat33_fscanf |
#define | GAN_MAT_FWRITE gan_ltmat33_fwrite |
#define | GAN_MAT_FREAD gan_ltmat33_fread |
#define | GAN_MAT_ZERO_Q gan_ltmat33_zero_q |
#define | GAN_MAT_ZERO_S gan_ltmat33_zero_s |
#define | GAN_MAT_COPY_Q gan_ltmat33_copy_q |
#define | GAN_MAT_COPY_S gan_ltmat33_copy_s |
#define | GAN_MAT_SCALE_Q gan_ltmat33_scale_q |
#define | GAN_MAT_SCALE_S gan_ltmat33_scale_s |
#define | GAN_MAT_SCALE_I gan_ltmat33_scale_i |
#define | GAN_MAT_DIVIDE_Q gan_ltmat33_divide_q |
#define | GAN_MAT_DIVIDE_S gan_ltmat33_divide_s |
#define | GAN_MAT_DIVIDE_I gan_ltmat33_divide_i |
#define | GAN_MAT_NEGATE_Q gan_ltmat33_negate_q |
#define | GAN_MAT_NEGATE_S gan_ltmat33_negate_s |
#define | GAN_MAT_NEGATE_I gan_ltmat33_negate_i |
#define | GAN_MAT_UNIT_Q gan_ltmat33_unit_q |
#define | GAN_MAT_UNIT_S gan_ltmat33_unit_s |
#define | GAN_MAT_UNIT_I gan_ltmat33_unit_i |
#define | GAN_MAT_ADD_Q gan_ltmat33_add_q |
#define | GAN_MAT_ADD_I1 gan_ltmat33_add_i1 |
#define | GAN_MAT_ADD_I2 gan_ltmat33_add_i2 |
#define | GAN_MAT_INCREMENT gan_ltmat33_increment |
#define | GAN_MAT_ADD_S gan_ltmat33_add_s |
#define | GAN_MAT_SUB_Q gan_ltmat33_sub_q |
#define | GAN_MAT_SUB_I1 gan_ltmat33_sub_i1 |
#define | GAN_MAT_SUB_I2 gan_ltmat33_sub_i2 |
#define | GAN_MAT_DECREMENT gan_ltmat33_decrement |
#define | GAN_MAT_SUB_S gan_ltmat33_sub_s |
#define | GAN_MAT_MULTV_Q gan_ltmat33_multv3_q |
#define | GAN_MAT_MULTV_S gan_ltmat33_multv3_s |
#define | GAN_MAT_MULTV_I gan_ltmat33_multv3_i |
#define | GAN_MATT_MULTV_Q gan_ltmat33T_multv3_q |
#define | GAN_MATT_MULTV_S gan_ltmat33T_multv3_s |
#define | GAN_MATT_MULTV_I gan_ltmat33T_multv3_i |
#define | GAN_MAT_SRMULTT_Q gan_ltmat33_srmultT_q |
#define | GAN_MAT_SRMULTT_S gan_ltmat33_srmultT_s |
#define | GAN_MAT_SRMULTT_I gan_ltmat33_srmultT_i |
#define | GAN_MAT_SLMULTT_Q gan_ltmat33_slmultT_q |
#define | GAN_MAT_SLMULTT_S gan_ltmat33_slmultT_s |
#define | GAN_MAT_SLMULTT_I gan_ltmat33_slmultT_i |
#define | GAN_MAT_SUMSQR_Q gan_ltmat33_sumsqr_q |
#define | GAN_MAT_SUMSQR_S gan_ltmat33_sumsqr_s |
#define | GAN_MAT_FNORM_Q gan_ltmat33_Fnorm_q |
#define | GAN_MAT_FNORM_S gan_ltmat33_Fnorm_s |
#define | GAN_SQUMAT_IDENT_Q gan_ltmat33_ident_q |
#define | GAN_SQUMAT_IDENT_S gan_ltmat33_ident_s |
#define | GAN_SQUMATI_MULTV_Q gan_ltmat33I_multv3_q |
#define | GAN_SQUMATI_MULTV_S gan_ltmat33I_multv3_s |
#define | GAN_SQUMATI_MULTV_I gan_ltmat33I_multv3_i |
#define | GAN_SQUMATIT_MULTV_Q gan_ltmat33IT_multv3_q |
#define | GAN_SQUMATIT_MULTV_S gan_ltmat33IT_multv3_s |
#define | GAN_SQUMATIT_MULTV_I gan_ltmat33IT_multv3_i |
#define | GAN_SQUMAT_INVERT gan_ltmat33_invert |
#define | GAN_SQUMAT_INVERT_Q gan_ltmat33_invert_q |
#define | GAN_SQUMAT_INVERT_S gan_ltmat33_invert_s |
#define | GAN_SQUMAT_INVERT_I gan_ltmat33_invert_i |
#define | GAN_SQUMAT_DET_Q gan_ltmat33_det_q |
#define | GAN_SQUMAT_DET_S gan_ltmat33_det_s |
#define | GAN_SQUMAT_TRACE_Q gan_ltmat33_trace_q |
#define | GAN_SQUMAT_TRACE_S gan_ltmat33_trace_s |
#define | GAN_MATTYPE Gan_SquMatrix33 |
#define | GAN_MATRIX_TYPE Gan_SquMatrix |
#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_MAT_FPRINT gan_ltmat33T_fprint |
#define | GAN_MAT_PRINT gan_ltmat33T_print |
#define | GAN_MAT_FSCANF gan_ltmat33T_fscanf |
#define | GAN_FIXED_MATRIX_TYPE GAN_LOWER_TRI_MATRIX33 |
#define | gan_ltmat33T_fwrite gan_ltmat33_fwrite |
#define | gan_ltmat33T_fread gan_ltmat33_fread |
Functions | |
Gan_Bool | gan_mat33_fprint (FILE *fp, const Gan_Matrix33 *A, const char *prefix, int indent, const char *fmt) |
Print 3x3 matrix to file. | |
Gan_Bool | gan_mat33_fscanf (FILE *fp, Gan_Matrix33 *A, char *prefix, int prefix_len) |
Read 3x3 matrix from file. | |
Gan_Matrix33 | gan_mat33_fill_s (double XX, double XY, double XZ, double YX, double YY, double YZ, double ZX, double ZY, double ZZ) |
Fill 3x3 matrix with values. | |
Gan_Vector2 * | gan_mat33_multv2h_q (const Gan_Matrix33 *A, const Gan_Vector2 *p, double h, Gan_Vector2 *q) |
Multiply 3x3 matrix by homogeneously constructed 3-vector. | |
Gan_Vector2 | gan_mat33_multv2h_s (const Gan_Matrix33 *A, const Gan_Vector2 *p, double h) |
Multiply 3x3 matrix by homogeneously constructed 3-vector. | |
Gan_Matrix33 | gan_mat33_cross_s (const Gan_Vector3 *p) |
Gan_Matrix33 * | gan_mat33_tpose_i (Gan_Matrix33 *A) |
Transpose 3x3 matrix in-place. | |
Gan_Matrix33 * | gan_mat33_invert (Gan_Matrix33 *A, Gan_Matrix33 *B, int *error_code) |
Invert 3x3 matrix. | |
Gan_Matrix33 * | gan_mat33_adjoint_q (const Gan_Matrix33 *A, Gan_Matrix33 *B) |
Compute adjoint of 3x3 matrix. | |
Gan_Matrix33 * | gan_mat33_adjointT_q (const Gan_Matrix33 *A, Gan_Matrix33 *B) |
Compute adjoint transpose of 3x3 matrix. | |
void | gan_mat33_get_rows_s (const Gan_Matrix33 *A, Gan_Vector3 *p, Gan_Vector3 *q, Gan_Vector3 *r) |
Extract rows of 3x3 matrix. | |
void | gan_mat33_get_cols_s (const Gan_Matrix33 *A, Gan_Vector3 *p, Gan_Vector3 *q, Gan_Vector3 *r) |
Extract columns of 3x3 matrix. | |
Gan_Matrix22 | gan_mat33_get_m22tl_s (const Gan_Matrix33 *A) |
Extract top-left 2x2 part of 3x3 matrix. | |
Gan_Vector2 | gan_mat33_get_v2tr_s (const Gan_Matrix33 *A) |
Extract top part of right hand column of 3x3 matrix. | |
void | gan_mat33_get_parts_s (const Gan_Matrix33 *A, Gan_Matrix22 *B, Gan_Vector2 *p, Gan_Vector2 *q, double *s) |
Extract parts of 3x3 matrix. | |
Gan_Matrix33 | gan_mat33_set_parts_s (const Gan_Matrix22 *B, const Gan_Vector2 *p, const Gan_Vector2 *q, double s) |
Build a 3x3 matrix from parts. | |
Gan_Matrix33 | gan_mat33_set_cols_s (const Gan_Vector3 *p, const Gan_Vector3 *q, const Gan_Vector3 *r) |
Build 3x3 matrix from 3-vector columns. | |
Gan_Matrix33 | gan_mat33_set_rows_s (const Gan_Vector3 *p, const Gan_Vector3 *q, const Gan_Vector3 *r) |
Build 3x3 matrix from 3-vector rows. | |
Gan_Matrix33 * | gan_mat33_from_mat_q (const Gan_Matrix *A, Gan_Matrix33 *B) |
Convert generic rectangular matrix to 3x3 matrix structure. | |
Gan_Matrix33 * | gan_mat33_from_squmat_q (const Gan_SquMatrix *A, Gan_Matrix33 *B) |
Convert symmetric matrix to generic 3x3 matrix structure. | |
Gan_SquMatrix33 * | gan_squmat33_from_squmat_q (const Gan_SquMatrix *A, Gan_SquMatrix33 *B) |
Convert symmetric matrix to specific 3x3 symmetric matrix structure. | |
Gan_Bool | gan_symmat33_fprint (FILE *fp, const Gan_SquMatrix33 *A, const char *prefix, int indent, const char *fmt) |
Print 3x3 symmetric matrix to file. | |
Gan_Bool | gan_symmat33_fscanf (FILE *fp, Gan_SquMatrix33 *A, char *prefix, int prefix_len) |
Read 3x3 symmetric matrix from file. | |
Gan_SquMatrix33 | gan_symmat33_fill_s (double XX, double YX, double YY, double ZX, double ZY, double ZZ) |
Return 3x3 symmetric matrix filled with values. | |
Gan_SquMatrix33 * | gan_symmat33_cholesky (Gan_SquMatrix33 *A, Gan_SquMatrix33 *B, int *error_code) |
Compute Cholesky factorisation of symmetric 3x3 matrix. | |
Gan_SquMatrix33 * | gan_symmat33_invert (Gan_SquMatrix33 *A, Gan_SquMatrix33 *B, int *error_code) |
Compute inverse of symmetric 3x3 matrix. | |
void | gan_symmat33_get_parts_s (const Gan_SquMatrix33 *A, Gan_SquMatrix22 *B, Gan_Vector2 *p, double *s) |
Extract parts of 3x3 symmetric matrix. | |
Gan_SquMatrix33 | gan_symmat33_set_parts_s (Gan_SquMatrix22 *B, const Gan_Vector2 *p, double s) |
Build a 3x3 symmetric matrix from parts. | |
Gan_Matrix33 * | gan_symmat33_to_mat33_q (const Gan_SquMatrix33 *A, Gan_Matrix33 *B) |
Convert symmetric 3x3 matrix to generic 3x3 matrix. | |
Gan_Matrix33 | gan_symmat33_to_mat33_s (const Gan_SquMatrix33 *A) |
Convert symmetric 3x3 matrix to generic 3x3 matrix. | |
Gan_Bool | gan_ltmat33_fprint (FILE *fp, const Gan_SquMatrix33 *A, const char *prefix, int indent, const char *fmt) |
Print 3x3 lower triangular matrix to file. | |
Gan_Bool | gan_ltmat33_fscanf (FILE *fp, Gan_SquMatrix33 *A, char *prefix, int prefix_len) |
Read 3x3 lower triangular matrix from file. | |
Gan_Bool | gan_ltmat33T_fprint (FILE *fp, const Gan_SquMatrix33 *A, const char *prefix, int indent, const char *fmt) |
Print 3x3 upper triangular matrix to file. | |
Gan_Bool | gan_ltmat33T_fscanf (FILE *fp, Gan_SquMatrix33 *A, char *prefix, int prefix_len) |
Read 3x3 upper triangular matrix from file. | |
Gan_SquMatrix33 | gan_ltmat33_fill_s (double XX, double YX, double YY, double ZX, double ZY, double ZZ) |
Return 3x3 lower triangular matrix filled with values. | |
void | gan_ltmat33_get_parts_s (const Gan_SquMatrix33 *A, Gan_SquMatrix22 *B, Gan_Vector2 *p, double *s) |
Extract parts of 3x3 lower triangular matrix. | |
Gan_SquMatrix33 | gan_ltmat33_set_parts_s (const Gan_SquMatrix22 *B, const Gan_Vector2 *p, double s) |
Build a 3x3 lower triangular matrix from parts. | |
Gan_SquMatrix33 * | gan_ltmat33_invert (Gan_SquMatrix33 *A, Gan_SquMatrix33 *B, int *error_code) |
Compute inverse of lower triangular 3x3 matrix. | |
Gan_Matrix33 | gan_mat33_ident_s (void) |
Return fixed size square matrix filled with identity. | |
Gan_Matrix33 | gan_mat33_tpose_s (const Gan_Matrix33 *A) |
Transpose fixed size square matrix. | |
Gan_SquMatrix33 | gan_mat33_saddT_s (const Gan_Matrix33 *A) |
Add matrix to its own transpose. | |
Gan_Matrix33 | gan_mat33_invert_s (const Gan_Matrix33 *A) |
Invert fixed size square matrix. | |
Gan_Matrix33 | gan_mat33_adjoint_s (const Gan_Matrix33 *A) |
Compute adjoint of fixed size square matrix. | |
Gan_Matrix33 | gan_mat33_adjointT_s (const Gan_Matrix33 *A) |
Compute adjoint transpose of fixed size square matrix. | |
double | gan_mat33_det_s (const Gan_Matrix33 *A) |
Determinant of square matrix. | |
double | gan_mat33_trace_s (const Gan_Matrix33 *A) |
Trace of square matrix. | |
Gan_Bool | gan_mat33_print (const Gan_Matrix33 *A, const char *prefix, int indent, const char *fmt) |
Print fixed size matrix to standard output. | |
Gan_Bool | gan_mat33_fwrite (FILE *fp, const Gan_Matrix33 *A, gan_uint32 magic_number) |
Write fixed size matrix to file stream. | |
Gan_Bool | gan_mat33_fread (FILE *fp, Gan_Matrix33 *A, gan_uint32 *magic_number) |
Read fixed size matrix from file stream. | |
Gan_Matrix33 | gan_mat33_zero_s (void) |
Set fixed size matrix to zero. | |
Gan_Matrix33 | gan_mat33_copy_s (const Gan_Matrix33 *A) |
Copy fixed size matrix. | |
Gan_Matrix33 | gan_mat33_scale_s (const Gan_Matrix33 *A, double a) |
Scale fixed size matrix. | |
Gan_Matrix33 | gan_mat33_divide_s (const Gan_Matrix33 *A, double a) |
Divide fixed size matrix by scalar. | |
Gan_Matrix33 | gan_mat33_negate_s (const Gan_Matrix33 *A) |
Negate fixed size matrix. | |
Gan_Matrix33 * | gan_mat33_unit_q (Gan_Matrix33 *A, Gan_Matrix33 *B) |
Scale matrix to unit norm. | |
Gan_Matrix33 | gan_mat33_unit_s (const Gan_Matrix33 *A) |
Scale matrix to unit norm. | |
Gan_Matrix33 | gan_mat33_add_s (const Gan_Matrix33 *A, const Gan_Matrix33 *B) |
Add two fixed size matrices. | |
Gan_Matrix33 | gan_mat33_sub_s (const Gan_Matrix33 *A, const Gan_Matrix33 *B) |
Subtract two fixed size matrices. | |
Gan_Matrix33 | gan_vec33_outer_s (const Gan_Vector3 *p, const Gan_Vector3 *q) |
Compute the outer product of two fixed size vectors. | |
Gan_Vector3 | gan_mat33_multv3_s (const Gan_Matrix33 *A, const Gan_Vector3 *p) |
Matrix/vector product. | |
Gan_Vector3 | gan_mat33T_multv3_s (const Gan_Matrix33 *A, const Gan_Vector3 *p) |
Matrix/vector product with the matrix transposed. | |
Gan_Matrix33 | gan_mat33_lmultm33T_s (const Gan_Matrix33 *A, const Gan_Matrix33 *B) |
Left-multiply a matrix by the transpose of another matrix. | |
Gan_Matrix33 | gan_mat33_rmultm33_s (const Gan_Matrix33 *A, const Gan_Matrix33 *B) |
Right-multiply a matrix by another matrix. | |
Gan_Matrix33 | gan_mat33_rmultm33T_s (const Gan_Matrix33 *A, const Gan_Matrix33 *B) |
Right-multiply a matrix by the transpose of another matrix. | |
Gan_SquMatrix33 | gan_mat33_lmultm33T_sym_s (const Gan_Matrix33 *A, const Gan_Matrix33 *B) |
Matrix product producing a symmetric matrix. | |
Gan_SquMatrix33 | gan_mat33_rmultm33T_sym_s (const Gan_Matrix33 *A, const Gan_Matrix33 *B) |
Matrix product producing a symmetric matrix. | |
Gan_SquMatrix33 | gan_mat33_slmultT_s (const Gan_Matrix33 *A) |
Left-multiply a matrix by its own transpose, producing a symmetric matrix. | |
Gan_SquMatrix33 | gan_mat33_srmultT_s (const Gan_Matrix33 *A) |
Right-multiply a matrix by its own transpose, producing a symmetric matrix. | |
Gan_Matrix33 | gan_mat33_lmults33_s (const Gan_Matrix33 *A, const Gan_SquMatrix33 *B) |
Left-multiply a matrix by a symmetric matrix. | |
Gan_Matrix33 | gan_mat33_rmults33_s (const Gan_Matrix33 *A, const Gan_SquMatrix33 *B) |
Right-multiply a matrix by a symmetric matrix. | |
Gan_SquMatrix33 | gan_symmat33_lrmultm33T_s (const Gan_SquMatrix33 *A, const Gan_Matrix33 *B, Gan_Matrix33 *C) |
Matrix triple product involving symmetric matrices. | |
Gan_SquMatrix33 | gan_symmat33_lrmultm33_s (const Gan_SquMatrix33 *A, const Gan_Matrix33 *B, Gan_Matrix33 *C) |
Matrix triple product involving symmetric matrices. | |
Gan_Matrix33 | gan_mat33_lmultl33_s (const Gan_Matrix33 *A, const Gan_SquMatrix33 *B) |
Left-multiply a matrix by a lower-triangular matrix. | |
Gan_Matrix33 | gan_mat33_lmultl33I_s (const Gan_Matrix33 *A, const Gan_SquMatrix33 *B) |
Left-multiply a matrix by the inverse of a lower-triangular matrix. | |
Gan_Matrix33 | gan_mat33_lmultl33T_s (const Gan_Matrix33 *A, const Gan_SquMatrix33 *B) |
Left-multiply a matrix by the transpose of a lower-triangular matrix. | |
Gan_Matrix33 | gan_mat33_lmultl33IT_s (const Gan_Matrix33 *A, const Gan_SquMatrix33 *B) |
Left-multiply a matrix by the inverse transpose of a lower-triangular matrix. | |
Gan_Matrix33 | gan_mat33_rmultl33_s (const Gan_Matrix33 *A, const Gan_SquMatrix33 *B) |
Right-multiply a matrix by a lower-triangular matrix. | |
Gan_Matrix33 | gan_mat33_rmultl33I_s (const Gan_Matrix33 *A, const Gan_SquMatrix33 *B) |
Right-multiply a matrix by the inverse of a lower-triangular matrix. | |
Gan_Matrix33 | gan_mat33_rmultl33T_s (const Gan_Matrix33 *A, const Gan_SquMatrix33 *B) |
Right-multiply a matrix by the transpose of a lower-triangular matrix. | |
Gan_Matrix33 | gan_mat33_rmultl33IT_s (const Gan_Matrix33 *A, const Gan_SquMatrix33 *B) |
Right-multiply a matrix by the inverse transpose of a lower-triangular matrix. | |
double | gan_mat33_sumsqr_s (const Gan_Matrix33 *A) |
Returns sum of squares of matrix elements. | |
double | gan_mat33_Fnorm_s (const Gan_Matrix33 *A) |
Frobenius norm of matrix. | |
Gan_Matrix33 | gan_mat33_from_mat_s (const Gan_Matrix *A) |
Convert generic rectangular matrix to fixed size matrix structure. | |
Gan_Matrix33 | gan_mat33_from_squmat_s (const Gan_SquMatrix *A) |
Convert square matrix to fixed size matrix structure. | |
Gan_SquMatrix33 | gan_squmat33_from_squmat_s (const Gan_SquMatrix *A) |
Convert a square matrix to a symmetric fixed size matrix. | |
Gan_SquMatrix33 | gan_vec33_outer_sym_s (const Gan_Vector3 *p) |
Returns the outer product of vector with itself. | |
Gan_SquMatrix33 | gan_symmat33_cholesky_s (const Gan_SquMatrix33 *A) |
Compute Cholesky factorisation of fixed size symmetric matrix. | |
Gan_SquMatrix33 | gan_symmat33_ident_s (void) |
Return fixed size square matrix filled with identity. | |
Gan_SquMatrix33 | gan_symmat33_invert_s (const Gan_SquMatrix33 *A) |
Invert fixed size square matrix. | |
double | gan_symmat33_det_s (const Gan_SquMatrix33 *A) |
Determinant of square matrix. | |
double | gan_symmat33_trace_s (const Gan_SquMatrix33 *A) |
Trace of square matrix. | |
Gan_Bool | gan_symmat33_print (const Gan_SquMatrix33 *A, const char *prefix, int indent, const char *fmt) |
Print fixed size matrix to standard output. | |
Gan_Bool | gan_symmat33_fwrite (FILE *fp, const Gan_SquMatrix33 *A, gan_uint32 magic_number) |
Write fixed size matrix to file stream. | |
Gan_Bool | gan_symmat33_fread (FILE *fp, Gan_SquMatrix33 *A, gan_uint32 *magic_number) |
Read fixed size matrix from file stream. | |
Gan_SquMatrix33 | gan_symmat33_zero_s (void) |
Set fixed size matrix to zero. | |
Gan_SquMatrix33 | gan_symmat33_copy_s (const Gan_SquMatrix33 *A) |
Copy fixed size matrix. | |
Gan_SquMatrix33 | gan_symmat33_scale_s (const Gan_SquMatrix33 *A, double a) |
Scale fixed size matrix. | |
Gan_SquMatrix33 | gan_symmat33_divide_s (const Gan_SquMatrix33 *A, double a) |
Divide fixed size matrix by scalar. | |
Gan_SquMatrix33 | gan_symmat33_negate_s (const Gan_SquMatrix33 *A) |
Negate fixed size matrix. | |
Gan_SquMatrix33 * | gan_symmat33_unit_q (Gan_SquMatrix33 *A, Gan_SquMatrix33 *B) |
Scale matrix to unit norm. | |
Gan_SquMatrix33 | gan_symmat33_unit_s (const Gan_SquMatrix33 *A) |
Scale matrix to unit norm. | |
Gan_SquMatrix33 | gan_symmat33_add_s (const Gan_SquMatrix33 *A, const Gan_SquMatrix33 *B) |
Add two fixed size matrices. | |
Gan_SquMatrix33 | gan_symmat33_sub_s (const Gan_SquMatrix33 *A, const Gan_SquMatrix33 *B) |
Subtract two fixed size matrices. | |
Gan_Vector3 | gan_symmat33_multv3_s (const Gan_SquMatrix33 *A, const Gan_Vector3 *p) |
Matrix/vector product. | |
double | gan_symmat33_sumsqr_s (const Gan_SquMatrix33 *A) |
Returns sum of squares of matrix elements. | |
double | gan_symmat33_Fnorm_s (const Gan_SquMatrix33 *A) |
Frobenius norm of matrix. | |
Gan_SquMatrix33 | gan_ltmat33_ident_s (void) |
Return fixed size square matrix filled with identity. | |
Gan_Vector3 | gan_ltmat33I_multv3_s (const Gan_SquMatrix33 *A, const Gan_Vector3 *p) |
Computes the product of the inverse of a matrix and a vector. | |
Gan_Vector3 | gan_ltmat33IT_multv3_s (const Gan_SquMatrix33 *A, const Gan_Vector3 *p) |
Computes the product of the inverse transpose of a matrix and a vector. | |
Gan_SquMatrix33 | gan_ltmat33_invert_s (const Gan_SquMatrix33 *A) |
Invert fixed size square matrix. | |
double | gan_ltmat33_det_s (const Gan_SquMatrix33 *A) |
Determinant of square matrix. | |
double | gan_ltmat33_trace_s (const Gan_SquMatrix33 *A) |
Trace of square matrix. | |
Gan_Bool | gan_ltmat33_print (const Gan_SquMatrix33 *A, const char *prefix, int indent, const char *fmt) |
Print fixed size matrix to standard output. | |
Gan_Bool | gan_ltmat33_fwrite (FILE *fp, const Gan_SquMatrix33 *A, gan_uint32 magic_number) |
Write fixed size matrix to file stream. | |
Gan_Bool | gan_ltmat33_fread (FILE *fp, Gan_SquMatrix33 *A, gan_uint32 *magic_number) |
Read fixed size matrix from file stream. | |
Gan_SquMatrix33 | gan_ltmat33_zero_s (void) |
Set fixed size matrix to zero. | |
Gan_SquMatrix33 | gan_ltmat33_copy_s (const Gan_SquMatrix33 *A) |
Copy fixed size matrix. | |
Gan_SquMatrix33 | gan_ltmat33_scale_s (const Gan_SquMatrix33 *A, double a) |
Scale fixed size matrix. | |
Gan_SquMatrix33 | gan_ltmat33_divide_s (const Gan_SquMatrix33 *A, double a) |
Divide fixed size matrix by scalar. | |
Gan_SquMatrix33 | gan_ltmat33_negate_s (const Gan_SquMatrix33 *A) |
Negate fixed size matrix. | |
Gan_SquMatrix33 * | gan_ltmat33_unit_q (Gan_SquMatrix33 *A, Gan_SquMatrix33 *B) |
Scale matrix to unit norm. | |
Gan_SquMatrix33 | gan_ltmat33_unit_s (const Gan_SquMatrix33 *A) |
Scale matrix to unit norm. | |
Gan_SquMatrix33 | gan_ltmat33_add_s (const Gan_SquMatrix33 *A, const Gan_SquMatrix33 *B) |
Add two fixed size matrices. | |
Gan_SquMatrix33 | gan_ltmat33_sub_s (const Gan_SquMatrix33 *A, const Gan_SquMatrix33 *B) |
Subtract two fixed size matrices. | |
Gan_Vector3 | gan_ltmat33_multv3_s (const Gan_SquMatrix33 *A, const Gan_Vector3 *p) |
Matrix/vector product. | |
Gan_Vector3 | gan_ltmat33T_multv3_s (const Gan_SquMatrix33 *A, const Gan_Vector3 *p) |
Matrix/vector product with the matrix transposed. | |
Gan_SquMatrix33 | gan_ltmat33_slmultT_s (const Gan_SquMatrix33 *A) |
Left-multiply a matrix by its own transpose, producing a symmetric matrix. | |
Gan_SquMatrix33 | gan_ltmat33_srmultT_s (const Gan_SquMatrix33 *A) |
Right-multiply a matrix by its own transpose, producing a symmetric matrix. | |
double | gan_ltmat33_sumsqr_s (const Gan_SquMatrix33 *A) |
Returns sum of squares of matrix elements. | |
double | gan_ltmat33_Fnorm_s (const Gan_SquMatrix33 *A) |
Frobenius norm of matrix. | |
Gan_Bool | gan_ltmat33T_print (const Gan_SquMatrix33 *A, const char *prefix, int indent, const char *fmt) |
Print fixed size matrix to standard output. |
Part of: Gandalf Library