Main Page | Modules | Class List | File List | Class Members | File Members

3x3matrixf.c File Reference

#include <math.h>
#include <string.h>
#include <gandalf/linalg/3x3matrixf.h>
#include <gandalf/common/misc_error.h>
#include <gandalf/linalg/matf_symmetric.h>
#include <gandalf/linalg/matf_diagonal.h>
#include <gandalf/linalg/matf_scaledI.h>
#include <gandalf/linalg/matf_triangular.h>
#include <gandalf/common/endian_io.h>

Defines

#define GAN_MATTYPE   Gan_Matrix33_f
#define GAN_MATRIX_TYPE   Gan_Matrix_f
#define GAN_SQUMATRIX_TYPE   Gan_SquMatrix_f
#define GAN_VECTOR_TYPE   Gan_Vector_f
#define GAN_MAT_ELEMENT_TYPE   GAN_FLOAT
#define GAN_REALTYPE   float
#define GAN_FWRITE_LENDIAN   gan_fwrite_lendian_f32
#define GAN_FREAD_LENDIAN   gan_fread_lendian_f32
#define GAN_VECTYPE1   Gan_Vector3_f
#define GAN_VECTYPE2   Gan_Vector3_f
#define GAN_MATTYPEL   Gan_Matrix33_f
#define GAN_MATTYPER   Gan_Matrix33_f
#define GAN_SQUMATTYPEL   Gan_SquMatrix33_f
#define GAN_SQUMATTYPER   Gan_SquMatrix33_f
#define GAN_MAT_FPRINT   gan_mat33f_fprint
#define GAN_MAT_PRINT   gan_mat33f_print
#define GAN_MAT_FSCANF   gan_mat33f_fscanf
#define GAN_MAT_FWRITE   gan_mat33f_fwrite
#define GAN_MAT_FREAD   gan_mat33f_fread
#define GAN_MAT_ZERO_Q   gan_mat33f_zero_q
#define GAN_MAT_ZERO_S   gan_mat33f_zero_s
#define GAN_MAT_COPY_Q   gan_mat33f_copy_q
#define GAN_MAT_COPY_S   gan_mat33f_copy_s
#define GAN_MAT_SCALE_Q   gan_mat33f_scale_q
#define GAN_MAT_SCALE_I   gan_mat33f_scale_i
#define GAN_MAT_SCALE_S   gan_mat33f_scale_s
#define GAN_MAT_DIVIDE_Q   gan_mat33f_divide_q
#define GAN_MAT_DIVIDE_I   gan_mat33f_divide_i
#define GAN_MAT_DIVIDE_S   gan_mat33f_divide_s
#define GAN_MAT_NEGATE_Q   gan_mat33f_negate_q
#define GAN_MAT_NEGATE_I   gan_mat33f_negate_i
#define GAN_MAT_NEGATE_S   gan_mat33f_negate_s
#define GAN_MAT_UNIT_Q   gan_mat33f_unit_q
#define GAN_MAT_UNIT_I   gan_mat33f_unit_i
#define GAN_MAT_UNIT_S   gan_mat33f_unit_s
#define GAN_MAT_ADD_Q   gan_mat33f_add_q
#define GAN_MAT_ADD_I1   gan_mat33f_add_i1
#define GAN_MAT_ADD_I2   gan_mat33f_add_i2
#define GAN_MAT_INCREMENT   gan_mat33f_increment
#define GAN_MAT_ADD_S   gan_mat33f_add_s
#define GAN_MAT_SUB_Q   gan_mat33f_sub_q
#define GAN_MAT_SUB_I1   gan_mat33f_sub_i1
#define GAN_MAT_SUB_I2   gan_mat33f_sub_i2
#define GAN_MAT_DECREMENT   gan_mat33f_decrement
#define GAN_MAT_SUB_S   gan_mat33f_sub_s
#define GAN_VEC_OUTER_Q   gan_vec33f_outer_q
#define GAN_VEC_OUTER_S   gan_vec33f_outer_s
#define GAN_MAT_MULTV_Q   gan_mat33f_multv3_q
#define GAN_MAT_MULTV_S   gan_mat33f_multv3_s
#define GAN_MATT_MULTV_Q   gan_mat33Tf_multv3_q
#define GAN_MATT_MULTV_S   gan_mat33Tf_multv3_s
#define GAN_MAT_LMULTMT_Q   gan_mat33f_lmultm33T_q
#define GAN_MAT_LMULTMT_S   gan_mat33f_lmultm33T_s
#define GAN_MAT_RMULTM_Q   gan_mat33f_rmultm33_q
#define GAN_MAT_RMULTM_S   gan_mat33f_rmultm33_s
#define GAN_MAT_RMULTMT_Q   gan_mat33f_rmultm33T_q
#define GAN_MAT_RMULTMT_S   gan_mat33f_rmultm33T_s
#define GAN_MAT_LMULTMT_SYM_Q   gan_mat33f_lmultm33T_sym_q
#define GAN_MAT_LMULTMT_SYM_S   gan_mat33f_lmultm33T_sym_s
#define GAN_MAT_RMULTMT_SYM_Q   gan_mat33f_rmultm33T_sym_q
#define GAN_MAT_RMULTMT_SYM_S   gan_mat33f_rmultm33T_sym_s
#define GAN_MAT_SLMULTT_Q   gan_mat33f_slmultT_q
#define GAN_MAT_SLMULTT_S   gan_mat33f_slmultT_s
#define GAN_MAT_SRMULTT_Q   gan_mat33f_srmultT_q
#define GAN_MAT_SRMULTT_S   gan_mat33f_srmultT_s
#define GAN_MAT_LMULTS_Q   gan_mat33f_lmults33_q
#define GAN_MAT_LMULTS_S   gan_mat33f_lmults33_s
#define GAN_MAT_RMULTS_Q   gan_mat33f_rmults33_q
#define GAN_MAT_RMULTS_S   gan_mat33f_rmults33_s
#define GAN_SYMMATL_LRMULT_Q   gan_symmat33f_lrmultm33T_q
#define GAN_SYMMATL_LRMULT_S   gan_symmat33f_lrmultm33T_s
#define GAN_SYMMATR_LRMULT_Q   gan_symmat33f_lrmultm33_q
#define GAN_SYMMATR_LRMULT_S   gan_symmat33f_lrmultm33_s
#define GAN_MAT_LMULTL_Q   gan_mat33f_lmultl33_q
#define GAN_MAT_LMULTL_S   gan_mat33f_lmultl33_s
#define GAN_MAT_LMULTL_I   gan_mat33f_lmultl33_i
#define GAN_MAT_LMULTLI_Q   gan_mat33f_lmultl33I_q
#define GAN_MAT_LMULTLI_S   gan_mat33f_lmultl33I_s
#define GAN_MAT_LMULTLI_I   gan_mat33f_lmultl33I_i
#define GAN_MAT_LMULTLT_Q   gan_mat33f_lmultl33T_q
#define GAN_MAT_LMULTLT_S   gan_mat33f_lmultl33T_s
#define GAN_MAT_LMULTLT_I   gan_mat33f_lmultl33T_i
#define GAN_MAT_LMULTLIT_Q   gan_mat33f_lmultl33IT_q
#define GAN_MAT_LMULTLIT_S   gan_mat33f_lmultl33IT_s
#define GAN_MAT_LMULTLIT_I   gan_mat33f_lmultl33IT_i
#define GAN_MAT_RMULTL_Q   gan_mat33f_rmultl33_q
#define GAN_MAT_RMULTL_S   gan_mat33f_rmultl33_s
#define GAN_MAT_RMULTL_I   gan_mat33f_rmultl33_i
#define GAN_MAT_RMULTLI_Q   gan_mat33f_rmultl33I_q
#define GAN_MAT_RMULTLI_S   gan_mat33f_rmultl33I_s
#define GAN_MAT_RMULTLI_I   gan_mat33f_rmultl33I_i
#define GAN_MAT_RMULTLT_Q   gan_mat33f_rmultl33T_q
#define GAN_MAT_RMULTLT_S   gan_mat33f_rmultl33T_s
#define GAN_MAT_RMULTLT_I   gan_mat33f_rmultl33T_i
#define GAN_MAT_RMULTLIT_Q   gan_mat33f_rmultl33IT_q
#define GAN_MAT_RMULTLIT_S   gan_mat33f_rmultl33IT_s
#define GAN_MAT_RMULTLIT_I   gan_mat33f_rmultl33IT_i
#define GAN_MAT_SUMSQR_Q   gan_mat33f_sumsqr_q
#define GAN_MAT_SUMSQR_S   gan_mat33f_sumsqr_s
#define GAN_MAT_FNORM_Q   gan_mat33f_Fnorm_q
#define GAN_MAT_FNORM_S   gan_mat33f_Fnorm_s
#define GAN_MAT_FROM_MAT_Q   gan_mat33f_from_matf_q
#define GAN_MAT_FROM_MAT_S   gan_mat33f_from_matf_s
#define GAN_MAT_FROM_SQUMAT_Q   gan_mat33f_from_squmatf_q
#define GAN_MAT_FROM_SQUMAT_S   gan_mat33f_from_squmatf_s
#define GAN_SQUMAT_FROM_SQUMAT_Q   gan_squmat33f_from_squmatf_q
#define GAN_SQUMAT_FROM_SQUMAT_S   gan_squmat33f_from_squmatf_s
#define GAN_SQUMAT_IDENT_Q   gan_mat33f_ident_q
#define GAN_SQUMAT_IDENT_S   gan_mat33f_ident_s
#define GAN_SQUMAT_TPOSE_Q   gan_mat33f_tpose_q
#define GAN_SQUMAT_TPOSE_S   gan_mat33f_tpose_s
#define GAN_SQUMAT_TPOSE_I   gan_mat33f_tpose_i
#define GAN_MAT_SADDT_Q   gan_mat33f_saddT_q
#define GAN_MAT_SADDT_S   gan_mat33f_saddT_s
#define GAN_SQUMAT_INVERT   gan_mat33f_invert
#define GAN_SQUMAT_INVERT_Q   gan_mat33f_invert_q
#define GAN_SQUMAT_INVERT_S   gan_mat33f_invert_s
#define GAN_SQUMAT_INVERT_I   gan_mat33f_invert_i
#define GAN_SQUMAT_ADJOINT_Q   gan_mat33f_adjoint_q
#define GAN_SQUMAT_ADJOINT_S   gan_mat33f_adjoint_s
#define GAN_SQUMAT_ADJOINTT_Q   gan_mat33f_adjointT_q
#define GAN_SQUMAT_ADJOINTT_S   gan_mat33f_adjointT_s
#define GAN_SQUMAT_DET_Q   gan_mat33f_det_q
#define GAN_SQUMAT_DET_S   gan_mat33f_det_s
#define GAN_SQUMAT_TRACE_Q   gan_mat33f_trace_q
#define GAN_SQUMAT_TRACE_S   gan_mat33f_trace_s
#define GAN_MATTYPE   Gan_SquMatrix33_f
#define GAN_MATRIX_TYPE   Gan_SquMatrix_f
#define GAN_SQUMATRIX_TYPE   Gan_SquMatrix_f
#define GAN_VECTOR_TYPE   Gan_Vector_f
#define GAN_MAT_ELEMENT_TYPE   GAN_FLOAT
#define GAN_REALTYPE   float
#define GAN_FWRITE_LENDIAN   gan_fwrite_lendian_f32
#define GAN_FREAD_LENDIAN   gan_fread_lendian_f32
#define GAN_VECTYPE1   Gan_Vector3_f
#define GAN_VECTYPE2   Gan_Vector3_f
#define GAN_FIXED_MATRIX_TYPE   GAN_SYMMETRIC_MATRIX33_F
#define GAN_MAT_FPRINT   gan_symmat33f_fprint
#define GAN_MAT_PRINT   gan_symmat33f_print
#define GAN_MAT_FSCANF   gan_symmat33f_fscanf
#define GAN_MAT_FWRITE   gan_symmat33f_fwrite
#define GAN_MAT_FREAD   gan_symmat33f_fread
#define GAN_MAT_ZERO_Q   gan_symmat33f_zero_q
#define GAN_MAT_ZERO_S   gan_symmat33f_zero_s
#define GAN_MAT_COPY_Q   gan_symmat33f_copy_q
#define GAN_MAT_COPY_S   gan_symmat33f_copy_s
#define GAN_MAT_SCALE_Q   gan_symmat33f_scale_q
#define GAN_MAT_SCALE_S   gan_symmat33f_scale_s
#define GAN_MAT_SCALE_I   gan_symmat33f_scale_i
#define GAN_MAT_DIVIDE_Q   gan_symmat33f_divide_q
#define GAN_MAT_DIVIDE_S   gan_symmat33f_divide_s
#define GAN_MAT_DIVIDE_I   gan_symmat33f_divide_i
#define GAN_MAT_NEGATE_Q   gan_symmat33f_negate_q
#define GAN_MAT_NEGATE_S   gan_symmat33f_negate_s
#define GAN_MAT_NEGATE_I   gan_symmat33f_negate_i
#define GAN_MAT_UNIT_Q   gan_symmat33f_unit_q
#define GAN_MAT_UNIT_S   gan_symmat33f_unit_s
#define GAN_MAT_UNIT_I   gan_symmat33f_unit_i
#define GAN_MAT_ADD_Q   gan_symmat33f_add_q
#define GAN_MAT_ADD_I1   gan_symmat33f_add_i1
#define GAN_MAT_ADD_I2   gan_symmat33f_add_i2
#define GAN_MAT_INCREMENT   gan_symmat33f_increment
#define GAN_MAT_ADD_S   gan_symmat33f_add_s
#define GAN_MAT_SUB_Q   gan_symmat33f_sub_q
#define GAN_MAT_SUB_I1   gan_symmat33f_sub_i1
#define GAN_MAT_SUB_I2   gan_symmat33f_sub_i2
#define GAN_MAT_DECREMENT   gan_symmat33f_decrement
#define GAN_MAT_SUB_S   gan_symmat33f_sub_s
#define GAN_MAT_MULTV_Q   gan_symmat33f_multv3_q
#define GAN_MAT_MULTV_S   gan_symmat33f_multv3_s
#define GAN_MAT_SUMSQR_Q   gan_symmat33f_sumsqr_q
#define GAN_MAT_SUMSQR_S   gan_symmat33f_sumsqr_s
#define GAN_MAT_FNORM_Q   gan_symmat33f_Fnorm_q
#define GAN_MAT_FNORM_S   gan_symmat33f_Fnorm_s
#define GAN_SQUMAT_IDENT_Q   gan_symmat33f_ident_q
#define GAN_SQUMAT_IDENT_S   gan_symmat33f_ident_s
#define GAN_SQUMAT_INVERT   gan_symmat33f_invert
#define GAN_SQUMAT_INVERT_Q   gan_symmat33f_invert_q
#define GAN_SQUMAT_INVERT_S   gan_symmat33f_invert_s
#define GAN_SQUMAT_INVERT_I   gan_symmat33f_invert_i
#define GAN_SQUMAT_DET_Q   gan_symmat33f_det_q
#define GAN_SQUMAT_DET_S   gan_symmat33f_det_s
#define GAN_SQUMAT_TRACE_Q   gan_symmat33f_trace_q
#define GAN_SQUMAT_TRACE_S   gan_symmat33f_trace_s
#define GAN_VEC_OUTER_SYM_Q   gan_vec33f_outer_sym_q
#define GAN_VEC_OUTER_SYM_S   gan_vec33f_outer_sym_s
#define GAN_SYMMAT_CHOLESKY   gan_symmat33f_cholesky
#define GAN_SYMMAT_CHOLESKY_Q   gan_symmat33f_cholesky_q
#define GAN_SYMMAT_CHOLESKY_S   gan_symmat33f_cholesky_s
#define GAN_SYMMAT_CHOLESKY_I   gan_symmat33f_cholesky_i
#define GAN_MATTYPE   Gan_SquMatrix33_f
#define GAN_MATRIX_TYPE   Gan_SquMatrix_f
#define GAN_SQUMATRIX_TYPE   Gan_SquMatrix_f
#define GAN_VECTOR_TYPE   Gan_Vector_f
#define GAN_MAT_ELEMENT_TYPE   GAN_FLOAT
#define GAN_REALTYPE   float
#define GAN_FWRITE_LENDIAN   gan_fwrite_lendian_f32
#define GAN_FREAD_LENDIAN   gan_fread_lendian_f32
#define GAN_VECTYPE1   Gan_Vector3_f
#define GAN_VECTYPE2   Gan_Vector3_f
#define GAN_SQUMATTYPEL   Gan_SquMatrix33_f
#define GAN_SQUMATTYPER   Gan_SquMatrix33_f
#define GAN_FIXED_MATRIX_TYPE   GAN_LOWER_TRI_MATRIX33_F
#define GAN_MAT_FPRINT   gan_ltmat33f_fprint
#define GAN_MAT_PRINT   gan_ltmat33f_print
#define GAN_MAT_FSCANF   gan_ltmat33f_fscanf
#define GAN_MAT_FWRITE   gan_ltmat33f_fwrite
#define GAN_MAT_FREAD   gan_ltmat33f_fread
#define GAN_MAT_ZERO_Q   gan_ltmat33f_zero_q
#define GAN_MAT_ZERO_S   gan_ltmat33f_zero_s
#define GAN_MAT_COPY_Q   gan_ltmat33f_copy_q
#define GAN_MAT_COPY_S   gan_ltmat33f_copy_s
#define GAN_MAT_SCALE_Q   gan_ltmat33f_scale_q
#define GAN_MAT_SCALE_S   gan_ltmat33f_scale_s
#define GAN_MAT_SCALE_I   gan_ltmat33f_scale_i
#define GAN_MAT_DIVIDE_Q   gan_ltmat33f_divide_q
#define GAN_MAT_DIVIDE_S   gan_ltmat33f_divide_s
#define GAN_MAT_DIVIDE_I   gan_ltmat33f_divide_i
#define GAN_MAT_NEGATE_Q   gan_ltmat33f_negate_q
#define GAN_MAT_NEGATE_S   gan_ltmat33f_negate_s
#define GAN_MAT_NEGATE_I   gan_ltmat33f_negate_i
#define GAN_MAT_UNIT_Q   gan_ltmat33f_unit_q
#define GAN_MAT_UNIT_S   gan_ltmat33f_unit_s
#define GAN_MAT_UNIT_I   gan_ltmat33f_unit_i
#define GAN_MAT_ADD_Q   gan_ltmat33f_add_q
#define GAN_MAT_ADD_I1   gan_ltmat33f_add_i1
#define GAN_MAT_ADD_I2   gan_ltmat33f_add_i2
#define GAN_MAT_INCREMENT   gan_ltmat33f_increment
#define GAN_MAT_ADD_S   gan_ltmat33f_add_s
#define GAN_MAT_SUB_Q   gan_ltmat33f_sub_q
#define GAN_MAT_SUB_I1   gan_ltmat33f_sub_i1
#define GAN_MAT_SUB_I2   gan_ltmat33f_sub_i2
#define GAN_MAT_DECREMENT   gan_ltmat33f_decrement
#define GAN_MAT_SUB_S   gan_ltmat33f_sub_s
#define GAN_MAT_MULTV_Q   gan_ltmat33f_multv3_q
#define GAN_MAT_MULTV_S   gan_ltmat33f_multv3_s
#define GAN_MAT_MULTV_I   gan_ltmat33f_multv3_i
#define GAN_MATT_MULTV_Q   gan_ltmat33Tf_multv3_q
#define GAN_MATT_MULTV_S   gan_ltmat33Tf_multv3_s
#define GAN_MATT_MULTV_I   gan_ltmat33Tf_multv3_i
#define GAN_MAT_SRMULTT_Q   gan_ltmat33f_srmultT_q
#define GAN_MAT_SRMULTT_S   gan_ltmat33f_srmultT_s
#define GAN_MAT_SRMULTT_I   gan_ltmat33f_srmultT_i
#define GAN_MAT_SLMULTT_Q   gan_ltmat33f_slmultT_q
#define GAN_MAT_SLMULTT_S   gan_ltmat33f_slmultT_s
#define GAN_MAT_SLMULTT_I   gan_ltmat33f_slmultT_i
#define GAN_MAT_SUMSQR_Q   gan_ltmat33f_sumsqr_q
#define GAN_MAT_SUMSQR_S   gan_ltmat33f_sumsqr_s
#define GAN_MAT_FNORM_Q   gan_ltmat33f_Fnorm_q
#define GAN_MAT_FNORM_S   gan_ltmat33f_Fnorm_s
#define GAN_SQUMAT_IDENT_Q   gan_ltmat33f_ident_q
#define GAN_SQUMAT_IDENT_S   gan_ltmat33f_ident_s
#define GAN_SQUMATI_MULTV_Q   gan_ltmat33If_multv3_q
#define GAN_SQUMATI_MULTV_S   gan_ltmat33If_multv3_s
#define GAN_SQUMATI_MULTV_I   gan_ltmat33If_multv3_i
#define GAN_SQUMATIT_MULTV_Q   gan_ltmat33ITf_multv3_q
#define GAN_SQUMATIT_MULTV_S   gan_ltmat33ITf_multv3_s
#define GAN_SQUMATIT_MULTV_I   gan_ltmat33ITf_multv3_i
#define GAN_SQUMAT_INVERT   gan_ltmat33f_invert
#define GAN_SQUMAT_INVERT_Q   gan_ltmat33f_invert_q
#define GAN_SQUMAT_INVERT_S   gan_ltmat33f_invert_s
#define GAN_SQUMAT_INVERT_I   gan_ltmat33f_invert_i
#define GAN_SQUMAT_DET_Q   gan_ltmat33f_det_q
#define GAN_SQUMAT_DET_S   gan_ltmat33f_det_s
#define GAN_SQUMAT_TRACE_Q   gan_ltmat33f_trace_q
#define GAN_SQUMAT_TRACE_S   gan_ltmat33f_trace_s
#define GAN_MATTYPE   Gan_SquMatrix33_f
#define GAN_MATRIX_TYPE   Gan_SquMatrix_f
#define GAN_SQUMATRIX_TYPE   Gan_SquMatrix_f
#define GAN_VECTOR_TYPE   Gan_Vector_f
#define GAN_MAT_ELEMENT_TYPE   GAN_FLOAT
#define GAN_REALTYPE   float
#define GAN_MAT_FPRINT   gan_ltmat33Tf_fprint
#define GAN_MAT_PRINT   gan_ltmat33Tf_print
#define GAN_MAT_FSCANF   gan_ltmat33Tf_fscanf
#define GAN_FIXED_MATRIX_TYPE   GAN_LOWER_TRI_MATRIX33_F
#define gan_ltmat33Tf_fwrite   gan_ltmat33f_fwrite
#define gan_ltmat33Tf_fread   gan_ltmat33f_fread

