00001
00014 #ifndef _GAN_3X4MATRIXF_H
00015 #define _GAN_3X4MATRIXF_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/3vectorf.h>
00192 #include <gandalf/linalg/4vectorf.h>
00193 #include <gandalf/linalg/3x3matrixf.h>
00194 #include <gandalf/linalg/4x4matrixf.h>
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223 #endif
00224 #include <gandalf/linalg/matf_gen.h>
00225
00226 #ifdef __cplusplus
00227 extern "C" {
00228 #endif
00229
00245
00246 typedef struct Gan_Matrix34_f
00247 {
00248 float xx, xy, xz, xw,
00249 yx, yy, yz, yw,
00250 zx, zy, zz, zw;
00251 } Gan_Matrix34_f;
00252
00253
00254 #define GAN_MAT34F_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_MAT34TF_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_3X4MATF_H
00294
00311 Gan_Matrix34_f *gan_mat34f_fill_q ( Gan_Matrix34_f *A,
00312 float XX, float XY, float XZ, float XW,
00313 float YX, float YY, float YZ, float YW,
00314 float ZX, float ZY, float ZZ, float ZW );
00315
00336 Gan_Matrix33_f *gan_mat34f_rmultm34T_q ( const Gan_Matrix34_f *A, const Gan_Matrix34_f *B,
00337 Gan_Matrix33_f *C );
00338
00360 Gan_Vector3_f *gan_mat34_multv3h_q ( const Gan_Matrix34_f *A, const Gan_Vector3_f *p,
00361 float h, Gan_Vector3_f *q );
00362
00384 void gan_mat34f_get_rows_q ( const Gan_Matrix34_f *A,
00385 Gan_Vector4_f *p, Gan_Vector4_f *q,
00386 Gan_Vector4_f *r );
00387
00399 void gan_mat34f_get_cols_q ( const Gan_Matrix34_f *A,
00400 Gan_Vector3_f *p, Gan_Vector3_f *q,
00401 Gan_Vector3_f *r, Gan_Vector3_f *s );
00402
00410 Gan_Matrix33_f *gan_mat34f_get_m33l_q ( const Gan_Matrix34_f *A, Gan_Matrix33_f *B );
00411
00419 Gan_Vector3_f *gan_mat34f_get_v3r_q ( const Gan_Matrix34_f *A, Gan_Vector3_f *p );
00420
00442 Gan_Matrix34_f *gan_mat34f_set_parts_q ( Gan_Matrix34_f *A,
00443 const Gan_Matrix33_f *B, const Gan_Vector3_f *p );
00444
00456 Gan_Matrix34_f *gan_mat34f_set_cols_q ( Gan_Matrix34_f *A,
00457 const Gan_Vector3_f *p, const Gan_Vector3_f *q,
00458 const Gan_Vector3_f *r, const Gan_Vector3_f *s );
00459
00472 Gan_Matrix34_f *gan_mat34f_set_rows_q ( Gan_Matrix34_f *A,
00473 const Gan_Vector4_f *p, const Gan_Vector4_f *q,
00474 const Gan_Vector4_f *r );
00475
00481 #endif
00482
00483 #define GAN_MATTYPE Gan_Matrix34_f
00484 #define GAN_MATRIX_TYPE Gan_Matrix_f
00485 #define GAN_SQUMATRIX_TYPE Gan_SquMatrix_f
00486 #define GAN_VECTOR_TYPE Gan_Vector_f
00487 #define GAN_MAT_ELEMENT_TYPE GAN_FLOAT
00488 #define GAN_REALTYPE float
00489 #define GAN_FWRITE_LENDIAN gan_fwrite_lendian_f32
00490 #define GAN_FREAD_LENDIAN gan_fread_lendian_f32
00491 #define GAN_VECTYPE1 Gan_Vector3_f
00492 #define GAN_VECTYPE2 Gan_Vector4_f
00493 #define GAN_MATTYPEL Gan_Matrix33_f
00494 #define GAN_MATTYPER Gan_Matrix44_f
00495 #define GAN_SQUMATTYPEL Gan_SquMatrix33_f
00496 #define GAN_SQUMATTYPER Gan_SquMatrix44_f
00497 #define GAN_MAT_FPRINT gan_mat34f_fprint
00498 #define GAN_MAT_PRINT gan_mat34f_print
00499 #define GAN_MAT_FSCANF gan_mat34f_fscanf
00500 #define GAN_MAT_FWRITE gan_mat34f_fwrite
00501 #define GAN_MAT_FREAD gan_mat34f_fread
00502 #define GAN_MAT_ZERO_Q gan_mat34f_zero_q
00503 #define GAN_MAT_ZERO_S gan_mat34f_zero_s
00504 #define GAN_MAT_COPY_Q gan_mat34f_copy_q
00505 #define GAN_MAT_COPY_S gan_mat34f_copy_s
00506 #define GAN_MAT_SCALE_Q gan_mat34f_scale_q
00507 #define GAN_MAT_SCALE_I gan_mat34f_scale_i
00508 #define GAN_MAT_SCALE_S gan_mat34f_scale_s
00509 #define GAN_MAT_DIVIDE_Q gan_mat34f_divide_q
00510 #define GAN_MAT_DIVIDE_I gan_mat34f_divide_i
00511 #define GAN_MAT_DIVIDE_S gan_mat34f_divide_s
00512 #define GAN_MAT_NEGATE_Q gan_mat34f_negate_q
00513 #define GAN_MAT_NEGATE_I gan_mat34f_negate_i
00514 #define GAN_MAT_NEGATE_S gan_mat34f_negate_s
00515 #define GAN_MAT_UNIT_Q gan_mat34f_unit_q
00516 #define GAN_MAT_UNIT_I gan_mat34f_unit_i
00517 #define GAN_MAT_UNIT_S gan_mat34f_unit_s
00518 #define GAN_MAT_ADD_Q gan_mat34f_add_q
00519 #define GAN_MAT_ADD_I1 gan_mat34f_add_i1
00520 #define GAN_MAT_ADD_I2 gan_mat34f_add_i2
00521 #define GAN_MAT_INCREMENT gan_mat34f_increment
00522 #define GAN_MAT_ADD_S gan_mat34f_add_s
00523 #define GAN_MAT_SUB_Q gan_mat34f_sub_q
00524 #define GAN_MAT_SUB_I1 gan_mat34f_sub_i1
00525 #define GAN_MAT_SUB_I2 gan_mat34f_sub_i2
00526 #define GAN_MAT_DECREMENT gan_mat34f_decrement
00527 #define GAN_MAT_SUB_S gan_mat34f_sub_s
00528 #define GAN_VEC_OUTER_Q gan_vec34f_outer_q
00529 #define GAN_VEC_OUTER_S gan_vec34f_outer_s
00530 #define GAN_MAT_MULTV_Q gan_mat34f_multv4_q
00531 #define GAN_MAT_MULTV_S gan_mat34f_multv4_s
00532 #define GAN_MATT_MULTV_Q gan_mat34Tf_multv2_q
00533 #define GAN_MATT_MULTV_S gan_mat34Tf_multv2_s
00534 #define GAN_MAT_LMULTM_Q gan_mat34f_lmultm33_q
00535 #define GAN_MAT_LMULTM_S gan_mat34f_lmultm33_s
00536 #define GAN_MAT_LMULTMT_Q gan_mat34f_lmultm33T_q
00537 #define GAN_MAT_LMULTMT_S gan_mat34f_lmultm33T_s
00538 #define GAN_MAT_RMULTM_Q gan_mat34f_rmultm44_q
00539 #define GAN_MAT_RMULTM_S gan_mat34f_rmultm44_s
00540 #define GAN_MAT_RMULTMT_Q gan_mat34f_rmultm44T_q
00541 #define GAN_MAT_RMULTMT_S gan_mat34f_rmultm44T_s
00542 #define GAN_MAT_LMULTMT_SYM_Q gan_mat34f_lmultm34T_sym_q
00543 #define GAN_MAT_LMULTMT_SYM_S gan_mat34f_lmultm34T_sym_s
00544 #define GAN_MAT_RMULTMT_SYM_Q gan_mat34f_rmultm34T_sym_q
00545 #define GAN_MAT_RMULTMT_SYM_S gan_mat34f_rmultm34T_sym_s
00546 #define GAN_MAT_SLMULTT_Q gan_mat34f_slmultT_q
00547 #define GAN_MAT_SLMULTT_S gan_mat34f_slmultT_s
00548 #define GAN_MAT_SRMULTT_Q gan_mat34f_srmultT_q
00549 #define GAN_MAT_SRMULTT_S gan_mat34f_srmultT_s
00550 #define GAN_MAT_LMULTS_Q gan_mat34f_lmults33_q
00551 #define GAN_MAT_LMULTS_S gan_mat34f_lmults33_s
00552 #define GAN_MAT_RMULTS_Q gan_mat34f_rmults44_q
00553 #define GAN_MAT_RMULTS_S gan_mat34f_rmults44_s
00554 #define GAN_SYMMATL_LRMULT_Q gan_symmat33f_lrmultm34T_q
00555 #define GAN_SYMMATL_LRMULT_S gan_symmat33f_lrmultm34T_s
00556 #define GAN_SYMMATR_LRMULT_Q gan_symmat44f_lrmultm34_q
00557 #define GAN_SYMMATR_LRMULT_S gan_symmat44f_lrmultm34_s
00558 #define GAN_MAT_LMULTL_Q gan_mat34f_lmultl33_q
00559 #define GAN_MAT_LMULTL_S gan_mat34f_lmultl33_s
00560 #define GAN_MAT_LMULTL_I gan_mat34f_lmultl33_i
00561 #define GAN_MAT_LMULTLI_Q gan_mat34f_lmultl33I_q
00562 #define GAN_MAT_LMULTLI_S gan_mat34f_lmultl33I_s
00563 #define GAN_MAT_LMULTLI_I gan_mat34f_lmultl33I_i
00564 #define GAN_MAT_LMULTLT_Q gan_mat34f_lmultl33T_q
00565 #define GAN_MAT_LMULTLT_S gan_mat34f_lmultl33T_s
00566 #define GAN_MAT_LMULTLT_I gan_mat34f_lmultl33T_i
00567 #define GAN_MAT_LMULTLIT_Q gan_mat34f_lmultl33IT_q
00568 #define GAN_MAT_LMULTLIT_S gan_mat34f_lmultl33IT_s
00569 #define GAN_MAT_LMULTLIT_I gan_mat34f_lmultl33IT_i
00570 #define GAN_MAT_RMULTL_Q gan_mat34f_rmultl44_q
00571 #define GAN_MAT_RMULTL_S gan_mat34f_rmultl44_s
00572 #define GAN_MAT_RMULTL_I gan_mat34f_rmultl44_i
00573 #define GAN_MAT_RMULTLI_Q gan_mat34f_rmultl44I_q
00574 #define GAN_MAT_RMULTLI_S gan_mat34f_rmultl44I_s
00575 #define GAN_MAT_RMULTLI_I gan_mat34f_rmultl44I_i
00576 #define GAN_MAT_RMULTLT_Q gan_mat34f_rmultl44T_q
00577 #define GAN_MAT_RMULTLT_S gan_mat34f_rmultl44T_s
00578 #define GAN_MAT_RMULTLT_I gan_mat34f_rmultl44T_i
00579 #define GAN_MAT_RMULTLIT_Q gan_mat34f_rmultl44IT_q
00580 #define GAN_MAT_RMULTLIT_S gan_mat34f_rmultl44IT_s
00581 #define GAN_MAT_RMULTLIT_I gan_mat34f_rmultl44IT_i
00582 #define GAN_MAT_SUMSQR_Q gan_mat34f_sumsqr_q
00583 #define GAN_MAT_SUMSQR_S gan_mat34f_sumsqr_s
00584 #define GAN_MAT_FNORM_Q gan_mat34f_Fnorm_q
00585 #define GAN_MAT_FNORM_S gan_mat34f_Fnorm_s
00586 #define GAN_MAT_FROM_MAT_Q gan_mat34f_from_matf_q
00587 #define GAN_MAT_FROM_MAT_S gan_mat34f_from_matf_s
00588
00589 #ifndef _GAN_3X4MATF_H
00590 #define _GAN_3X4MATF_H
00591
00592
00593 #endif
00594
00607
00608
00609
00610
00611
00612
00613
00614
00615
00616
00617
00618
00619
00620
00621
00622
00623
00624
00625
00626
00627
00638 Gan_Matrix34_f *gan_mat34f_zero_q ( const Gan_Matrix34_f *A );
00639
00656 Gan_Matrix34_f *gan_mat34f_copy_q ( Gan_Matrix34_f *A, Gan_Matrix34_f *B );
00657
00675 Gan_Matrix34_f *gan_mat34f_scale_q ( Gan_Matrix34_f *A, float a,
00676 Gan_Matrix34_f *B );
00677
00685 Gan_Matrix34_f *gan_mat34f_scale_i ( Gan_Matrix34_f *A, float a );
00686
00695 Gan_Matrix34_f *gan_mat34f_divide_q ( Gan_Matrix34_f *A, float a,
00696 Gan_Matrix34_f *B );
00697
00705 Gan_Matrix34_f *gan_mat34f_divide_i ( Gan_Matrix34_f *A, float a );
00706
00714 Gan_Matrix34_f *gan_mat34f_negate_q ( Gan_Matrix34_f *A, Gan_Matrix34_f *B );
00715
00723 Gan_Matrix34_f *gan_mat34f_negate_i ( Gan_Matrix34_f *A );
00724
00732 Gan_Matrix34_f *gan_mat34f_unit_i ( Gan_Matrix34_f *A );
00733
00751 Gan_Matrix34_f *gan_mat34f_add_q ( Gan_Matrix34_f *A, Gan_Matrix34_f *B, Gan_Matrix34_f *C );
00752
00761 Gan_Matrix34_f *gan_mat34f_add_i1 ( Gan_Matrix34_f *A, Gan_Matrix34_f *B );
00762
00771 Gan_Matrix34_f *gan_mat34f_add_i2 ( Gan_Matrix34_f *A, Gan_Matrix34_f *B );
00772
00781 Gan_Matrix34_f *gan_mat34f_increment ( Gan_Matrix34_f *A, Gan_Matrix34_f *B );
00782
00800 Gan_Matrix34_f *gan_mat34f_sub_q ( Gan_Matrix34_f *A, Gan_Matrix34_f *B, Gan_Matrix34_f *C );
00801
00810 Gan_Matrix34_f *gan_mat34f_sub_i1 ( Gan_Matrix34_f *A, Gan_Matrix34_f *B );
00811
00820 Gan_Matrix34_f *gan_mat34f_sub_i2 ( Gan_Matrix34_f *A, Gan_Matrix34_f *B );
00821
00830 Gan_Matrix34_f *gan_mat34f_decrement ( Gan_Matrix34_f *A, Gan_Matrix34_f *B );
00831
00849 Gan_Matrix34_f *gan_vec34f_outer_q ( const Gan_Vector3_f *p, const Gan_Vector4_f *q,
00850 Gan_Matrix34_f *A );
00851
00860 Gan_Vector3_f *gan_mat34f_multv4_q ( const Gan_Matrix34_f *A, Gan_Vector4_f *p,
00861 Gan_Vector3_f *q );
00862
00863
00872 Gan_Vector4_f *gan_mat34Tf_multv2_q ( const Gan_Matrix34_f *A, Gan_Vector3_f *p,
00873 Gan_Vector4_f *q );
00874
00875
00894 Gan_Matrix34_f *gan_mat34f_lmultm33_q ( Gan_Matrix34_f *A, const Gan_Matrix33_f *B,
00895 Gan_Matrix34_f *C );
00896
00906 Gan_Matrix34_f *gan_mat34f_lmultm33T_q ( Gan_Matrix34_f *A, const Gan_Matrix33_f *B,
00907 Gan_Matrix34_f *C );
00908
00918 Gan_Matrix34_f *gan_mat34f_rmultm44_q ( Gan_Matrix34_f *A, const Gan_Matrix44_f *B,
00919 Gan_Matrix34_f *C );
00920
00930 Gan_Matrix34_f *gan_mat34f_rmultm44T_q ( Gan_Matrix34_f *A, const Gan_Matrix44_f *B,
00931 Gan_Matrix34_f *C );
00932
00944 Gan_SquMatrix44_f *gan_mat34f_lmultm34T_sym_q ( const Gan_Matrix34_f *A, const Gan_Matrix34_f *B,
00945 Gan_SquMatrix44_f *C );
00946
00958 Gan_SquMatrix33_f *gan_mat34f_rmultm34T_sym_q ( const Gan_Matrix34_f *A, const Gan_Matrix34_f *B,
00959 Gan_SquMatrix33_f *C );
00960
00969 Gan_Matrix34_f *gan_mat34f_lmults33_q ( Gan_Matrix34_f *A, const Gan_SquMatrix33_f *B,
00970 Gan_Matrix34_f *C );
00971
00980 Gan_Matrix34_f *gan_mat34f_rmults44_q ( Gan_Matrix34_f *A, const Gan_SquMatrix44_f *B,
00981 Gan_Matrix34_f *C );
00982
01002 Gan_SquMatrix44_f *gan_symmat33f_lrmultm34T_q ( const Gan_SquMatrix33_f *A, const Gan_Matrix34_f *B,
01003 const Gan_Matrix34_f *C, Gan_SquMatrix44_f *D );
01004
01015 Gan_SquMatrix33_f *gan_symmat44f_lrmultm34_q ( const Gan_SquMatrix44_f *A, const Gan_Matrix34_f *B,
01016 const Gan_Matrix34_f *C, Gan_SquMatrix33_f *D );
01017
01036 Gan_Matrix34_f *gan_mat34f_lmultl33_q ( Gan_Matrix34_f *A, const Gan_SquMatrix33_f *B,
01037 Gan_Matrix34_f *C );
01038
01048 Gan_Matrix34_f *gan_mat34f_lmultl33I_q ( Gan_Matrix34_f *A, const Gan_SquMatrix33_f *B,
01049 Gan_Matrix34_f *C );
01050
01060 Gan_Matrix34_f *gan_mat34f_lmultl33T_q ( Gan_Matrix34_f *A, const Gan_SquMatrix33_f *B,
01061 Gan_Matrix34_f *C );
01062
01072 Gan_Matrix34_f *gan_mat34f_lmultl33IT_q ( Gan_Matrix34_f *A, const Gan_SquMatrix33_f *B,
01073 Gan_Matrix34_f *C );
01074
01084 Gan_Matrix34_f *gan_mat34f_rmultl44_q ( Gan_Matrix34_f *A, const Gan_SquMatrix44_f *B,
01085 Gan_Matrix34_f *C );
01086
01096 Gan_Matrix34_f *gan_mat34f_rmultl44I_q ( Gan_Matrix34_f *A, const Gan_SquMatrix44_f *B,
01097 Gan_Matrix34_f *C );
01098
01108 Gan_Matrix34_f *gan_mat34f_rmultl44T_q ( Gan_Matrix34_f *A, const Gan_SquMatrix44_f *B,
01109 Gan_Matrix34_f *C );
01110
01120 Gan_Matrix34_f *gan_mat34f_rmultl44IT_q ( Gan_Matrix34_f *A, const Gan_SquMatrix44_f *B,
01121 Gan_Matrix34_f *C );
01122
01132 Gan_Matrix34_f *gan_mat34f_lmultl33_i ( Gan_Matrix34_f *A, const Gan_SquMatrix33_f *B );
01133
01143 Gan_Matrix34_f *gan_mat34f_lmultl33I_i ( Gan_Matrix34_f *A, const Gan_SquMatrix33_f *B );
01144
01154 Gan_Matrix34_f *gan_mat34f_lmultl33T_i ( Gan_Matrix34_f *A, const Gan_SquMatrix33_f *B );
01155
01165 Gan_Matrix34_f *gan_mat34f_lmultl33IT_i ( Gan_Matrix34_f *A, const Gan_SquMatrix33_f *B );
01166
01176 Gan_Matrix34_f *gan_mat34f_rmultl44_i ( Gan_Matrix34_f *A, const Gan_SquMatrix44_f *B );
01177
01187 Gan_Matrix34_f *gan_mat34f_rmultl44I_i ( Gan_Matrix34_f *A, const Gan_SquMatrix44_f *B );
01188
01198 Gan_Matrix34_f *gan_mat34f_rmultl44T_i ( Gan_Matrix34_f *A, const Gan_SquMatrix44_f *B );
01199
01209 Gan_Matrix34_f *gan_mat34f_rmultl44IT_i ( Gan_Matrix34_f *A, const Gan_SquMatrix44_f *B );
01210
01219 Gan_SquMatrix44_f *gan_mat34f_slmultT_q ( Gan_Matrix34_f *A, const Gan_SquMatrix44_f *B );
01220
01221
01230 Gan_SquMatrix33_f *gan_mat34f_srmultT_q ( const Gan_Matrix34_f *A, Gan_SquMatrix33_f *B );
01231
01232
01247 float gan_mat34f_sumsqr_q ( const Gan_Matrix34_f *A );
01248
01255 float gan_mat34f_Fnorm_q ( const Gan_Matrix34_f *A );
01256
01266 Gan_Matrix34_f *gan_mat34f_from_matf_q ( const Gan_Matrix_f *A, Gan_Matrix34_f *B );
01267
01268
01269
01288
01289
01290
01291
01292
01293
01294
01295
01296
01297
01298
01299
01300
01301
01302
01303 #undef GAN_MATTYPE
01304 #undef GAN_MATRIX_TYPE
01305 #undef GAN_SQUMATRIX_TYPE
01306 #undef GAN_VECTOR_TYPE
01307 #undef GAN_MAT_ELEMENT_TYPE
01308 #undef GAN_REALTYPE
01309 #undef GAN_FWRITE_LENDIAN
01310 #undef GAN_FREAD_LENDIAN
01311 #undef GAN_VECTYPE1
01312 #undef GAN_VECTYPE2
01313 #undef GAN_MATTYPEL
01314 #undef GAN_MATTYPER
01315 #undef GAN_SQUMATTYPEL
01316 #undef GAN_SQUMATTYPER
01317 #undef GAN_FIXED_MATRIX_TYPE
01318 #undef GAN_MAT_FPRINT
01319 #undef GAN_MAT_PRINT
01320 #undef GAN_MAT_FSCANF
01321 #undef GAN_MAT_FWRITE
01322 #undef GAN_MAT_FREAD
01323 #undef GAN_MAT_ZERO_Q
01324 #undef GAN_MAT_ZERO_S
01325 #undef GAN_MAT_COPY_Q
01326 #undef GAN_MAT_COPY_S
01327 #undef GAN_MAT_SCALE_Q
01328 #undef GAN_MAT_SCALE_S
01329 #undef GAN_MAT_SCALE_I
01330 #undef GAN_MAT_DIVIDE_Q
01331 #undef GAN_MAT_DIVIDE_S
01332 #undef GAN_MAT_DIVIDE_I
01333 #undef GAN_MAT_NEGATE_Q
01334 #undef GAN_MAT_NEGATE_S
01335 #undef GAN_MAT_NEGATE_I
01336 #undef GAN_MAT_UNIT_Q
01337 #undef GAN_MAT_UNIT_S
01338 #undef GAN_MAT_UNIT_I
01339 #undef GAN_MAT_ADD_Q
01340 #undef GAN_MAT_ADD_I1
01341 #undef GAN_MAT_ADD_I2
01342 #undef GAN_MAT_INCREMENT
01343 #undef GAN_MAT_ADD_S
01344 #undef GAN_MAT_SUB_Q
01345 #undef GAN_MAT_SUB_I1
01346 #undef GAN_MAT_SUB_I2
01347 #undef GAN_MAT_DECREMENT
01348 #undef GAN_MAT_SUB_S
01349 #undef GAN_VEC_OUTER_Q
01350 #undef GAN_VEC_OUTER_S
01351 #undef GAN_MAT_MULTV_Q
01352 #undef GAN_MAT_MULTV_S
01353 #undef GAN_MAT_MULTV_I
01354 #undef GAN_MATT_MULTV_Q
01355 #undef GAN_MATT_MULTV_S
01356 #undef GAN_MATT_MULTV_I
01357 #undef GAN_MAT_LMULTM_Q
01358 #undef GAN_MAT_LMULTM_S
01359 #undef GAN_MAT_LMULTMT_Q
01360 #undef GAN_MAT_LMULTMT_S
01361 #undef GAN_MAT_RMULTM_Q
01362 #undef GAN_MAT_RMULTM_S
01363 #undef GAN_MAT_RMULTMT_Q
01364 #undef GAN_MAT_RMULTMT_S
01365 #undef GAN_MAT_LMULTMT_SYM_Q
01366 #undef GAN_MAT_LMULTMT_SYM_S
01367 #undef GAN_MAT_RMULTMT_SYM_Q
01368 #undef GAN_MAT_RMULTMT_SYM_S
01369 #undef GAN_MAT_LMULTS_Q
01370 #undef GAN_MAT_LMULTS_S
01371 #undef GAN_MAT_RMULTS_Q
01372 #undef GAN_MAT_RMULTS_S
01373 #undef GAN_SYMMATL_LRMULT_Q
01374 #undef GAN_SYMMATL_LRMULT_S
01375 #undef GAN_SYMMATR_LRMULT_Q
01376 #undef GAN_SYMMATR_LRMULT_S
01377 #undef GAN_MAT_LMULTL_Q
01378 #undef GAN_MAT_LMULTL_S
01379 #undef GAN_MAT_LMULTL_I
01380 #undef GAN_MAT_LMULTLI_Q
01381 #undef GAN_MAT_LMULTLI_S
01382 #undef GAN_MAT_LMULTLI_I
01383 #undef GAN_MAT_LMULTLT_Q
01384 #undef GAN_MAT_LMULTLT_S
01385 #undef GAN_MAT_LMULTLT_I
01386 #undef GAN_MAT_LMULTLIT_Q
01387 #undef GAN_MAT_LMULTLIT_S
01388 #undef GAN_MAT_LMULTLIT_I
01389 #undef GAN_MAT_RMULTL_Q
01390 #undef GAN_MAT_RMULTL_S
01391 #undef GAN_MAT_RMULTL_I
01392 #undef GAN_MAT_RMULTLI_Q
01393 #undef GAN_MAT_RMULTLI_S
01394 #undef GAN_MAT_RMULTLI_I
01395 #undef GAN_MAT_RMULTLT_Q
01396 #undef GAN_MAT_RMULTLT_S
01397 #undef GAN_MAT_RMULTLT_I
01398 #undef GAN_MAT_RMULTLIT_Q
01399 #undef GAN_MAT_RMULTLIT_S
01400 #undef GAN_MAT_RMULTLIT_I
01401 #undef GAN_MAT_SRMULTT_Q
01402 #undef GAN_MAT_SRMULTT_S
01403 #undef GAN_MAT_SRMULTT_I
01404 #undef GAN_MAT_SLMULTT_Q
01405 #undef GAN_MAT_SLMULTT_S
01406 #undef GAN_MAT_SLMULTT_I
01407 #undef GAN_MAT_RMULTLIT_S
01408 #undef GAN_MAT_SUMSQR_Q
01409 #undef GAN_MAT_SUMSQR_S
01410 #undef GAN_MAT_FNORM_Q
01411 #undef GAN_MAT_FNORM_S
01412 #undef GAN_MAT_FROM_MAT_Q
01413 #undef GAN_MAT_FROM_MAT_S
01414 #undef GAN_MAT_FROM_SQUMAT_Q
01415 #undef GAN_MAT_FROM_SQUMAT_S
01416 #undef GAN_SQUMAT_FROM_SQUMAT_Q
01417 #undef GAN_SQUMAT_FROM_SQUMAT_S
01418
01431 #ifdef __cplusplus
01432 }
01433 #endif
01434
01435 #endif