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

3x4matrix.h File Reference

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <gandalf/common/misc_defs.h>
#include <gandalf/linalg/3vector.h>
#include <gandalf/linalg/4vector.h>
#include <gandalf/linalg/3x3matrix.h>
#include <gandalf/linalg/4x4matrix.h>
#include <gandalf/linalg/mat_gen.h>

Go to the source code of this file.

Classes

struct  Gan_Matrix34
 Structure definition for double precision 3x4 matrix. More...

Defines

#define GAN_REP4_AS(a, b, p1, p2, p3, p4)   (a p1 b, a p2 b, a p3 b, a p4 b)
#define GAN_REP4_AS_C(a, b)   GAN_REP4_AS(a,b,x,y,z,w)
#define GAN_REP4_A(a, p1, p2, p3, p4)   (a p1, a p2, a p3, a p4)
#define GAN_REP4_A_C(a)   GAN_REP4_A(a,x,y,z,w)
#define GAN_FREP4_A(a, b, p1, p2, p3, p4, q1, q2, q3, q4)
#define GAN_FREP4_A_C(a, b, p1, p2, p3, p4)   GAN_FREP4_A(a,b,x,y,z,w,p1,p2,p3,p4)
#define GAN_REP4_ABS(a, b, c, p1, p2, p3, p4, q1, q2, q3, q4)   (a p1 b q1 c, a p2 b q2 c, a p3 b q3 c, a p4 b q4 c)
#define GAN_REP4_AAS(a, b, c, p1, p2, p3, p4)   GAN_REP4_ABS(a,b,c,p1,p2,p3,p4,p1,p2,p3,p4)
#define GAN_REP4_AAS_C(a, b, c)   GAN_REP4_AAS(a,b,c,x,y,z,w)
#define GAN_REP4_AB(a, b, p1, p2, p3, p4, q1, q2, q3, q4)   (a p1 b q1, a p2 b q2, a p3 b q3, a p4 b q4)
#define GAN_REP4_AA(a, b, p1, p2, p3, p4)   GAN_REP4_AB(a,b,p1,p2,p3,p4,p1,p2,p3,p4)
#define GAN_REP4_AA_C(a, b)   GAN_REP4_AA(a,b,x,y,z,w)
#define GAN_REP4_ABCS(a, b, c, d, p1, p2, p3, p4, q1, q2, q3, q4, r1, r2, r3, r4)   (a p1 b q1 c r1 d, a p2 b q2 c r2 d, a p3 b q3 c r3 d, a p4 b q4 c r4 d)
#define GAN_REP4_ABC(a, b, c, p1, p2, p3, p4, q1, q2, q3, q4, r1, r2, r3, r4)   (a p1 b q1 c r1, a p2 b q2 c r2, a p3 b q3 c r3, a p4 b q4 c r4)
#define GAN_REP4_AAA(a, b, c, p1, p2, p3, p4)   GAN_REP4_ABC(a,b,c,p1,p2,p3,p4,p1,p2,p3,p4,p1,p2,p3,p4)
#define GAN_REP4_AAA_C(a, b, c)   GAN_REP4_AAA(a,b,c,x,y,z,w)
#define GAN_REP4_OP_AB(a, b, p1, p2, p3, p4, q1, q2, q3, q4, op)   (a p1 b q1 op a p2 b q2 op a p3 b q3 op a p4 b q4)
#define GAN_REP4_OP_AA(a, b, p1, p2, p3, p4, op)   GAN_REP4_OP_AB(a,b,p1,p2,p3,p4,p1,p2,p3,p4,op)
#define GAN_REP4_OP_AA_C(a, b, op)   GAN_REP4_OP_AA(a,b,x,y,z,w,op)
#define GAN_FREP34_A(a, b, p1, p2, p3, q1, q2, q3, q4, r11, r12, r13, r14, r21, r22, r23, r24, r31, r32, r33, r34)
#define GAN_FREP34_A_C(a, b, r11, r12, r13, r14, r21, r22, r23, r24, r31, r32, r33, r34)   GAN_FREP34_A(a,b,x,y,z,x,y,z,w,r11,r12,r13,r14,r21,r22,r23,r24,r31,r32,r33,r34)
#define GAN_REP34_ABCS(a, b, c, d, p1, p2, p3, q1, q2, q3, q4, r1, r2, r3, s1, s2, s3, s4, t1, t2, t3, u1, u2, u3, u4)
#define GAN_REP34_ABC(a, b, c, p1, p2, p3, q1, q2, q3, q4, r1, r2, r3, s1, s2, s3, s4, t1, t2, t3, u1, u2, u3, u4)
#define GAN_REP34_AAAS(a, b, c, d, p1, p2, p3, q1, q2, q3, q4)   GAN_REP34_ABCS(a,b,c,d,p1,p2,p3,q1,q2,q3,q4,p1,p2,p3,q1,q2,q3,q4,p1,p2,p3,q1,q2,q3,q4)
#define GAN_REP34_AAA(a, b, c, p1, p2, p3, q1, q2, q3, q4)   GAN_REP34_ABC(a,b,c,p1,p2,p3,q1,q2,q3,q4,p1,p2,p3,q1,q2,q3,q4,p1,p2,p3,q1,q2,q3,q4)
#define GAN_REP34_ABS(a, b, c, p1, p2, p3, q1, q2, q3, q4, r1, r2, r3, s1, s2, s3, s4)
#define GAN_REP34_AB(a, b, p1, p2, p3, q1, q2, q3, q4, r1, r2, r3, s1, s2, s3, s4)
#define GAN_REP34_AAS(a, b, c, p1, p2, p3, q1, q2, q3, q4)   GAN_REP34_ABS(a,b,c,p1,p2,p3,q1,q2,q3,q4,p1,p2,p3,q1,q2,q3,q4)
#define GAN_REP34_AA(a, b, p1, p2, p3, q1, q2, q3, q4)   GAN_REP34_AB(a,b,p1,p2,p3,q1,q2,q3,q4,p1,p2,p3,q1,q2,q3,q4)
#define GAN_REP34_AS(a, b, p1, p2, p3, q1, q2, q3, q4)
#define GAN_REP34_A(a, p1, p2, p3, q1, q2, q3, q4)
#define GAN_REP34_AS_C(a, b)   GAN_REP34_AS(a,b,x,y,z,x,y,z,w)
#define GAN_REP34_AAS_C(a, b, c)   GAN_REP34_AAS(a,b,c,x,y,z,x,y,z,w)
#define GAN_REP34_AAAS_C(a, b, c, d)   GAN_REP34_AAAS(a,b,c,d,x,y,z,x,y,z,w)
#define GAN_REP34_A_C(a)   GAN_REP34_A(a,x,y,z,x,y,z,w)
#define GAN_REP34_AA_C(a, b)   GAN_REP34_AA(a,b,x,y,z,x,y,z,w)
#define GAN_REP34_AAA_C(a, b, c)   GAN_REP34_AAA(a,b,c,x,y,z,x,y,z,w)
#define GAN_MAT34_MULT1D(a, b, c, p1, p2, p3, q1, q2, q3, q4)
#define GAN_MAT34T_MULT1D(a, b, c, p1, p2, p3, p4, q1, q2, q3)
#define GAN_MATTYPE   Gan_Matrix34
#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_Vector4
#define GAN_MATTYPEL   Gan_Matrix33
#define GAN_MATTYPER   Gan_Matrix44
#define GAN_SQUMATTYPEL   Gan_SquMatrix33
#define GAN_SQUMATTYPER   Gan_SquMatrix44
#define GAN_MAT_FPRINT   gan_mat34_fprint
#define GAN_MAT_PRINT   gan_mat34_print
#define GAN_MAT_FSCANF   gan_mat34_fscanf
#define GAN_MAT_FWRITE   gan_mat34_fwrite
#define GAN_MAT_FREAD   gan_mat34_fread
#define GAN_MAT_ZERO_Q   gan_mat34_zero_q
#define GAN_MAT_ZERO_S   gan_mat34_zero_s
#define GAN_MAT_COPY_Q   gan_mat34_copy_q
#define GAN_MAT_COPY_S   gan_mat34_copy_s
#define GAN_MAT_SCALE_Q   gan_mat34_scale_q
#define GAN_MAT_SCALE_I   gan_mat34_scale_i
#define GAN_MAT_SCALE_S   gan_mat34_scale_s
#define GAN_MAT_DIVIDE_Q   gan_mat34_divide_q
#define GAN_MAT_DIVIDE_I   gan_mat34_divide_i
#define GAN_MAT_DIVIDE_S   gan_mat34_divide_s
#define GAN_MAT_NEGATE_Q   gan_mat34_negate_q
#define GAN_MAT_NEGATE_I   gan_mat34_negate_i
#define GAN_MAT_NEGATE_S   gan_mat34_negate_s
#define GAN_MAT_UNIT_Q   gan_mat34_unit_q
#define GAN_MAT_UNIT_I   gan_mat34_unit_i
#define GAN_MAT_UNIT_S   gan_mat34_unit_s
#define GAN_MAT_ADD_Q   gan_mat34_add_q
#define GAN_MAT_ADD_I1   gan_mat34_add_i1
#define GAN_MAT_ADD_I2   gan_mat34_add_i2
#define GAN_MAT_INCREMENT   gan_mat34_increment
#define GAN_MAT_ADD_S   gan_mat34_add_s
#define GAN_MAT_SUB_Q   gan_mat34_sub_q
#define GAN_MAT_SUB_I1   gan_mat34_sub_i1
#define GAN_MAT_SUB_I2   gan_mat34_sub_i2
#define GAN_MAT_DECREMENT   gan_mat34_decrement
#define GAN_MAT_SUB_S   gan_mat34_sub_s
#define GAN_VEC_OUTER_Q   gan_vec34_outer_q
#define GAN_VEC_OUTER_S   gan_vec34_outer_s
#define GAN_MAT_MULTV_Q   gan_mat34_multv4_q
#define GAN_MAT_MULTV_S   gan_mat34_multv4_s
#define GAN_MATT_MULTV_Q   gan_mat34T_multv3_q
#define GAN_MATT_MULTV_S   gan_mat34T_multv3_s
#define GAN_MAT_LMULTM_Q   gan_mat34_lmultm33_q
#define GAN_MAT_LMULTM_S   gan_mat34_lmultm33_s
#define GAN_MAT_LMULTMT_Q   gan_mat34_lmultm33T_q
#define GAN_MAT_LMULTMT_S   gan_mat34_lmultm33T_s
#define GAN_MAT_RMULTM_Q   gan_mat34_rmultm44_q
#define GAN_MAT_RMULTM_S   gan_mat34_rmultm44_s
#define GAN_MAT_RMULTMT_Q   gan_mat34_rmultm44T_q
#define GAN_MAT_RMULTMT_S   gan_mat34_rmultm44T_s
#define GAN_MAT_LMULTMT_SYM_Q   gan_mat34_lmultm34T_sym_q
#define GAN_MAT_LMULTMT_SYM_S   gan_mat34_lmultm34T_sym_s
#define GAN_MAT_RMULTMT_SYM_Q   gan_mat34_rmultm34T_sym_q
#define GAN_MAT_RMULTMT_SYM_S   gan_mat34_rmultm34T_sym_s
#define GAN_MAT_SLMULTT_Q   gan_mat34_slmultT_q
#define GAN_MAT_SLMULTT_S   gan_mat34_slmultT_s
#define GAN_MAT_SRMULTT_Q   gan_mat34_srmultT_q
#define GAN_MAT_SRMULTT_S   gan_mat34_srmultT_s
#define GAN_MAT_LMULTS_Q   gan_mat34_lmults33_q
#define GAN_MAT_LMULTS_S   gan_mat34_lmults33_s
#define GAN_MAT_RMULTS_Q   gan_mat34_rmults44_q
#define GAN_MAT_RMULTS_S   gan_mat34_rmults44_s
#define GAN_SYMMATL_LRMULT_Q   gan_symmat33_lrmultm34T_q
#define GAN_SYMMATL_LRMULT_S   gan_symmat33_lrmultm34T_s
#define GAN_SYMMATR_LRMULT_Q   gan_symmat44_lrmultm34_q
#define GAN_SYMMATR_LRMULT_S   gan_symmat44_lrmultm34_s
#define GAN_MAT_LMULTL_Q   gan_mat34_lmultl33_q
#define GAN_MAT_LMULTL_S   gan_mat34_lmultl33_s
#define GAN_MAT_LMULTL_I   gan_mat34_lmultl33_i
#define GAN_MAT_LMULTLI_Q   gan_mat34_lmultl33I_q
#define GAN_MAT_LMULTLI_S   gan_mat34_lmultl33I_s
#define GAN_MAT_LMULTLI_I   gan_mat34_lmultl33I_i
#define GAN_MAT_LMULTLT_Q   gan_mat34_lmultl33T_q
#define GAN_MAT_LMULTLT_S   gan_mat34_lmultl33T_s
#define GAN_MAT_LMULTLT_I   gan_mat34_lmultl33T_i
#define GAN_MAT_LMULTLIT_Q   gan_mat34_lmultl33IT_q
#define GAN_MAT_LMULTLIT_S   gan_mat34_lmultl33IT_s
#define GAN_MAT_LMULTLIT_I   gan_mat34_lmultl33IT_i
#define GAN_MAT_RMULTL_Q   gan_mat34_rmultl44_q
#define GAN_MAT_RMULTL_S   gan_mat34_rmultl44_s
#define GAN_MAT_RMULTL_I   gan_mat34_rmultl44_i
#define GAN_MAT_RMULTLI_Q   gan_mat34_rmultl44I_q
#define GAN_MAT_RMULTLI_S   gan_mat34_rmultl44I_s
#define GAN_MAT_RMULTLI_I   gan_mat34_rmultl44I_i
#define GAN_MAT_RMULTLT_Q   gan_mat34_rmultl44T_q
#define GAN_MAT_RMULTLT_S   gan_mat34_rmultl44T_s
#define GAN_MAT_RMULTLT_I   gan_mat34_rmultl44T_i
#define GAN_MAT_RMULTLIT_Q   gan_mat34_rmultl44IT_q
#define GAN_MAT_RMULTLIT_S   gan_mat34_rmultl44IT_s
#define GAN_MAT_RMULTLIT_I   gan_mat34_rmultl44IT_i
#define GAN_MAT_SUMSQR_Q   gan_mat34_sumsqr_q
#define GAN_MAT_SUMSQR_S   gan_mat34_sumsqr_s
#define GAN_MAT_FNORM_Q   gan_mat34_Fnorm_q
#define GAN_MAT_FNORM_S   gan_mat34_Fnorm_s
#define GAN_MAT_FROM_MAT_Q   gan_mat34_from_mat_q
#define GAN_MAT_FROM_MAT_S   gan_mat34_from_mat_s