Functions

Gan_Bool gan_mat33f_fprint (FILE *fp, const Gan_Matrix33_f *A, const char *prefix, int indent, const char *fmt)
 Print 3x3 matrix to file.
Gan_Bool gan_mat33f_fscanf (FILE *fp, Gan_Matrix33_f *A, char *prefix, int prefix_len)
 Read 3x3 matrix from file.
Gan_Matrix33_f gan_mat33f_fill_s (float XX, float XY, float XZ, float YX, float YY, float YZ, float ZX, float ZY, float ZZ)
 Fill 3x3 matrix with values.
Gan_Vector2_fgan_mat33f_multv2h_q (const Gan_Matrix33_f *A, const Gan_Vector2_f *p, float h, Gan_Vector2_f *q)
 Multiply 3x3 matrix by homogeneously constructed 3-vector.
Gan_Vector2_f gan_mat33f_multv2h_s (const Gan_Matrix33_f *A, const Gan_Vector2_f *p, float h)
 Multiply 3x3 matrix by homogeneously constructed 3-vector.
Gan_Matrix33_f gan_mat33f_cross_s (const Gan_Vector3_f *p)
Gan_Matrix33_fgan_mat33f_tpose_i (Gan_Matrix33_f *A)
 Transpose 3x3 matrix in-place.
