3x4matrix.h Source File (original) (raw)

00001 00014 #ifndef _GAN_3X4MATRIX_H 00015 #define _GAN_3X4MATRIX_H 00016 00017 #include <stdlib.h> 00018 #include <stdio.h> 00019 #include <math.h> 00020 #include <gandalf/common/misc_defs.h> 00034 00035 00036 00037 00038 00039 00040 00041 00042 00043 00044 00045 00046 00047 00048 00049 #ifndef _GAN_REPEAT34_H 00050 #define _GAN_REPEAT34_H 00051 00065 00066 00067 00068 00069 00070 00071 00072 00073 00074 00075 00076 00077 00078 00079 00080 #ifndef _GAN_REPEAT4_H 00081 #define _GAN_REPEAT4_H 00082 00083 #ifdef __cplusplus 00084 extern "C" { 00085 #endif 00086 00087 00088 #define GAN_REP4_AS(a,b,p1,p2,p3,p4) (a p1 b, a p2 b, a p3 b, a p4 b) 00089 #define GAN_REP4_AS_C(a,b) GAN_REP4_AS(a,b,x,y,z,w) 00090 #define GAN_REP4_A(a,p1,p2,p3,p4) (a p1, a p2, a p3, a p4) 00091 #define GAN_REP4_A_C(a) GAN_REP4_A(a,x,y,z,w) 00092 00093 #define GAN_FREP4_A(a,b,p1,p2,p3,p4,q1,q2,q3,q4)
00094 (a p1 b q1, a p2 b q2,
00095 a p3 b q3, a p4 b q4) 00096 #define GAN_FREP4_A_C(a,b,p1,p2,p3,p4) GAN_FREP4_A(a,b,x,y,z,w,p1,p2,p3,p4) 00097 00098 #define GAN_REP4_ABS(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4)
00099 (a p1 b q1 c, a p2 b q2 c, a p3 b q3 c, a p4 b q4 c) 00100 #define GAN_REP4_AAS(a,b,c,p1,p2,p3,p4)
00101 GAN_REP4_ABS(a,b,c,p1,p2,p3,p4,p1,p2,p3,p4) 00102 #define GAN_REP4_AAS_C(a,b,c) GAN_REP4_AAS(a,b,c,x,y,z,w) 00103 00104 #define GAN_REP4_AB(a,b,p1,p2,p3,p4,q1,q2,q3,q4)
00105 (a p1 b q1, a p2 b q2, a p3 b q3, a p4 b q4) 00106 #define GAN_REP4_AA(a,b,p1,p2,p3,p4)
00107 GAN_REP4_AB(a,b,p1,p2,p3,p4,p1,p2,p3,p4) 00108 #define GAN_REP4_AA_C(a,b) GAN_REP4_AA(a,b,x,y,z,w) 00109 00110 #define GAN_REP4_ABCS(a,b,c,d,p1,p2,p3,p4,q1,q2,q3,q4,r1,r2,r3,r4)
00111 (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) 00112 #define GAN_REP4_ABC(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4,r1,r2,r3,r4)
00113 (a p1 b q1 c r1, a p2 b q2 c r2, a p3 b q3 c r3, a p4 b q4 c r4) 00114 #define GAN_REP4_AAA(a,b,c,p1,p2,p3,p4)
00115 GAN_REP4_ABC(a,b,c,p1,p2,p3,p4,p1,p2,p3,p4,p1,p2,p3,p4) 00116 #define GAN_REP4_AAA_C(a,b,c) GAN_REP4_AAA(a,b,c,x,y,z,w) 00117 00118 #define GAN_REP4_OP_AB(a,b,p1,p2,p3,p4,q1,q2,q3,q4,op)
00119 (a p1 b q1 op a p2 b q2 op a p3 b q3 op a p4 b q4) 00120 #define GAN_REP4_OP_AA(a,b,p1,p2,p3,p4,op)
00121 GAN_REP4_OP_AB(a,b,p1,p2,p3,p4,p1,p2,p3,p4,op) 00122 #define GAN_REP4_OP_AA_C(a,b,op) GAN_REP4_OP_AA(a,b,x,y,z,w,op) 00123 00124 #ifdef __cplusplus 00125 } 00126 #endif 00127 00128 #endif 00129 00130 #ifdef __cplusplus 00131 extern "C" { 00132 #endif 00133 00134 00135 00136 #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)
00137 (GAN_FREP4_A(a,b,p1##q1,p1##q2,p1##q3,p1##q4,r11,r12,r13,r14),
00138 GAN_FREP4_A(a,b,p2##q1,p2##q2,p2##q3,p2##q4,r21,r22,r23,r24),
00139 GAN_FREP4_A(a,b,p3##q1,p3##q2,p3##q3,p3##q4,r31,r32,r33,r34)) 00140 #define GAN_FREP34_A_C(a,b,r11,r12,r13,r14,r21,r22,r23,r24,r31,r32,r33,r34)
00141 GAN_FREP34_A(a,b,x,y,z,x,y,z,w,r11,r12,r13,r14,r21,r22,r23,r24,r31,r32,r33,r34) 00142 00143 00144 #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)
00145 (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),
00146 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),
00147 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)) 00148 #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)
00149 (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),
00150 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),
00151 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)) 00152 00153 #define GAN_REP34_AAAS(a,b,c,d,p1,p2,p3,q1,q2,q3,q4)
00154 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) 00155 #define GAN_REP34_AAA(a,b,c,p1,p2,p3,q1,q2,q3,q4)
00156 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) 00157 #define GAN_REP34_ABS(a,b,c,p1,p2,p3,q1,q2,q3,q4,r1,r2,r3,s1,s2,s3,s4)
00158 (GAN_REP4_ABS(a,b,c,p1##q1,p1##q2,p1##q3,p1##q4,r1##s1,r1##s2,r1##s3,r1##s4),
00159 GAN_REP4_ABS(a,b,c,p2##q1,p2##q2,p2##q3,p2##q4,r2##s1,r2##s2,r2##s3,r2##s4),
00160 GAN_REP4_ABS(a,b,c,p3##q1,p3##q2,p3##q3,p3##q4,r3##s1,r3##s2,r3##s3,r3##s4)) 00161 #define GAN_REP34_AB(a,b,p1,p2,p3,q1,q2,q3,q4,r1,r2,r3,s1,s2,s3,s4)
00162 (GAN_REP4_AB(a,b,p1##q1,p1##q2,p1##q3,p1##q4,r1##s1,r1##s2,r1##s3,r1##s4),
00163 GAN_REP4_AB(a,b,p2##q1,p2##q2,p2##q3,p2##q4,r2##s1,r2##s2,r2##s3,r2##s4),
00164 GAN_REP4_AB(a,b,p3##q1,p3##q2,p3##q3,p3##q4,r3##s1,r3##s2,r3##s3,r3##s4)) 00165 #define GAN_REP34_AAS(a,b,c,p1,p2,p3,q1,q2,q3,q4)
00166 GAN_REP34_ABS(a,b,c,p1,p2,p3,q1,q2,q3,q4,p1,p2,p3,q1,q2,q3,q4) 00167 #define GAN_REP34_AA(a,b,p1,p2,p3,q1,q2,q3,q4)
00168 GAN_REP34_AB(a,b,p1,p2,p3,q1,q2,q3,q4,p1,p2,p3,q1,q2,q3,q4) 00169 #define GAN_REP34_AS(a,b,p1,p2,p3,q1,q2,q3,q4)
00170 (GAN_REP4_AS(a,b,p1##q1,p1##q2,p1##q3,p1##q4),
00171 GAN_REP4_AS(a,b,p2##q1,p2##q2,p2##q3,p2##q4),
00172 GAN_REP4_AS(a,b,p3##q1,p3##q2,p3##q3,p3##q4)) 00173 #define GAN_REP34_A(a,p1,p2,p3,q1,q2,q3,q4)
00174 (GAN_REP4_A(a,p1##q1,p1##q2,p1##q3,p1##q4),
00175 GAN_REP4_A(a,p2##q1,p2##q2,p2##q3,p2##q4),
00176 GAN_REP4_A(a,p3##q1,p3##q2,p3##q3,p3##q4)) 00177 00178 00179 #define GAN_REP34_AS_C(a,b) GAN_REP34_AS(a,b,x,y,z,x,y,z,w) 00180 #define GAN_REP34_AAS_C(a,b,c) GAN_REP34_AAS(a,b,c,x,y,z,x,y,z,w) 00181 #define GAN_REP34_AAAS_C(a,b,c,d) GAN_REP34_AAAS(a,b,c,d,x,y,z,x,y,z,w) 00182 #define GAN_REP34_A_C(a) GAN_REP34_A(a,x,y,z,x,y,z,w) 00183 #define GAN_REP34_AA_C(a,b) GAN_REP34_AA(a,b,x,y,z,x,y,z,w) 00184 #define GAN_REP34_AAA_C(a,b,c) GAN_REP34_AAA(a,b,c,x,y,z,x,y,z,w) 00185 00186 #ifdef __cplusplus 00187 } 00188 #endif 00189 00190 #endif 00191 #include <gandalf/linalg/3vector.h> 00192 #include <gandalf/linalg/4vector.h> 00193 #include <gandalf/linalg/3x3matrix.h> 00194 #include <gandalf/linalg/4x4matrix.h> 00208 00209 00210 00211 00212 00213 00214 00215 00216 00217 00218 00219 00220 00221 00222 00223 #endif 00224 #include <gandalf/linalg/mat_gen.h> 00225 00226 #ifdef __cplusplus 00227 extern "C" { 00228 #endif 00229 00245 00246 typedef struct Gan_Matrix34 00247 { 00248 double xx, xy, xz, xw, 00249 yx, yy, yz, yw, 00250 zx, zy, zz, zw; 00251 } Gan_Matrix34; 00252 00253 00254 #define GAN_MAT34_MULT1D(a,b,c,p1,p2,p3,q1,q2,q3,q4)
00255 (a p1 = GAN_REP4_OP_AB(b,* c,xx,xy,xz,xw,q1,q2,q3,q4,+),
00256 a p2 = GAN_REP4_OP_AB(b,* c,yx,yy,yz,yw,q1,q2,q3,q4,+),
00257 a p3 = GAN_REP4_OP_AB(b,* c,zx,zy,zz,zw,q1,q2,q3,q4,+)) 00258 #define GAN_MAT34T_MULT1D(a,b,c,p1,p2,p3,p4,q1,q2,q3)
00259 (a p1 = GAN_REP3_OP_AB(b,* c,xx,yx,zx,q1,q2,q3,+),
00260 a p2 = GAN_REP3_OP_AB(b,* c,xy,yy,zy,q1,q2,q3,+),
00261 a p3 = GAN_REP3_OP_AB(b,* c,xz,yz,zz,q1,q2,q3,+),
00262 a p4 = GAN_REP3_OP_AB(b,* c,xw,yw,zw,q1,q2,q3,+)) 00263 00264 00278 00279 00280 00281 00282 00283 00284 00285 00286 00287 00288 00289 00290 00291 00292 00293 #ifndef _GAN_3X4MAT_H 00294 00311 Gan_Matrix34 *gan_mat34_fill_q ( Gan_Matrix34 *A, 00312 double XX, double XY, double XZ, double XW, 00313 double YX, double YY, double YZ, double YW, 00314 double ZX, double ZY, double ZZ, double ZW ); 00315 00336 Gan_Matrix33 *gan_mat34_rmultm34T_q ( const Gan_Matrix34 *A, const Gan_Matrix34 *B, 00337 Gan_Matrix33 *C ); 00338 00360 Gan_Vector3 *gan_mat34_multv3h_q ( const Gan_Matrix34 *A, const Gan_Vector3 *p, double h, 00361 Gan_Vector3 *q ); 00362 00384 void gan_mat34_get_rows_q ( const Gan_Matrix34 *A, 00385 Gan_Vector4 *p, Gan_Vector4 *q, Gan_Vector4 *r ); 00386 00398 void gan_mat34_get_cols_q ( const Gan_Matrix34 *A, Gan_Vector3 *p, Gan_Vector3 *q, 00399 Gan_Vector3 *r, Gan_Vector3 *s ); 00400 00408 Gan_Matrix33 *gan_mat34_get_m33l_q ( const Gan_Matrix34 *A, Gan_Matrix33 *B ); 00409 00417 Gan_Vector3 *gan_mat34_get_v3r_q ( const Gan_Matrix34 *A, Gan_Vector3 *p ); 00418 00440 Gan_Matrix34 *gan_mat34_set_parts_q ( Gan_Matrix34 *A, 00441 const Gan_Matrix33 *B, const Gan_Vector3 *p ); 00442 00454 Gan_Matrix34 *gan_mat34_set_cols_q ( Gan_Matrix34 *A, 00455 const Gan_Vector3 *p, const Gan_Vector3 *q, 00456 const Gan_Vector3 *r, const Gan_Vector3 *s ); 00457 00470 Gan_Matrix34 *gan_mat34_set_rows_q ( Gan_Matrix34 *A, 00471 const Gan_Vector4 *p, const Gan_Vector4 *q, 00472 const Gan_Vector4 *r ); 00473 00479 #endif 00480 00481 #define GAN_MATTYPE Gan_Matrix34 00482 #define GAN_MATRIX_TYPE Gan_Matrix 00483 #define GAN_SQUMATRIX_TYPE Gan_SquMatrix 00484 #define GAN_VECTOR_TYPE Gan_Vector 00485 #define GAN_MAT_ELEMENT_TYPE GAN_DOUBLE 00486 #define GAN_REALTYPE double 00487 #define GAN_FWRITE_LENDIAN gan_fwrite_lendian_f64 00488 #define GAN_FREAD_LENDIAN gan_fread_lendian_f64 00489 #define GAN_VECTYPE1 Gan_Vector3 00490 #define GAN_VECTYPE2 Gan_Vector4 00491 #define GAN_MATTYPEL Gan_Matrix33 00492 #define GAN_MATTYPER Gan_Matrix44 00493 #define GAN_SQUMATTYPEL Gan_SquMatrix33 00494 #define GAN_SQUMATTYPER Gan_SquMatrix44 00495 #define GAN_MAT_FPRINT gan_mat34_fprint 00496 #define GAN_MAT_PRINT gan_mat34_print 00497 #define GAN_MAT_FSCANF gan_mat34_fscanf 00498 #define GAN_MAT_FWRITE gan_mat34_fwrite 00499 #define GAN_MAT_FREAD gan_mat34_fread 00500 #define GAN_MAT_ZERO_Q gan_mat34_zero_q 00501 #define GAN_MAT_ZERO_S gan_mat34_zero_s 00502 #define GAN_MAT_COPY_Q gan_mat34_copy_q 00503 #define GAN_MAT_COPY_S gan_mat34_copy_s 00504 #define GAN_MAT_SCALE_Q gan_mat34_scale_q 00505 #define GAN_MAT_SCALE_I gan_mat34_scale_i 00506 #define GAN_MAT_SCALE_S gan_mat34_scale_s 00507 #define GAN_MAT_DIVIDE_Q gan_mat34_divide_q 00508 #define GAN_MAT_DIVIDE_I gan_mat34_divide_i 00509 #define GAN_MAT_DIVIDE_S gan_mat34_divide_s 00510 #define GAN_MAT_NEGATE_Q gan_mat34_negate_q 00511 #define GAN_MAT_NEGATE_I gan_mat34_negate_i 00512 #define GAN_MAT_NEGATE_S gan_mat34_negate_s 00513 #define GAN_MAT_UNIT_Q gan_mat34_unit_q 00514 #define GAN_MAT_UNIT_I gan_mat34_unit_i 00515 #define GAN_MAT_UNIT_S gan_mat34_unit_s 00516 #define GAN_MAT_ADD_Q gan_mat34_add_q 00517 #define GAN_MAT_ADD_I1 gan_mat34_add_i1 00518 #define GAN_MAT_ADD_I2 gan_mat34_add_i2 00519 #define GAN_MAT_INCREMENT gan_mat34_increment 00520 #define GAN_MAT_ADD_S gan_mat34_add_s 00521 #define GAN_MAT_SUB_Q gan_mat34_sub_q 00522 #define GAN_MAT_SUB_I1 gan_mat34_sub_i1 00523 #define GAN_MAT_SUB_I2 gan_mat34_sub_i2 00524 #define GAN_MAT_DECREMENT gan_mat34_decrement 00525 #define GAN_MAT_SUB_S gan_mat34_sub_s 00526 #define GAN_VEC_OUTER_Q gan_vec34_outer_q 00527 #define GAN_VEC_OUTER_S gan_vec34_outer_s 00528 #define GAN_MAT_MULTV_Q gan_mat34_multv4_q 00529 #define GAN_MAT_MULTV_S gan_mat34_multv4_s 00530 #define GAN_MATT_MULTV_Q gan_mat34T_multv3_q 00531 #define GAN_MATT_MULTV_S gan_mat34T_multv3_s 00532 #define GAN_MAT_LMULTM_Q gan_mat34_lmultm33_q 00533 #define GAN_MAT_LMULTM_S gan_mat34_lmultm33_s 00534 #define GAN_MAT_LMULTMT_Q gan_mat34_lmultm33T_q 00535 #define GAN_MAT_LMULTMT_S gan_mat34_lmultm33T_s 00536 #define GAN_MAT_RMULTM_Q gan_mat34_rmultm44_q 00537 #define GAN_MAT_RMULTM_S gan_mat34_rmultm44_s 00538 #define GAN_MAT_RMULTMT_Q gan_mat34_rmultm44T_q 00539 #define GAN_MAT_RMULTMT_S gan_mat34_rmultm44T_s 00540 #define GAN_MAT_LMULTMT_SYM_Q gan_mat34_lmultm34T_sym_q 00541 #define GAN_MAT_LMULTMT_SYM_S gan_mat34_lmultm34T_sym_s 00542 #define GAN_MAT_RMULTMT_SYM_Q gan_mat34_rmultm34T_sym_q 00543 #define GAN_MAT_RMULTMT_SYM_S gan_mat34_rmultm34T_sym_s 00544 #define GAN_MAT_SLMULTT_Q gan_mat34_slmultT_q 00545 #define GAN_MAT_SLMULTT_S gan_mat34_slmultT_s 00546 #define GAN_MAT_SRMULTT_Q gan_mat34_srmultT_q 00547 #define GAN_MAT_SRMULTT_S gan_mat34_srmultT_s 00548 #define GAN_MAT_LMULTS_Q gan_mat34_lmults33_q 00549 #define GAN_MAT_LMULTS_S gan_mat34_lmults33_s 00550 #define GAN_MAT_RMULTS_Q gan_mat34_rmults44_q 00551 #define GAN_MAT_RMULTS_S gan_mat34_rmults44_s 00552 #define GAN_SYMMATL_LRMULT_Q gan_symmat33_lrmultm34T_q 00553 #define GAN_SYMMATL_LRMULT_S gan_symmat33_lrmultm34T_s 00554 #define GAN_SYMMATR_LRMULT_Q gan_symmat44_lrmultm34_q 00555 #define GAN_SYMMATR_LRMULT_S gan_symmat44_lrmultm34_s 00556 #define GAN_MAT_LMULTL_Q gan_mat34_lmultl33_q 00557 #define GAN_MAT_LMULTL_S gan_mat34_lmultl33_s 00558 #define GAN_MAT_LMULTL_I gan_mat34_lmultl33_i 00559 #define GAN_MAT_LMULTLI_Q gan_mat34_lmultl33I_q 00560 #define GAN_MAT_LMULTLI_S gan_mat34_lmultl33I_s 00561 #define GAN_MAT_LMULTLI_I gan_mat34_lmultl33I_i 00562 #define GAN_MAT_LMULTLT_Q gan_mat34_lmultl33T_q 00563 #define GAN_MAT_LMULTLT_S gan_mat34_lmultl33T_s 00564 #define GAN_MAT_LMULTLT_I gan_mat34_lmultl33T_i 00565 #define GAN_MAT_LMULTLIT_Q gan_mat34_lmultl33IT_q 00566 #define GAN_MAT_LMULTLIT_S gan_mat34_lmultl33IT_s 00567 #define GAN_MAT_LMULTLIT_I gan_mat34_lmultl33IT_i 00568 #define GAN_MAT_RMULTL_Q gan_mat34_rmultl44_q 00569 #define GAN_MAT_RMULTL_S gan_mat34_rmultl44_s 00570 #define GAN_MAT_RMULTL_I gan_mat34_rmultl44_i 00571 #define GAN_MAT_RMULTLI_Q gan_mat34_rmultl44I_q 00572 #define GAN_MAT_RMULTLI_S gan_mat34_rmultl44I_s 00573 #define GAN_MAT_RMULTLI_I gan_mat34_rmultl44I_i 00574 #define GAN_MAT_RMULTLT_Q gan_mat34_rmultl44T_q 00575 #define GAN_MAT_RMULTLT_S gan_mat34_rmultl44T_s 00576 #define GAN_MAT_RMULTLT_I gan_mat34_rmultl44T_i 00577 #define GAN_MAT_RMULTLIT_Q gan_mat34_rmultl44IT_q 00578 #define GAN_MAT_RMULTLIT_S gan_mat34_rmultl44IT_s 00579 #define GAN_MAT_RMULTLIT_I gan_mat34_rmultl44IT_i 00580 #define GAN_MAT_SUMSQR_Q gan_mat34_sumsqr_q 00581 #define GAN_MAT_SUMSQR_S gan_mat34_sumsqr_s 00582 #define GAN_MAT_FNORM_Q gan_mat34_Fnorm_q 00583 #define GAN_MAT_FNORM_S gan_mat34_Fnorm_s 00584 #define GAN_MAT_FROM_MAT_Q gan_mat34_from_mat_q 00585 #define GAN_MAT_FROM_MAT_S gan_mat34_from_mat_s 00586 00587 #ifndef _GAN_3X4MAT_H 00588 #define _GAN_3X4MAT_H 00589 00590 00591 #endif 00592 00605 00606 00607 00608 00609 00610 00611 00612 00613 00614 00615 00616 00617 00618 00619 00620 00621 00622 00623 00624 00625 00636 Gan_Matrix34 *gan_mat34_zero_q ( const Gan_Matrix34 *A ); 00637 00654 Gan_Matrix34 *gan_mat34_copy_q ( Gan_Matrix34 *A, Gan_Matrix34 *B ); 00655 00673 Gan_Matrix34 *gan_mat34_scale_q ( Gan_Matrix34 *A, double a, 00674 Gan_Matrix34 *B ); 00675 00683 Gan_Matrix34 *gan_mat34_scale_i ( Gan_Matrix34 *A, double a ); 00684 00693 Gan_Matrix34 *gan_mat34_divide_q ( Gan_Matrix34 *A, double a, 00694 Gan_Matrix34 *B ); 00695 00703 Gan_Matrix34 *gan_mat34_divide_i ( Gan_Matrix34 *A, double a ); 00704 00712 Gan_Matrix34 *gan_mat34_negate_q ( Gan_Matrix34 *A, Gan_Matrix34 *B ); 00713 00721 Gan_Matrix34 *gan_mat34_negate_i ( Gan_Matrix34 *A ); 00722 00730 Gan_Matrix34 *gan_mat34_unit_i ( Gan_Matrix34 *A ); 00731 00749 Gan_Matrix34 *gan_mat34_add_q ( Gan_Matrix34 *A, Gan_Matrix34 *B, Gan_Matrix34 *C ); 00750 00759 Gan_Matrix34 *gan_mat34_add_i1 ( Gan_Matrix34 *A, Gan_Matrix34 *B ); 00760 00769 Gan_Matrix34 *gan_mat34_add_i2 ( Gan_Matrix34 *A, Gan_Matrix34 *B ); 00770 00779 Gan_Matrix34 *gan_mat34_increment ( Gan_Matrix34 *A, Gan_Matrix34 *B ); 00780 00798 Gan_Matrix34 *gan_mat34_sub_q ( Gan_Matrix34 *A, Gan_Matrix34 *B, Gan_Matrix34 *C ); 00799 00808 Gan_Matrix34 *gan_mat34_sub_i1 ( Gan_Matrix34 *A, Gan_Matrix34 *B ); 00809 00818 Gan_Matrix34 *gan_mat34_sub_i2 ( Gan_Matrix34 *A, Gan_Matrix34 *B ); 00819 00828 Gan_Matrix34 *gan_mat34_decrement ( Gan_Matrix34 *A, Gan_Matrix34 *B ); 00829 00847 Gan_Matrix34 *gan_vec34_outer_q ( const Gan_Vector3 *p, const Gan_Vector4 *q, 00848 Gan_Matrix34 *A ); 00849 00858 Gan_Vector3 *gan_mat34_multv4_q ( const Gan_Matrix34 *A, Gan_Vector4 *p, 00859 Gan_Vector3 *q ); 00860 00861 00870 Gan_Vector4 *gan_mat34T_multv3_q ( const Gan_Matrix34 *A, Gan_Vector3 *p, 00871 Gan_Vector4 *q ); 00872 00873 00892 Gan_Matrix34 *gan_mat34_lmultm33_q ( Gan_Matrix34 *A, const Gan_Matrix33 *B, 00893 Gan_Matrix34 *C ); 00894 00904 Gan_Matrix34 *gan_mat34_lmultm33T_q ( Gan_Matrix34 *A, const Gan_Matrix33 *B, 00905 Gan_Matrix34 *C ); 00906 00916 Gan_Matrix34 *gan_mat34_rmultm44_q ( Gan_Matrix34 *A, const Gan_Matrix44 *B, 00917 Gan_Matrix34 *C ); 00918 00928 Gan_Matrix34 *gan_mat34_rmultm44T_q ( Gan_Matrix34 *A, const Gan_Matrix44 *B, 00929 Gan_Matrix34 *C ); 00930 00942 Gan_SquMatrix44 *gan_mat34_lmultm34T_sym_q ( const Gan_Matrix34 *A, const Gan_Matrix34 *B, 00943 Gan_SquMatrix44 *C ); 00944 00956 Gan_SquMatrix33 *gan_mat34_rmultm34T_sym_q ( const Gan_Matrix34 *A, const Gan_Matrix34 *B, 00957 Gan_SquMatrix33 *C ); 00958 00967 Gan_Matrix34 *gan_mat34_lmults33_q ( Gan_Matrix34 *A, const Gan_SquMatrix33 *B, 00968 Gan_Matrix34 *C ); 00969 00978 Gan_Matrix34 *gan_mat34_rmults44_q ( Gan_Matrix34 *A, const Gan_SquMatrix44 *B, 00979 Gan_Matrix34 *C ); 00980 01000 Gan_SquMatrix44 *gan_symmat33_lrmultm34T_q ( const Gan_SquMatrix33 *A, const Gan_Matrix34 *B, 01001 const Gan_Matrix34 *C, Gan_SquMatrix44 *D ); 01002 01013 Gan_SquMatrix33 *gan_symmat44_lrmultm34_q ( const Gan_SquMatrix44 *A, const Gan_Matrix34 *B, 01014 const Gan_Matrix34 *C, Gan_SquMatrix33 *D ); 01015 01034 Gan_Matrix34 *gan_mat34_lmultl33_q ( Gan_Matrix34 *A, const Gan_SquMatrix33 *B, 01035 Gan_Matrix34 *C ); 01036 01046 Gan_Matrix34 *gan_mat34_lmultl33I_q ( Gan_Matrix34 *A, const Gan_SquMatrix33 *B, 01047 Gan_Matrix34 *C ); 01048 01058 Gan_Matrix34 *gan_mat34_lmultl33T_q ( Gan_Matrix34 *A, const Gan_SquMatrix33 *B, 01059 Gan_Matrix34 *C ); 01060 01070 Gan_Matrix34 *gan_mat34_lmultl33IT_q ( Gan_Matrix34 *A, const Gan_SquMatrix33 *B, 01071 Gan_Matrix34 *C ); 01072 01082 Gan_Matrix34 *gan_mat34_rmultl44_q ( Gan_Matrix34 *A, const Gan_SquMatrix44 *B, 01083 Gan_Matrix34 *C ); 01084 01094 Gan_Matrix34 *gan_mat34_rmultl44I_q ( Gan_Matrix34 *A, const Gan_SquMatrix44 *B, 01095 Gan_Matrix34 *C ); 01096 01106 Gan_Matrix34 *gan_mat34_rmultl44T_q ( Gan_Matrix34 *A, const Gan_SquMatrix44 *B, 01107 Gan_Matrix34 *C ); 01108 01118 Gan_Matrix34 *gan_mat34_rmultl44IT_q ( Gan_Matrix34 *A, const Gan_SquMatrix44 *B, 01119 Gan_Matrix34 *C ); 01120 01130 Gan_Matrix34 *gan_mat34_lmultl33_i ( Gan_Matrix34 *A, const Gan_SquMatrix33 *B ); 01131 01141 Gan_Matrix34 *gan_mat34_lmultl33I_i ( Gan_Matrix34 *A, const Gan_SquMatrix33 *B ); 01142 01152 Gan_Matrix34 *gan_mat34_lmultl33T_i ( Gan_Matrix34 *A, const Gan_SquMatrix33 *B ); 01153 01163 Gan_Matrix34 *gan_mat34_lmultl33IT_i ( Gan_Matrix34 *A, const Gan_SquMatrix33 *B ); 01164 01174 Gan_Matrix34 *gan_mat34_rmultl44_i ( Gan_Matrix34 *A, const Gan_SquMatrix44 *B ); 01175 01185 Gan_Matrix34 *gan_mat34_rmultl44I_i ( Gan_Matrix34 *A, const Gan_SquMatrix44 *B ); 01186 01196 Gan_Matrix34 *gan_mat34_rmultl44T_i ( Gan_Matrix34 *A, const Gan_SquMatrix44 *B ); 01197 01207 Gan_Matrix34 *gan_mat34_rmultl44IT_i ( Gan_Matrix34 *A, const Gan_SquMatrix44 *B ); 01208 01217 Gan_SquMatrix44 *gan_mat34_slmultT_q ( Gan_Matrix34 *A, const Gan_SquMatrix44 *B ); 01218 01219 01228 Gan_SquMatrix33 *gan_mat34_srmultT_q ( const Gan_Matrix34 *A, Gan_SquMatrix33 *B ); 01229 01230 01245 double gan_mat34_sumsqr_q ( const Gan_Matrix34 *A ); 01246 01253 double gan_mat34_Fnorm_q ( const Gan_Matrix34 *A ); 01254 01264 Gan_Matrix34 *gan_mat34_from_mat_q ( const Gan_Matrix *A, Gan_Matrix34 *B ); 01265 01266 01267 01286 01287 01288 01289 01290 01291 01292 01293 01294 01295 01296 01297 01298 01299 01300 01301 #undef GAN_MATTYPE 01302 #undef GAN_MATRIX_TYPE 01303 #undef GAN_SQUMATRIX_TYPE 01304 #undef GAN_VECTOR_TYPE 01305 #undef GAN_MAT_ELEMENT_TYPE 01306 #undef GAN_REALTYPE 01307 #undef GAN_FWRITE_LENDIAN 01308 #undef GAN_FREAD_LENDIAN 01309 #undef GAN_VECTYPE1 01310 #undef GAN_VECTYPE2 01311 #undef GAN_MATTYPEL 01312 #undef GAN_MATTYPER 01313 #undef GAN_SQUMATTYPEL 01314 #undef GAN_SQUMATTYPER 01315 #undef GAN_FIXED_MATRIX_TYPE 01316 #undef GAN_MAT_FPRINT 01317 #undef GAN_MAT_PRINT 01318 #undef GAN_MAT_FSCANF 01319 #undef GAN_MAT_FWRITE 01320 #undef GAN_MAT_FREAD 01321 #undef GAN_MAT_ZERO_Q 01322 #undef GAN_MAT_ZERO_S 01323 #undef GAN_MAT_COPY_Q 01324 #undef GAN_MAT_COPY_S 01325 #undef GAN_MAT_SCALE_Q 01326 #undef GAN_MAT_SCALE_S 01327 #undef GAN_MAT_SCALE_I 01328 #undef GAN_MAT_DIVIDE_Q 01329 #undef GAN_MAT_DIVIDE_S 01330 #undef GAN_MAT_DIVIDE_I 01331 #undef GAN_MAT_NEGATE_Q 01332 #undef GAN_MAT_NEGATE_S 01333 #undef GAN_MAT_NEGATE_I 01334 #undef GAN_MAT_UNIT_Q 01335 #undef GAN_MAT_UNIT_S 01336 #undef GAN_MAT_UNIT_I 01337 #undef GAN_MAT_ADD_Q 01338 #undef GAN_MAT_ADD_I1 01339 #undef GAN_MAT_ADD_I2 01340 #undef GAN_MAT_INCREMENT 01341 #undef GAN_MAT_ADD_S 01342 #undef GAN_MAT_SUB_Q 01343 #undef GAN_MAT_SUB_I1 01344 #undef GAN_MAT_SUB_I2 01345 #undef GAN_MAT_DECREMENT 01346 #undef GAN_MAT_SUB_S 01347 #undef GAN_VEC_OUTER_Q 01348 #undef GAN_VEC_OUTER_S 01349 #undef GAN_MAT_MULTV_Q 01350 #undef GAN_MAT_MULTV_S 01351 #undef GAN_MAT_MULTV_I 01352 #undef GAN_MATT_MULTV_Q 01353 #undef GAN_MATT_MULTV_S 01354 #undef GAN_MATT_MULTV_I 01355 #undef GAN_MAT_LMULTM_Q 01356 #undef GAN_MAT_LMULTM_S 01357 #undef GAN_MAT_LMULTMT_Q 01358 #undef GAN_MAT_LMULTMT_S 01359 #undef GAN_MAT_RMULTM_Q 01360 #undef GAN_MAT_RMULTM_S 01361 #undef GAN_MAT_RMULTMT_Q 01362 #undef GAN_MAT_RMULTMT_S 01363 #undef GAN_MAT_LMULTMT_SYM_Q 01364 #undef GAN_MAT_LMULTMT_SYM_S 01365 #undef GAN_MAT_RMULTMT_SYM_Q 01366 #undef GAN_MAT_RMULTMT_SYM_S 01367 #undef GAN_MAT_LMULTS_Q 01368 #undef GAN_MAT_LMULTS_S 01369 #undef GAN_MAT_RMULTS_Q 01370 #undef GAN_MAT_RMULTS_S 01371 #undef GAN_SYMMATL_LRMULT_Q 01372 #undef GAN_SYMMATL_LRMULT_S 01373 #undef GAN_SYMMATR_LRMULT_Q 01374 #undef GAN_SYMMATR_LRMULT_S 01375 #undef GAN_MAT_LMULTL_Q 01376 #undef GAN_MAT_LMULTL_S 01377 #undef GAN_MAT_LMULTL_I 01378 #undef GAN_MAT_LMULTLI_Q 01379 #undef GAN_MAT_LMULTLI_S 01380 #undef GAN_MAT_LMULTLI_I 01381 #undef GAN_MAT_LMULTLT_Q 01382 #undef GAN_MAT_LMULTLT_S 01383 #undef GAN_MAT_LMULTLT_I 01384 #undef GAN_MAT_LMULTLIT_Q 01385 #undef GAN_MAT_LMULTLIT_S 01386 #undef GAN_MAT_LMULTLIT_I 01387 #undef GAN_MAT_RMULTL_Q 01388 #undef GAN_MAT_RMULTL_S 01389 #undef GAN_MAT_RMULTL_I 01390 #undef GAN_MAT_RMULTLI_Q 01391 #undef GAN_MAT_RMULTLI_S 01392 #undef GAN_MAT_RMULTLI_I 01393 #undef GAN_MAT_RMULTLT_Q 01394 #undef GAN_MAT_RMULTLT_S 01395 #undef GAN_MAT_RMULTLT_I 01396 #undef GAN_MAT_RMULTLIT_Q 01397 #undef GAN_MAT_RMULTLIT_S 01398 #undef GAN_MAT_RMULTLIT_I 01399 #undef GAN_MAT_SRMULTT_Q 01400 #undef GAN_MAT_SRMULTT_S 01401 #undef GAN_MAT_SRMULTT_I 01402 #undef GAN_MAT_SLMULTT_Q 01403 #undef GAN_MAT_SLMULTT_S 01404 #undef GAN_MAT_SLMULTT_I 01405 #undef GAN_MAT_RMULTLIT_S 01406 #undef GAN_MAT_SUMSQR_Q 01407 #undef GAN_MAT_SUMSQR_S 01408 #undef GAN_MAT_FNORM_Q 01409 #undef GAN_MAT_FNORM_S 01410 #undef GAN_MAT_FROM_MAT_Q 01411 #undef GAN_MAT_FROM_MAT_S 01412 #undef GAN_MAT_FROM_SQUMAT_Q 01413 #undef GAN_MAT_FROM_SQUMAT_S 01414 #undef GAN_SQUMAT_FROM_SQUMAT_Q 01415 #undef GAN_SQUMAT_FROM_SQUMAT_S 01416 01429 #ifdef __cplusplus 01430 } 01431 #endif 01432 01433 #endif