Typedefs

typedef Gan_Matrix34 Gan_Matrix34
 Structure definition for double precision 3x4 matrix.

Functions

Gan_Matrix34gan_mat34_fill_q (Gan_Matrix34 *A, double XX, double XY, double XZ, double XW, double YX, double YY, double YZ, double YW, double ZX, double ZY, double ZZ, double ZW)
 Macro: Fill 3x4 matrix with values.
Gan_Matrix33gan_mat34_rmultm34T_q (const Gan_Matrix34 *A, const Gan_Matrix34 *B, Gan_Matrix33 *C)
 Macro: Multiply 3x4 matrix by the transpose of 3x4 matrix.
Gan_Vector3gan_mat34_multv3h_q (const Gan_Matrix34 *A, const Gan_Vector3 *p, double h, Gan_Vector3 *q)
 Macro: Multiply 3x4 matrix by homogeneous 3-vector.
void gan_mat34_get_rows_q (const Gan_Matrix34 *A, Gan_Vector4 *p, Gan_Vector4 *q, Gan_Vector4 *r)
 Macro: Extract rows of 3x4 matrix.
void gan_mat34_get_cols_q (const Gan_Matrix34 *A, Gan_Vector3 *p, Gan_Vector3 *q, Gan_Vector3 *r, Gan_Vector3 *s)
 Macro: Extract columns of 3x4 matrix.