Gan_Matrix33_fgan_mat33f_invert (Gan_Matrix33_f *A, Gan_Matrix33_f *B, int *error_code)
 Invert 3x3 matrix.
Gan_Matrix33_fgan_mat33f_adjoint_q (const Gan_Matrix33_f *A, Gan_Matrix33_f *B)
 Compute adjoint of 3x3 matrix.
Gan_Matrix33_fgan_mat33f_adjointT_q (const Gan_Matrix33_f *A, Gan_Matrix33_f *B)
 Compute adjoint transpose of 3x3 matrix.
void gan_mat33f_get_rows_s (const Gan_Matrix33_f *A, Gan_Vector3_f *p, Gan_Vector3_f *q, Gan_Vector3_f *r)
 Extract rows of 3x3 matrix.
void gan_mat33f_get_cols_s (const Gan_Matrix33_f *A, Gan_Vector3_f *p, Gan_Vector3_f *q, Gan_Vector3_f *r)
 Extract columns of 3x3 matrix.
Gan_Matrix22_f gan_mat33f_get_m22tl_s (const Gan_Matrix33_f *A)
 Extract top-left 2x2 part of 3x3 matrix.
Gan_Vector2_f gan_mat33f_get_v2tr_s (const Gan_Matrix33_f *A)
 Extract top part of right hand column of 3x3 matrix.
void gan_mat33f_get_parts_s (const Gan_Matrix33_f *A, Gan_Matrix22_f *B, Gan_Vector2_f *p, Gan_Vector2_f *q, float *s)
 Extract parts of 3x3 matrix.
Gan_Matrix33_f gan_mat33f_set_parts_s (Gan_Matrix22_f *B, const Gan_Vector2_f *p, const Gan_Vector2_f *q, float s)
 Build a 3x3 matrix from parts.
Gan_Matrix33_f gan_mat33f_set_cols_s (const Gan_Vector3_f *p, const Gan_Vector3_f *q, const Gan_Vector3_f *r)
 Build 3x3 matrix from 3-vector columns.
Gan_Matrix33_f gan_mat33f_set_rows_s (const Gan_Vector3_f *p, const Gan_Vector3_f *q, const Gan_Vector3_f *r)
 Build 3x3 matrix from 3-vector rows.
Gan_Matrix33_fgan_mat33f_from_matf_q (const Gan_Matrix_f *A, Gan_Matrix33_f *B)
 Convert generic rectangular matrix to 3x3 matrix structure.
Gan_Matrix33_fgan_mat33f_from_squmatf_q (const Gan_SquMatrix_f *A, Gan_Matrix33_f *B)
 Convert symmetric matrix to generic 3x3 matrix structure.