Gan_Matrix33gan_mat34_get_m33l_q (const Gan_Matrix34 *A, Gan_Matrix33 *B)
 Macro: Extract left-hand 3x3 part of 3x4 matrix.
Gan_Vector3gan_mat34_get_v3r_q (const Gan_Matrix34 *A, Gan_Vector3 *p)
 Macro: Extract right-hand column of 3x4 matrix.
Gan_Matrix34gan_mat34_set_parts_q (Gan_Matrix34 *A, const Gan_Matrix33 *B, const Gan_Vector3 *p)
 Macro: Build 3x4 matrix from 3x3 matrix and column 3-vector.
Gan_Matrix34gan_mat34_set_cols_q (Gan_Matrix34 *A, const Gan_Vector3 *p, const Gan_Vector3 *q, const Gan_Vector3 *r, const Gan_Vector3 *s)
 Macro: Build 3x4 matrix from 3-vector columns.
Gan_Matrix34gan_mat34_set_rows_q (Gan_Matrix34 *A, const Gan_Vector4 *p, const Gan_Vector4 *q, const Gan_Vector4 *r)
 Macro: Build 3x4 matrix from 4-vector rows.
Gan_Matrix34gan_mat34_zero_q (const Gan_Matrix34 *A)
 Macro: Fill fixed size matrix with zero.