Gan_SquMatrix33_fgan_squmat33f_from_squmatf_q (const Gan_SquMatrix_f *A, Gan_SquMatrix33_f *B)
 Convert symmetric matrix to specific 3x3 symmetric matrix structure.
Gan_Bool gan_symmat33f_fprint (FILE *fp, const Gan_SquMatrix33_f *A, const char *prefix, int indent, const char *fmt)
 Print 3x3 symmetric matrix to file.
Gan_Bool gan_symmat33f_fscanf (FILE *fp, Gan_SquMatrix33_f *A, char *prefix, int prefix_len)
 Read 3x3 symmetric matrix from file.
Gan_SquMatrix33_f gan_symmat33f_fill_s (float XX, float YX, float YY, float ZX, float ZY, float ZZ)
 Return 3x3 symmetric matrix filled with values.
Gan_SquMatrix33_fgan_symmat33f_cholesky (Gan_SquMatrix33_f *A, Gan_SquMatrix33_f *B, int *error_code)
 Compute Cholesky factorisation of symmetric 3x3 matrix.
Gan_SquMatrix33_fgan_symmat33f_invert (Gan_SquMatrix33_f *A, Gan_SquMatrix33_f *B, int *error_code)
 Compute inverse of symmetric 3x3 matrix.
void gan_symmat33f_get_parts_s (const Gan_SquMatrix33_f *A, Gan_SquMatrix22_f *B, Gan_Vector2_f *p, float *s)
 Extract parts of 3x3 symmetric matrix.
Gan_SquMatrix33_f gan_symmat33f_set_parts_s (Gan_SquMatrix22_f *B, const Gan_Vector2_f *p, float s)
 Build a 3x3 symmetric matrix from parts.
Gan_Matrix33_fgan_symmat33f_to_mat33f_q (const Gan_SquMatrix33_f *A, Gan_Matrix33_f *B)
 Convert symmetric 3x3 matrix to generic 3x3 matrix.
Gan_Matrix33_f gan_symmat33f_to_mat33f_s (const Gan_SquMatrix33_f *A)
 Convert symmetric 3x3 matrix to generic 3x3 matrix.
Gan_Bool gan_ltmat33f_fprint (FILE *fp, const Gan_SquMatrix33_f *A, const char *prefix, int indent, const char *fmt)
 Print 3x3 lower triangular matrix to file.
Gan_Bool gan_ltmat33f_fscanf (FILE *fp, Gan_SquMatrix33_f *A, char *prefix, int prefix_len)
 Read 3x3 lower triangular matrix from file.
Gan_Bool gan_ltmat33Tf_fprint (FILE *fp, const Gan_SquMatrix33_f *A, const char *prefix, int indent, const char *fmt)
 Print 3x3 upper triangular matrix to file.
Gan_Bool gan_ltmat33Tf_fscanf (FILE *fp, Gan_SquMatrix33_f *A, char *prefix, int prefix_len)
 Read 3x3 upper triangular matrix from file.
Gan_SquMatrix33_f gan_ltmat33f_fill_s (float XX, float YX, float YY, float ZX, float ZY, float ZZ)
 Return 3x3 lower triangular matrix filled with values.
void gan_ltmat33f_get_parts_s (const Gan_SquMatrix33_f *A, Gan_SquMatrix22_f *B, Gan_Vector2_f *p, float *s)
 Extract parts of 3x3 lower triangular matrix.
Gan_SquMatrix33_f gan_ltmat33f_set_parts_s (const Gan_SquMatrix22_f *B, const Gan_Vector2_f *p, float s)
 Build a 3x3 lower triangular matrix from parts.
Gan_SquMatrix33_fgan_ltmat33f_invert (Gan_SquMatrix33_f *A, Gan_SquMatrix33_f *B, int *error_code)
 Compute inverse of lower triangular 3x3 matrix.
Gan_Matrix33_f gan_mat33f_ident_s (void)
 Return fixed size square matrix filled with identity.
Gan_Matrix33_f gan_mat33f_tpose_s (const Gan_Matrix33_f *A)
 Transpose fixed size square matrix.
Gan_SquMatrix33_f gan_mat33f_saddT_s (const Gan_Matrix33_f *A)
 Add matrix to its own transpose.
Gan_Matrix33_f gan_mat33f_invert_s (const Gan_Matrix33_f *A)
 Invert fixed size square matrix.
Gan_Matrix33_f gan_mat33f_adjoint_s (const Gan_Matrix33_f *A)
 Compute adjoint of fixed size square matrix.
Gan_Matrix33_f gan_mat33f_adjointT_s (const Gan_Matrix33_f *A)
 Compute adjoint transpose of fixed size square matrix.
float gan_mat33f_det_s (const Gan_Matrix33_f *A)
 Determinant of square matrix.
float gan_mat33f_trace_s (const Gan_Matrix33_f *A)
 Trace of square matrix.
Gan_Bool gan_mat33f_print (const Gan_Matrix33_f *A, const char *prefix, int indent, const char *fmt)
 Print fixed size matrix to standard output.
Gan_Bool gan_mat33f_fwrite (FILE *fp, const Gan_Matrix33_f *A, gan_uint32 magic_number)
 Write fixed size matrix to file stream.
Gan_Bool gan_mat33f_fread (FILE *fp, Gan_Matrix33_f *A, gan_uint32 *magic_number)
 Read fixed size matrix from file stream.
Gan_Matrix33_f gan_mat33f_zero_s (void)
 Set fixed size matrix to zero.
Gan_Matrix33_f gan_mat33f_copy_s (const Gan_Matrix33_f *A)
 Copy fixed size matrix.
Gan_Matrix33_f gan_mat33f_scale_s (const Gan_Matrix33_f *A, float a)
 Scale fixed size matrix.
Gan_Matrix33_f gan_mat33f_divide_s (const Gan_Matrix33_f *A, float a)
 Divide fixed size matrix by scalar.
Gan_Matrix33_f gan_mat33f_negate_s (const Gan_Matrix33_f *A)
 Negate fixed size matrix.
Gan_Matrix33_fgan_mat33f_unit_q (Gan_Matrix33_f *A, Gan_Matrix33_f *B)
 Scale matrix to unit norm.
Gan_Matrix33_f gan_mat33f_unit_s (const Gan_Matrix33_f *A)
 Scale matrix to unit norm.
Gan_Matrix33_f gan_mat33f_add_s (const Gan_Matrix33_f *A, const Gan_Matrix33_f *B)
 Add two fixed size matrices.
Gan_Matrix33_f gan_mat33f_sub_s (const Gan_Matrix33_f *A, const Gan_Matrix33_f *B)
 Subtract two fixed size matrices.
Gan_Matrix33_f gan_vec33f_outer_s (const Gan_Vector3_f *p, const Gan_Vector3_f *q)
 Compute the outer product of two fixed size vectors.
Gan_Vector3_f gan_mat33f_multv3_s (const Gan_Matrix33_f *A, const Gan_Vector3_f *p)
 Matrix/vector product.
Gan_Vector3_f gan_mat33Tf_multv3_s (const Gan_Matrix33_f *A, const Gan_Vector3_f *p)
 Matrix/vector product with the matrix transposed.
Gan_Matrix33_f gan_mat33f_lmultm33T_s (const Gan_Matrix33_f *A, const Gan_Matrix33_f *B)
 Left-multiply a matrix by the transpose of another matrix.
Gan_Matrix33_f gan_mat33f_rmultm33_s (const Gan_Matrix33_f *A, const Gan_Matrix33_f *B)
 Right-multiply a matrix by another matrix.
Gan_Matrix33_f gan_mat33f_rmultm33T_s (const Gan_Matrix33_f *A, const Gan_Matrix33_f *B)
 Right-multiply a matrix by the transpose of another matrix.
Gan_SquMatrix33_f gan_mat33f_lmultm33T_sym_s (const Gan_Matrix33_f *A, const Gan_Matrix33_f *B)
 Matrix product producing a symmetric matrix.