Gan_Matrix34gan_mat34_copy_q (Gan_Matrix34 *A, Gan_Matrix34 *B)
 Macro: Copy fixed size matrix.
Gan_Matrix34gan_mat34_scale_q (Gan_Matrix34 *A, double a, Gan_Matrix34 *B)
 Macro: Scale fixed size matrix.
Gan_Matrix34gan_mat34_scale_i (Gan_Matrix34 *A, double a)
 Macro: Scale fixed size matrix.
Gan_Matrix34gan_mat34_divide_q (Gan_Matrix34 *A, double a, Gan_Matrix34 *B)
 Macro: Divide fixed size matrix by scalar.
Gan_Matrix34gan_mat34_divide_i (Gan_Matrix34 *A, double a)
 Macro: Divide fixed size matrix by scalar.
Gan_Matrix34gan_mat34_negate_q (Gan_Matrix34 *A, Gan_Matrix34 *B)
 Macro: Negate fixed size matrix.
Gan_Matrix34gan_mat34_negate_i (Gan_Matrix34 *A)
 Macro: Negate fixed size matrix.
Gan_Matrix34gan_mat34_unit_i (Gan_Matrix34 *A)
 Macro: Scale matrix to unit norm.
Gan_Matrix34gan_mat34_add_q (Gan_Matrix34 *A, Gan_Matrix34 *B, Gan_Matrix34 *C)
 Macro: Add two fixed size matrices.