Gan_SquMatrix33_f gan_mat33f_rmultm33T_sym_s (const Gan_Matrix33_f *A, const Gan_Matrix33_f *B)
 Matrix product producing a symmetric matrix.
Gan_SquMatrix33_f gan_mat33f_slmultT_s (const Gan_Matrix33_f *A)
 Left-multiply a matrix by its own transpose, producing a symmetric matrix.
Gan_SquMatrix33_f gan_mat33f_srmultT_s (const Gan_Matrix33_f *A)
 Right-multiply a matrix by its own transpose, producing a symmetric matrix.
Gan_Matrix33_f gan_mat33f_lmults33_s (const Gan_Matrix33_f *A, const Gan_SquMatrix33_f *B)
 Left-multiply a matrix by a symmetric matrix.
Gan_Matrix33_f gan_mat33f_rmults33_s (const Gan_Matrix33_f *A, const Gan_SquMatrix33_f *B)
 Right-multiply a matrix by a symmetric matrix.
Gan_SquMatrix33_f gan_symmat33f_lrmultm33T_s (const Gan_SquMatrix33_f *A, const Gan_Matrix33_f *B, Gan_Matrix33_f *C)
 Matrix triple product involving symmetric matrices.
Gan_SquMatrix33_f gan_symmat33f_lrmultm33_s (const Gan_SquMatrix33_f *A, const Gan_Matrix33_f *B, Gan_Matrix33_f *C)
 Matrix triple product involving symmetric matrices.
Gan_Matrix33_f gan_mat33f_lmultl33_s (const Gan_Matrix33_f *A, const Gan_SquMatrix33_f *B)
 Left-multiply a matrix by a lower-triangular matrix.
Gan_Matrix33_f gan_mat33f_lmultl33I_s (const Gan_Matrix33_f *A, const Gan_SquMatrix33_f *B)
 Left-multiply a matrix by the inverse of a lower-triangular matrix.
Gan_Matrix33_f gan_mat33f_lmultl33T_s (const Gan_Matrix33_f *A, const Gan_SquMatrix33_f *B)
 Left-multiply a matrix by the transpose of a lower-triangular matrix.
Gan_Matrix33_f gan_mat33f_lmultl33IT_s (const Gan_Matrix33_f *A, const Gan_SquMatrix33_f *B)
 Left-multiply a matrix by the inverse transpose of a lower-triangular matrix.
Gan_Matrix33_f gan_mat33f_rmultl33_s (const Gan_Matrix33_f *A, const Gan_SquMatrix33_f *B)
 Right-multiply a matrix by a lower-triangular matrix.
Gan_Matrix33_f gan_mat33f_rmultl33I_s (const Gan_Matrix33_f *A, const Gan_SquMatrix33_f *B)
 Right-multiply a matrix by the inverse of a lower-triangular matrix.
Gan_Matrix33_f gan_mat33f_rmultl33T_s (const Gan_Matrix33_f *A, const Gan_SquMatrix33_f *B)
 Right-multiply a matrix by the transpose of a lower-triangular matrix.
Gan_Matrix33_f gan_mat33f_rmultl33IT_s (const Gan_Matrix33_f *A, const Gan_SquMatrix33_f *B)
 Right-multiply a matrix by the inverse transpose of a lower-triangular matrix.
float gan_mat33f_sumsqr_s (const Gan_Matrix33_f *A)
 Returns sum of squares of matrix elements.
float gan_mat33f_Fnorm_s (const Gan_Matrix33_f *A)
 Frobenius norm of matrix.
Gan_Matrix33_f gan_mat33f_from_matf_s (const Gan_Matrix_f *A)
 Convert generic rectangular matrix to fixed size matrix structure.
Gan_Matrix33_f gan_mat33f_from_squmatf_s (const Gan_SquMatrix_f *A)
 Convert square matrix to fixed size matrix structure.
Gan_SquMatrix33_f gan_squmat33f_from_squmatf_s (const Gan_SquMatrix_f *A)
 Convert a square matrix to a symmetric fixed size matrix.
Gan_SquMatrix33_f gan_vec33f_outer_sym_s (const Gan_Vector3_f *p)
 Returns the outer product of vector with itself.
Gan_SquMatrix33_f gan_symmat33f_cholesky_s (const Gan_SquMatrix33_f *A)
 Compute Cholesky factorisation of fixed size symmetric matrix.
Gan_SquMatrix33_f gan_symmat33f_ident_s (void)
 Return fixed size square matrix filled with identity.
Gan_SquMatrix33_f gan_symmat33f_invert_s (const Gan_SquMatrix33_f *A)
 Invert fixed size square matrix.
float gan_symmat33f_det_s (const Gan_SquMatrix33_f *A)
 Determinant of square matrix.
float gan_symmat33f_trace_s (const Gan_SquMatrix33_f *A)
 Trace of square matrix.
Gan_Bool gan_symmat33f_print (const Gan_SquMatrix33_f *A, const char *prefix, int indent, const char *fmt)
 Print fixed size matrix to standard output.
Gan_Bool gan_symmat33f_fwrite (FILE *fp, const Gan_SquMatrix33_f *A, gan_uint32 magic_number)
 Write fixed size matrix to file stream.
Gan_Bool gan_symmat33f_fread (FILE *fp, Gan_SquMatrix33_f *A, gan_uint32 *magic_number)
 Read fixed size matrix from file stream.
Gan_SquMatrix33_f gan_symmat33f_zero_s (void)
 Set fixed size matrix to zero.
Gan_SquMatrix33_f gan_symmat33f_copy_s (const Gan_SquMatrix33_f *A)
 Copy fixed size matrix.
Gan_SquMatrix33_f gan_symmat33f_scale_s (const Gan_SquMatrix33_f *A, float a)
 Scale fixed size matrix.