Gan_Matrix34gan_mat34_add_i1 (Gan_Matrix34 *A, Gan_Matrix34 *B)
 Macro: Add two fixed size matrices.
Gan_Matrix34gan_mat34_add_i2 (Gan_Matrix34 *A, Gan_Matrix34 *B)
 Macro: Add two fixed size matrices.
Gan_Matrix34gan_mat34_increment (Gan_Matrix34 *A, Gan_Matrix34 *B)
 Macro: Increment a fixed size vector by another.
Gan_Matrix34gan_mat34_sub_q (Gan_Matrix34 *A, Gan_Matrix34 *B, Gan_Matrix34 *C)
 Macro: Subtract two fixed size matrices.
Gan_Matrix34gan_mat34_sub_i1 (Gan_Matrix34 *A, Gan_Matrix34 *B)
 Macro: Subtract two fixed size matrices.
Gan_Matrix34gan_mat34_sub_i2 (Gan_Matrix34 *A, Gan_Matrix34 *B)
 Macro: Subtract two fixed size matrices.
Gan_Matrix34gan_mat34_decrement (Gan_Matrix34 *A, Gan_Matrix34 *B)
 Macro: Decrement a fixed size vector by another.
Gan_Matrix34gan_vec34_outer_q (const Gan_Vector3 *p, const Gan_Vector4 *q, Gan_Matrix34 *A)
 Macro: Compute the outer product of two fixed size vectors.
Gan_Vector3gan_mat34_multv4_q (const Gan_Matrix34 *A, Gan_Vector4 *p, Gan_Vector3 *q)
 Macro: Matrix/vector product.
Gan_Vector4gan_mat34T_multv3_q (const Gan_Matrix34 *A, Gan_Vector3 *p, Gan_Vector4 *q)
 Macro: Matrix/vector product with the matrix transposed.
Gan_Matrix34gan_mat34_lmultm33_q (Gan_Matrix34 *A, const Gan_Matrix33 *B, Gan_Matrix34 *C)
 Macro: Left-multiply a matrix by another matrix.
Gan_Matrix34gan_mat34_lmultm33T_q (Gan_Matrix34 *A, const Gan_Matrix33 *B, Gan_Matrix34 *C)
 Macro: Left-multiply a matrix by the transpose of another matrix.
Gan_Matrix34gan_mat34_rmultm44_q (Gan_Matrix34 *A, const Gan_Matrix44 *B, Gan_Matrix34 *C)
 Macro: Right-multiply a matrix by another matrix.
Gan_Matrix34gan_mat34_rmultm44T_q (Gan_Matrix34 *A, const Gan_Matrix44 *B, Gan_Matrix34 *C)
 Macro: Right-multiply a matrix by the transpose of another matrix.
Gan_SquMatrix44gan_mat34_lmultm34T_sym_q (const Gan_Matrix34 *A, const Gan_Matrix34 *B, Gan_SquMatrix44 *C)
 Macro: Matrix product producing a symmetric matrix.
Gan_SquMatrix33gan_mat34_rmultm34T_sym_q (const Gan_Matrix34 *A, const Gan_Matrix34 *B, Gan_SquMatrix33 *C)
 Macro: Matrix product producing a symmetric matrix.
Gan_Matrix34gan_mat34_lmults33_q (Gan_Matrix34 *A, const Gan_SquMatrix33 *B, Gan_Matrix34 *C)
 Macro: Left-multiply a matrix by a symmetric matrix.
Gan_Matrix34gan_mat34_rmults44_q (Gan_Matrix34 *A, const Gan_SquMatrix44 *B, Gan_Matrix34 *C)
 Macro: Right-multiply a matrix by a symmetric matrix.
Gan_SquMatrix44gan_symmat33_lrmultm34T_q (const Gan_SquMatrix33 *A, const Gan_Matrix34 *B, const Gan_Matrix34 *C, Gan_SquMatrix44 *D)
 Macro: Matrix triple product involving symmetric matrices.
Gan_SquMatrix33gan_symmat44_lrmultm34_q (const Gan_SquMatrix44 *A, const Gan_Matrix34 *B, const Gan_Matrix34 *C, Gan_SquMatrix33 *D)
 Macro: Matrix triple product involving symmetric matrices.
Gan_Matrix34gan_mat34_lmultl33_q (Gan_Matrix34 *A, const Gan_SquMatrix33 *B, Gan_Matrix34 *C)
 Macro: Left-multiply a matrix by a lower-triangular matrix.
Gan_Matrix34gan_mat34_lmultl33I_q (Gan_Matrix34 *A, const Gan_SquMatrix33 *B, Gan_Matrix34 *C)
 Macro: Left-multiply a matrix by the inverse of a lower-triangular matrix.
Gan_Matrix34gan_mat34_lmultl33T_q (Gan_Matrix34 *A, const Gan_SquMatrix33 *B, Gan_Matrix34 *C)
 Macro: Left-multiply a matrix by the transpose of a lower-triangular matrix.
Gan_Matrix34gan_mat34_lmultl33IT_q (Gan_Matrix34 *A, const Gan_SquMatrix33 *B, Gan_Matrix34 *C)
 Macro: Left-multiply a matrix by the inverse transpose of a lower-triangular matrix.
Gan_Matrix34gan_mat34_rmultl44_q (Gan_Matrix34 *A, const Gan_SquMatrix44 *B, Gan_Matrix34 *C)
 Macro: Right-multiply a matrix by a lower-triangular matrix.
Gan_Matrix34gan_mat34_rmultl44I_q (Gan_Matrix34 *A, const Gan_SquMatrix44 *B, Gan_Matrix34 *C)
 Macro: Right-multiply a matrix by the inverse of a lower-triangular matrix.
Gan_Matrix34gan_mat34_rmultl44T_q (Gan_Matrix34 *A, const Gan_SquMatrix44 *B, Gan_Matrix34 *C)
 Macro: Right-multiply a matrix by the transpose of a lower-triangular matrix.
Gan_Matrix34gan_mat34_rmultl44IT_q (Gan_Matrix34 *A, const Gan_SquMatrix44 *B, Gan_Matrix34 *C)
 Macro: Right-multiply a matrix by the inverse transpose of a lower-triangular matrix.