Gan_SquMatrix33_f gan_symmat33f_divide_s (const Gan_SquMatrix33_f *A, float a)
 Divide fixed size matrix by scalar.
Gan_SquMatrix33_f gan_symmat33f_negate_s (const Gan_SquMatrix33_f *A)
 Negate fixed size matrix.
Gan_SquMatrix33_fgan_symmat33f_unit_q (Gan_SquMatrix33_f *A, Gan_SquMatrix33_f *B)
 Scale matrix to unit norm.
Gan_SquMatrix33_f gan_symmat33f_unit_s (const Gan_SquMatrix33_f *A)
 Scale matrix to unit norm.
Gan_SquMatrix33_f gan_symmat33f_add_s (const Gan_SquMatrix33_f *A, const Gan_SquMatrix33_f *B)
 Add two fixed size matrices.
Gan_SquMatrix33_f gan_symmat33f_sub_s (const Gan_SquMatrix33_f *A, const Gan_SquMatrix33_f *B)
 Subtract two fixed size matrices.
Gan_Vector3_f gan_symmat33f_multv3_s (const Gan_SquMatrix33_f *A, const Gan_Vector3_f *p)
 Matrix/vector product.
float gan_symmat33f_sumsqr_s (const Gan_SquMatrix33_f *A)
 Returns sum of squares of matrix elements.
float gan_symmat33f_Fnorm_s (const Gan_SquMatrix33_f *A)
 Frobenius norm of matrix.
Gan_SquMatrix33_f gan_ltmat33f_ident_s (void)
 Return fixed size square matrix filled with identity.
Gan_Vector3_f gan_ltmat33If_multv3_s (const Gan_SquMatrix33_f *A, const Gan_Vector3_f *p)
 Computes the product of the inverse of a matrix and a vector.
Gan_Vector3_f gan_ltmat33ITf_multv3_s (const Gan_SquMatrix33_f *A, const Gan_Vector3_f *p)
 Computes the product of the inverse transpose of a matrix and a vector.
Gan_SquMatrix33_f gan_ltmat33f_invert_s (const Gan_SquMatrix33_f *A)
 Invert fixed size square matrix.
float gan_ltmat33f_det_s (const Gan_SquMatrix33_f *A)
 Determinant of square matrix.
float gan_ltmat33f_trace_s (const Gan_SquMatrix33_f *A)
 Trace of square matrix.
Gan_Bool gan_ltmat33f_print (const Gan_SquMatrix33_f *A, const char *prefix, int indent, const char *fmt)
 Print fixed size matrix to standard output.
Gan_Bool gan_ltmat33f_fwrite (FILE *fp, const Gan_SquMatrix33_f *A, gan_uint32 magic_number)
 Write fixed size matrix to file stream.
Gan_Bool gan_ltmat33f_fread (FILE *fp, Gan_SquMatrix33_f *A, gan_uint32 *magic_number)
 Read fixed size matrix from file stream.
Gan_SquMatrix33_f gan_ltmat33f_zero_s (void)
 Set fixed size matrix to zero.
Gan_SquMatrix33_f gan_ltmat33f_copy_s (const Gan_SquMatrix33_f *A)
 Copy fixed size matrix.
Gan_SquMatrix33_f gan_ltmat33f_scale_s (const Gan_SquMatrix33_f *A, float a)
 Scale fixed size matrix.
Gan_SquMatrix33_f gan_ltmat33f_divide_s (const Gan_SquMatrix33_f *A, float a)
 Divide fixed size matrix by scalar.
Gan_SquMatrix33_f gan_ltmat33f_negate_s (const Gan_SquMatrix33_f *A)
 Negate fixed size matrix.
Gan_SquMatrix33_fgan_ltmat33f_unit_q (Gan_SquMatrix33_f *A, Gan_SquMatrix33_f *B)
 Scale matrix to unit norm.
Gan_SquMatrix33_f gan_ltmat33f_unit_s (const Gan_SquMatrix33_f *A)
 Scale matrix to unit norm.
Gan_SquMatrix33_f gan_ltmat33f_add_s (const Gan_SquMatrix33_f *A, const Gan_SquMatrix33_f *B)
 Add two fixed size matrices.
Gan_SquMatrix33_f gan_ltmat33f_sub_s (const Gan_SquMatrix33_f *A, const Gan_SquMatrix33_f *B)
 Subtract two fixed size matrices.
Gan_Vector3_f gan_ltmat33f_multv3_s (const Gan_SquMatrix33_f *A, const Gan_Vector3_f *p)
 Matrix/vector product.
Gan_Vector3_f gan_ltmat33Tf_multv3_s (const Gan_SquMatrix33_f *A, const Gan_Vector3_f *p)
 Matrix/vector product with the matrix transposed.
Gan_SquMatrix33_f gan_ltmat33f_slmultT_s (const Gan_SquMatrix33_f *A)
 Left-multiply a matrix by its own transpose, producing a symmetric matrix.
Gan_SquMatrix33_f gan_ltmat33f_srmultT_s (const Gan_SquMatrix33_f *A)
 Right-multiply a matrix by its own transpose, producing a symmetric matrix.
float gan_ltmat33f_sumsqr_s (const Gan_SquMatrix33_f *A)
 Returns sum of squares of matrix elements.
float gan_ltmat33f_Fnorm_s (const Gan_SquMatrix33_f *A)
 Frobenius norm of matrix.
Gan_Bool gan_ltmat33Tf_print (const Gan_SquMatrix33_f *A, const char *prefix, int indent, const char *fmt)
 Print fixed size matrix to standard output.

Detailed Description

Module: 3x3 matrices (single precision)

Part of: Gandalf Library

Version:
1.7
Date:
2002/04/18 14:56:23
Author:
pm
Copyright: (c) 2000 Imagineer Software Limited
Generated on Fri Mar 17 12:44:49 2006 by  doxygen 1.3.9.1