Gan_Matrix34gan_mat34_lmultl33_i (Gan_Matrix34 *A, const Gan_SquMatrix33 *B)
 Macro: Left-multiply a matrix by a lower-triangular matrix.
Gan_Matrix34gan_mat34_lmultl33I_i (Gan_Matrix34 *A, const Gan_SquMatrix33 *B)
 Macro: Left-multiply a matrix by the inverse of a lower-triangular matrix.
Gan_Matrix34gan_mat34_lmultl33T_i (Gan_Matrix34 *A, const Gan_SquMatrix33 *B)
 Macro: Left-multiply a matrix by the transpose of a lower-triangular matrix.
Gan_Matrix34gan_mat34_lmultl33IT_i (Gan_Matrix34 *A, const Gan_SquMatrix33 *B)
 Macro: Left-multiply a matrix by the inverse transpose of a lower-triangular matrix.
Gan_Matrix34gan_mat34_rmultl44_i (Gan_Matrix34 *A, const Gan_SquMatrix44 *B)
 Macro: Right-multiply a matrix by a lower-triangular matrix.
Gan_Matrix34gan_mat34_rmultl44I_i (Gan_Matrix34 *A, const Gan_SquMatrix44 *B)
 Macro: Right-multiply a matrix by the inverse of a lower-triangular matrix.
Gan_Matrix34gan_mat34_rmultl44T_i (Gan_Matrix34 *A, const Gan_SquMatrix44 *B)
 Macro: Right-multiply a matrix by the transpose of a lower-triangular matrix.
Gan_Matrix34gan_mat34_rmultl44IT_i (Gan_Matrix34 *A, const Gan_SquMatrix44 *B)
 Macro: Right-multiply a matrix by the inverse transpose of a lower-triangular matrix.
Gan_SquMatrix44gan_mat34_slmultT_q (Gan_Matrix34 *A, const Gan_SquMatrix44 *B)
 Macro: Left-multiply a matrix by its own transpose, producing a symmetric matrix.
Gan_SquMatrix33gan_mat34_srmultT_q (const Gan_Matrix34 *A, Gan_SquMatrix33 *B)
 Macro: Right-multiply a matrix by its own transpose, producing a symmetric matrix.
double gan_mat34_sumsqr_q (const Gan_Matrix34 *A)
 Macro: Returns sum of squares of matrix elements.
double gan_mat34_Fnorm_q (const Gan_Matrix34 *A)
 Macro: Frobenius norm of matrix.


Detailed Description

Module: 3x4 matrices (double precision)

Part of: Gandalf Library

Version:
1.10
Date:
2002/12/06 17:48:53
Author:
pm
Copyright: (c) 2000 Imagineer Software Limited

Define Documentation

#define GAN_FREP34_A a,
b,
p1,
p2,
p3,
q1,
q2,
q3,
q4,
r11,
r12,
r13,
r14,
r21,
r22,
r23,
r24,
r31,
r32,
r33,
r34   ) 
 

Value:

(GAN_FREP4_A(a,b,p1##q1,p1##q2,p1##q3,p1##q4,r11,r12,r13,r14),\
             GAN_FREP4_A(a,b,p2##q1,p2##q2,p2##q3,p2##q4,r21,r22,r23,r24),\
             GAN_FREP4_A(a,b,p3##q1,p3##q2,p3##q3,p3##q4,r31,r32,r33,r34))

#define GAN_FREP4_A a,
b,
p1,
p2,
p3,
p4,
q1,
q2,
q3,
q4   ) 
 

Value:

(a p1 b q1, a p2 b q2,\
     a p3 b q3, a p4 b q4)

#define GAN_REP34_A a,
p1,
p2,
p3,
q1,
q2,
q3,
q4   ) 
 

Value:

(GAN_REP4_A(a,p1##q1,p1##q2,p1##q3,p1##q4),\
  GAN_REP4_A(a,p2##q1,p2##q2,p2##q3,p2##q4),\
  GAN_REP4_A(a,p3##q1,p3##q2,p3##q3,p3##q4))

#define GAN_REP34_AB a,
b,
p1,
p2,
p3,
q1,
q2,
q3,
q4,
r1,
r2,
r3,
s1,
s2,
s3,
s4   ) 
 

Value:

(GAN_REP4_AB(a,b,p1##q1,p1##q2,p1##q3,p1##q4,r1##s1,r1##s2,r1##s3,r1##s4),\
  GAN_REP4_AB(a,b,p2##q1,p2##q2,p2##q3,p2##q4,r2##s1,r2##s2,r2##s3,r2##s4),\
  GAN_REP4_AB(a,b,p3##q1,p3##q2,p3##q3,p3##q4,r3##s1,r3##s2,r3##s3,r3##s4))

#define GAN_REP34_ABC a,
b,
c,
p1,
p2,
p3,
q1,
q2,
q3,
q4,
r1,
r2,
r3,
s1,
s2,
s3,
s4,
t1,
t2,
t3,
u1,
u2,
u3,
u4   ) 
 

Value:

(GAN_REP4_ABC(a,b,c,p1##q1,p1##q2,p1##q3,p1##q4,r1##s1,r1##s2,r1##s3,r1##s4,t1##u1,t1##u2,t1##u3,t1##u4),\
  GAN_REP4_ABC(a,b,c,p2##q1,p2##q2,p2##q3,p2##q4,r2##s1,r2##s2,r2##s3,r2##s4,t2##u1,t2##u2,t2##u3,t2##u4),\
  GAN_REP4_ABC(a,b,c,p3##q1,p3##q2,p3##q3,p3##q4,r3##s1,r3##s2,r3##s3,r3##s4,t3##u1,t3##u2,t3##u3,t3##u4))

#define GAN_REP34_ABCS a,
b,
c,
d,
p1,
p2,
p3,
q1,
q2,
q3,
q4,
r1,
r2,
r3,
s1,
s2,
s3,
s4,
t1,
t2,
t3,
u1,
u2,
u3,
u4   ) 
 

Value:

(GAN_REP4_ABCS(a,b,c,d,p1##q1,p1##q2,p1##q3,p1##q4,r1##s1,r1##s2,r1##s3,r1##s4,t1##u1,t1##u2,t1##u3,t1##u4),\
  GAN_REP4_ABCS(a,b,c,d,p2##q1,p2##q2,p2##q3,p2##q4,r2##s1,r2##s2,r2##s3,r2##s4,t2##u1,t2##u2,t2##u3,t2##u4),\
  GAN_REP4_ABCS(a,b,c,d,p3##q1,p3##q2,p3##q3,p3##q4,r3##s1,r3##s2,r3##s3,r3##s4,t3##u1,t3##u2,t3##u3,t3##u4))

#define GAN_REP34_ABS a,
b,
c,
p1,
p2,
p3,
q1,
q2,
q3,
q4,
r1,
r2,
r3,
s1,
s2,
s3,
s4   ) 
 

Value:

(GAN_REP4_ABS(a,b,c,p1##q1,p1##q2,p1##q3,p1##q4,r1##s1,r1##s2,r1##s3,r1##s4),\
  GAN_REP4_ABS(a,b,c,p2##q1,p2##q2,p2##q3,p2##q4,r2##s1,r2##s2,r2##s3,r2##s4),\
  GAN_REP4_ABS(a,b,c,p3##q1,p3##q2,p3##q3,p3##q4,r3##s1,r3##s2,r3##s3,r3##s4))

#define GAN_REP34_AS a,
b,
p1,
p2,
p3,
q1,
q2,
q3,
q4   ) 
 

Value:

(GAN_REP4_AS(a,b,p1##q1,p1##q2,p1##q3,p1##q4),\
  GAN_REP4_AS(a,b,p2##q1,p2##q2,p2##q3,p2##q4),\
  GAN_REP4_AS(a,b,p3##q1,p3##q2,p3##q3,p3##q4))

#define GAN_REP4_AS a,
b,
p1,
p2,
p3,
p4   )     (a p1 b, a p2 b, a p3 b, a p4 b)
 

File:

RCSfile
repeat4_noc.h,v
Module: Macros for 4-fold repetition of vector/matrix operations Part of: Gandalf Library

Revision:

Revision
1.5
Last edited:
Date
2002/04/18 14:56:25
Author:
Author
pm
Copyright: (c) 2000 Imagineer Software Limited

Notes: Not to be compiled separately


Generated on Fri Mar 17 12:44:49 2006 by  doxygen 1.3.9.1