00001
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef _GAN_2X4MATRIXF_H
00030 #define _GAN_2X4MATRIXF_H
00031
00032 #include <stdlib.h>
00033 #include <stdio.h>
00034 #include <math.h>
00035 #include <gandalf/common/misc_defs.h>
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064 #ifndef _GAN_REPEAT24_H
00065 #define _GAN_REPEAT24_H
00066
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095 #ifndef _GAN_REPEAT4_H
00096 #define _GAN_REPEAT4_H
00097
00098 #ifdef __cplusplus
00099 extern "C" {
00100 #endif
00101
00102
00103 #define GAN_REP4_AS(a,b,p1,p2,p3,p4) (a p1 b, a p2 b, a p3 b, a p4 b)
00104 #define GAN_REP4_AS_C(a,b) GAN_REP4_AS(a,b,x,y,z,w)
00105 #define GAN_REP4_A(a,p1,p2,p3,p4) (a p1, a p2, a p3, a p4)
00106 #define GAN_REP4_A_C(a) GAN_REP4_A(a,x,y,z,w)
00107
00108 #define GAN_FREP4_A(a,b,p1,p2,p3,p4,q1,q2,q3,q4)\
00109 (a p1 b q1, a p2 b q2,\
00110 a p3 b q3, a p4 b q4)
00111 #define GAN_FREP4_A_C(a,b,p1,p2,p3,p4) GAN_FREP4_A(a,b,x,y,z,w,p1,p2,p3,p4)
00112
00113 #define GAN_REP4_ABS(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4)\
00114 (a p1 b q1 c, a p2 b q2 c, a p3 b q3 c, a p4 b q4 c)
00115 #define GAN_REP4_AAS(a,b,c,p1,p2,p3,p4)\
00116 GAN_REP4_ABS(a,b,c,p1,p2,p3,p4,p1,p2,p3,p4)
00117 #define GAN_REP4_AAS_C(a,b,c) GAN_REP4_AAS(a,b,c,x,y,z,w)
00118
00119 #define GAN_REP4_AB(a,b,p1,p2,p3,p4,q1,q2,q3,q4)\
00120 (a p1 b q1, a p2 b q2, a p3 b q3, a p4 b q4)
00121 #define GAN_REP4_AA(a,b,p1,p2,p3,p4)\
00122 GAN_REP4_AB(a,b,p1,p2,p3,p4,p1,p2,p3,p4)
00123 #define GAN_REP4_AA_C(a,b) GAN_REP4_AA(a,b,x,y,z,w)
00124
00125 #define GAN_REP4_ABCS(a,b,c,d,p1,p2,p3,p4,q1,q2,q3,q4,r1,r2,r3,r4)\
00126 (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)
00127 #define GAN_REP4_ABC(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4,r1,r2,r3,r4)\
00128 (a p1 b q1 c r1, a p2 b q2 c r2, a p3 b q3 c r3, a p4 b q4 c r4)
00129 #define GAN_REP4_AAA(a,b,c,p1,p2,p3,p4)\
00130 GAN_REP4_ABC(a,b,c,p1,p2,p3,p4,p1,p2,p3,p4,p1,p2,p3,p4)
00131 #define GAN_REP4_AAA_C(a,b,c) GAN_REP4_AAA(a,b,c,x,y,z,w)
00132
00133 #define GAN_REP4_OP_AB(a,b,p1,p2,p3,p4,q1,q2,q3,q4,op)\
00134 (a p1 b q1 op a p2 b q2 op a p3 b q3 op a p4 b q4)
00135 #define GAN_REP4_OP_AA(a,b,p1,p2,p3,p4,op)\
00136 GAN_REP4_OP_AB(a,b,p1,p2,p3,p4,p1,p2,p3,p4,op)
00137 #define GAN_REP4_OP_AA_C(a,b,op) GAN_REP4_OP_AA(a,b,x,y,z,w,op)
00138
00139 #ifdef __cplusplus
00140 }
00141 #endif
00142
00143 #endif
00144
00145 #ifdef __cplusplus
00146 extern "C" {
00147 #endif
00148
00149
00150
00151 #define GAN_FREP24_A(a,b,p1,p2,q1,q2,q3,q4,r11,r12,r13,r14,r21,r22,r23,r24)\
00152 (GAN_FREP4_A(a,b,p1##q1,p1##q2,p1##q3,p1##q4,r11,r12,r13,r14),\
00153 GAN_FREP4_A(a,b,p2##q1,p2##q2,p2##q3,p2##q4,r21,r22,r23,r24))
00154 #define GAN_FREP24_A_C(a,b,r11,r12,r13,r14,r21,r22,r23,r24) \
00155 GAN_FREP24_A(a,b,x,y,x,y,z,w,r11,r12,r13,r14,r21,r22,r23,r24)
00156
00157
00158 #define GAN_REP24_ABCS(a,b,c,d,p1,p2,q1,q2,q3,q4,r1,r2,s1,s2,s3,s4,t1,t2,u1,u2,u3,u4)\
00159 (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),\
00160 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))
00161 #define GAN_REP24_ABC(a,b,c,p1,p2,q1,q2,q3,q4,r1,r2,s1,s2,s3,s4,t1,t2,u1,u2,u3,u4)\
00162 (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),\
00163 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))
00164
00165 #define GAN_REP24_AAAS(a,b,c,d,p1,p2,q1,q2,q3,q4)\
00166 GAN_REP24_ABCS(a,b,c,d,p1,p2,q1,q2,q3,q4,p1,p2,q1,q2,q3,q4,p1,p2,q1,q2,q3,q4)
00167 #define GAN_REP24_AAA(a,b,c,p1,p2,q1,q2,q3,q4)\
00168 GAN_REP24_ABC(a,b,c,p1,p2,q1,q2,q3,q4,p1,p2,q1,q2,q3,q4,p1,p2,q1,q2,q3,q4)
00169 #define GAN_REP24_ABS(a,b,c,p1,p2,q1,q2,q3,q4,r1,r2,s1,s2,s3,s4)\
00170 (GAN_REP4_ABS(a,b,c,p1##q1,p1##q2,p1##q3,p1##q4,r1##s1,r1##s2,r1##s3,r1##s4),\
00171 GAN_REP4_ABS(a,b,c,p2##q1,p2##q2,p2##q3,p2##q4,r2##s1,r2##s2,r2##s3,r2##s4))
00172 #define GAN_REP24_AB(a,b,p1,p2,q1,q2,q3,q4,r1,r2,s1,s2,s3,s4)\
00173 (GAN_REP4_AB(a,b,p1##q1,p1##q2,p1##q3,p1##q4,r1##s1,r1##s2,r1##s3,r1##s4),\
00174 GAN_REP4_AB(a,b,p2##q1,p2##q2,p2##q3,p2##q4,r2##s1,r2##s2,r2##s3,r2##s4))
00175 #define GAN_REP24_AAS(a,b,c,p1,p2,q1,q2,q3,q4)\
00176 GAN_REP24_ABS(a,b,c,p1,p2,q1,q2,q3,q4,p1,p2,q1,q2,q3,q4)
00177 #define GAN_REP24_AA(a,b,p1,p2,q1,q2,q3,q4)\
00178 GAN_REP24_AB(a,b,p1,p2,q1,q2,q3,q4,p1,p2,q1,q2,q3,q4)
00179 #define GAN_REP24_AS(a,b,p1,p2,q1,q2,q3,q4)\
00180 (GAN_REP4_AS(a,b,p1##q1,p1##q2,p1##q3,p1##q4),\
00181 GAN_REP4_AS(a,b,p2##q1,p2##q2,p2##q3,p2##q4))
00182 #define GAN_REP24_A(a,p1,p2,q1,q2,q3,q4)\
00183 (GAN_REP4_A(a,p1##q1,p1##q2,p1##q3,p1##q4),\
00184 GAN_REP4_A(a,p2##q1,p2##q2,p2##q3,p2##q4))
00185
00186
00187 #define GAN_REP24_AS_C(a,b) GAN_REP24_AS(a,b,x,y,x,y,z,w)
00188 #define GAN_REP24_AAS_C(a,b,c) GAN_REP24_AAS(a,b,c,x,y,x,y,z,w)
00189 #define GAN_REP24_AAAS_C(a,b,c,d) GAN_REP24_AAAS(a,b,c,d,x,y,x,y,z,w)
00190 #define GAN_REP24_A_C(a) GAN_REP24_A(a,x,y,x,y,z,w)
00191 #define GAN_REP24_AA_C(a,b) GAN_REP24_AA(a,b,x,y,x,y,z,w)
00192 #define GAN_REP24_AAA_C(a,b,c) GAN_REP24_AAA(a,b,c,x,y,x,y,z,w)
00193
00194 #ifdef __cplusplus
00195 }
00196 #endif
00197
00198 #endif
00199 #include <gandalf/linalg/2vectorf.h>
00200 #include <gandalf/linalg/4vectorf.h>
00201 #include <gandalf/linalg/2x2matrixf.h>
00202 #include <gandalf/linalg/4x4matrixf.h>
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231 #endif
00232 #include <gandalf/linalg/matf_gen.h>
00233
00234 #ifdef __cplusplus
00235 extern "C" {
00236 #endif
00237
00253
00254 typedef struct Gan_Matrix24_f
00255 {
00256 float xx, xy, xz, xw,
00257 yx, yy, yz, yw;
00258 } Gan_Matrix24_f;
00259
00260
00261 #define GAN_MAT24F_MULT1D(a,b,c,p1,p2,q1,q2,q3,q4)\
00262 (a p1 = GAN_REP4_OP_AB(b,* c,xx,xy,xz,xw,q1,q2,q3,q4,+),\
00263 a p2 = GAN_REP4_OP_AB(b,* c,yx,yy,yz,yw,q1,q2,q3,q4,+))
00264 #define GAN_MAT24TF_MULT1D(a,b,c,p1,p2,p3,p4,q1,q2)\
00265 (a p1 = GAN_REP2_OP_AB(b,* c,xx,yx,q1,q2,+),\
00266 a p2 = GAN_REP2_OP_AB(b,* c,xy,yy,q1,q2,+),\
00267 a p3 = GAN_REP2_OP_AB(b,* c,xz,yz,q1,q2,+),\
00268 a p4 = GAN_REP2_OP_AB(b,* c,xw,yw,q1,q2,+))
00269
00270
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299 #ifndef _GAN_2X4MATF_H
00300
00317 Gan_Matrix24_f *gan_mat24f_fill_q ( Gan_Matrix24_f *A,
00318 float XX, float XY, float XZ, float XW,
00319 float YX, float YY, float YZ, float YW );
00320
00342 Gan_Vector2_f *gan_mat24f_multv3h_q ( const Gan_Matrix24_f *A,
00343 const Gan_Vector3_f *p, float h,
00344 Gan_Vector2_f *q );
00345
00366 void gan_mat24f_get_rows_q ( const Gan_Matrix24_f *A,
00367 Gan_Vector4_f *p, Gan_Vector4_f *q );
00368
00380 void gan_mat24f_get_cols_q ( const Gan_Matrix24_f *A,
00381 Gan_Vector2_f *p, Gan_Vector2_f *q,
00382 Gan_Vector2_f *r, Gan_Vector2_f *s );
00383
00389 #endif
00390
00391 #define GAN_MATTYPE Gan_Matrix24_f
00392 #define GAN_MATRIX_TYPE Gan_Matrix_f
00393 #define GAN_SQUMATRIX_TYPE Gan_SquMatrix_f
00394 #define GAN_VECTOR_TYPE Gan_Vector_f
00395 #define GAN_MAT_ELEMENT_TYPE GAN_FLOAT
00396 #define GAN_REALTYPE float
00397 #define GAN_FWRITE_LENDIAN gan_fwrite_lendian_f32
00398 #define GAN_FREAD_LENDIAN gan_fread_lendian_f32
00399 #define GAN_VECTYPE1 Gan_Vector2_f
00400 #define GAN_VECTYPE2 Gan_Vector4_f
00401 #define GAN_MATTYPEL Gan_Matrix22_f
00402 #define GAN_MATTYPER Gan_Matrix44_f
00403 #define GAN_SQUMATTYPEL Gan_SquMatrix22_f
00404 #define GAN_SQUMATTYPER Gan_SquMatrix44_f
00405 #define GAN_MAT_FPRINT gan_mat24f_fprint
00406 #define GAN_MAT_PRINT gan_mat24f_print
00407 #define GAN_MAT_FSCANF gan_mat24f_fscanf
00408 #define GAN_MAT_FWRITE gan_mat24f_fwrite
00409 #define GAN_MAT_FREAD gan_mat24f_fread
00410 #define GAN_MAT_ZERO_Q gan_mat24f_zero_q
00411 #define GAN_MAT_ZERO_S gan_mat24f_zero_s
00412 #define GAN_MAT_COPY_Q gan_mat24f_copy_q
00413 #define GAN_MAT_COPY_S gan_mat24f_copy_s
00414 #define GAN_MAT_SCALE_Q gan_mat24f_scale_q
00415 #define GAN_MAT_SCALE_I gan_mat24f_scale_i
00416 #define GAN_MAT_SCALE_S gan_mat24f_scale_s
00417 #define GAN_MAT_DIVIDE_Q gan_mat24f_divide_q
00418 #define GAN_MAT_DIVIDE_I gan_mat24f_divide_i
00419 #define GAN_MAT_DIVIDE_S gan_mat24f_divide_s
00420 #define GAN_MAT_NEGATE_Q gan_mat24f_negate_q
00421 #define GAN_MAT_NEGATE_I gan_mat24f_negate_i
00422 #define GAN_MAT_NEGATE_S gan_mat24f_negate_s
00423 #define GAN_MAT_UNIT_Q gan_mat24f_unit_q
00424 #define GAN_MAT_UNIT_I gan_mat24f_unit_i
00425 #define GAN_MAT_UNIT_S gan_mat24f_unit_s
00426 #define GAN_MAT_ADD_Q gan_mat24f_add_q
00427 #define GAN_MAT_ADD_I1 gan_mat24f_add_i1
00428 #define GAN_MAT_ADD_I2 gan_mat24f_add_i2
00429 #define GAN_MAT_INCREMENT gan_mat24f_increment
00430 #define GAN_MAT_ADD_S gan_mat24f_add_s
00431 #define GAN_MAT_SUB_Q gan_mat24f_sub_q
00432 #define GAN_MAT_SUB_I1 gan_mat24f_sub_i1
00433 #define GAN_MAT_SUB_I2 gan_mat24f_sub_i2
00434 #define GAN_MAT_DECREMENT gan_mat24f_decrement
00435 #define GAN_MAT_SUB_S gan_mat24f_sub_s
00436 #define GAN_VEC_OUTER_Q gan_vec24f_outer_q
00437 #define GAN_VEC_OUTER_S gan_vec24f_outer_s
00438 #define GAN_MAT_MULTV_Q gan_mat24f_multv4_q
00439 #define GAN_MAT_MULTV_S gan_mat24f_multv4_s
00440 #define GAN_MATT_MULTV_Q gan_mat24Tf_multv2_q
00441 #define GAN_MATT_MULTV_S gan_mat24Tf_multv2_s
00442 #define GAN_MAT_LMULTM_Q gan_mat24f_lmultm22_q
00443 #define GAN_MAT_LMULTM_S gan_mat24f_lmultm22_s
00444 #define GAN_MAT_LMULTMT_Q gan_mat24f_lmultm22T_q
00445 #define GAN_MAT_LMULTMT_S gan_mat24f_lmultm22T_s
00446 #define GAN_MAT_RMULTM_Q gan_mat24f_rmultm44_q
00447 #define GAN_MAT_RMULTM_S gan_mat24f_rmultm44_s
00448 #define GAN_MAT_RMULTMT_Q gan_mat24f_rmultm44T_q
00449 #define GAN_MAT_RMULTMT_S gan_mat24f_rmultm44T_s
00450 #define GAN_MAT_LMULTMT_SYM_Q gan_mat24f_lmultm24T_sym_q
00451 #define GAN_MAT_LMULTMT_SYM_S gan_mat24f_lmultm24T_sym_s
00452 #define GAN_MAT_RMULTMT_SYM_Q gan_mat24f_rmultm24T_sym_q
00453 #define GAN_MAT_RMULTMT_SYM_S gan_mat24f_rmultm24T_sym_s
00454 #define GAN_MAT_SLMULTT_Q gan_mat24f_slmultT_q
00455 #define GAN_MAT_SLMULTT_S gan_mat24f_slmultT_s
00456 #define GAN_MAT_SRMULTT_Q gan_mat24f_srmultT_q
00457 #define GAN_MAT_SRMULTT_S gan_mat24f_srmultT_s
00458 #define GAN_MAT_LMULTS_Q gan_mat24f_lmults22_q
00459 #define GAN_MAT_LMULTS_S gan_mat24f_lmults22_s
00460 #define GAN_MAT_RMULTS_Q gan_mat24f_rmults44_q
00461 #define GAN_MAT_RMULTS_S gan_mat24f_rmults44_s
00462 #define GAN_SYMMATL_LRMULT_Q gan_symmat22f_lrmultm24T_q
00463 #define GAN_SYMMATL_LRMULT_S gan_symmat22f_lrmultm24T_s
00464 #define GAN_SYMMATR_LRMULT_Q gan_symmat44f_lrmultm24_q
00465 #define GAN_SYMMATR_LRMULT_S gan_symmat44f_lrmultm24_s
00466 #define GAN_MAT_LMULTL_Q gan_mat24f_lmultl22_q
00467 #define GAN_MAT_LMULTL_S gan_mat24f_lmultl22_s
00468 #define GAN_MAT_LMULTL_I gan_mat24f_lmultl22_i
00469 #define GAN_MAT_LMULTLI_Q gan_mat24f_lmultl22I_q
00470 #define GAN_MAT_LMULTLI_S gan_mat24f_lmultl22I_s
00471 #define GAN_MAT_LMULTLI_I gan_mat24f_lmultl22I_i
00472 #define GAN_MAT_LMULTLT_Q gan_mat24f_lmultl22T_q
00473 #define GAN_MAT_LMULTLT_S gan_mat24f_lmultl22T_s
00474 #define GAN_MAT_LMULTLT_I gan_mat24f_lmultl22T_i
00475 #define GAN_MAT_LMULTLIT_Q gan_mat24f_lmultl22IT_q
00476 #define GAN_MAT_LMULTLIT_S gan_mat24f_lmultl22IT_s
00477 #define GAN_MAT_LMULTLIT_I gan_mat24f_lmultl22IT_i
00478 #define GAN_MAT_RMULTL_Q gan_mat24f_rmultl44_q
00479 #define GAN_MAT_RMULTL_S gan_mat24f_rmultl44_s
00480 #define GAN_MAT_RMULTL_I gan_mat24f_rmultl44_i
00481 #define GAN_MAT_RMULTLI_Q gan_mat24f_rmultl44I_q
00482 #define GAN_MAT_RMULTLI_S gan_mat24f_rmultl44I_s
00483 #define GAN_MAT_RMULTLI_I gan_mat24f_rmultl44I_i
00484 #define GAN_MAT_RMULTLT_Q gan_mat24f_rmultl44T_q
00485 #define GAN_MAT_RMULTLT_S gan_mat24f_rmultl44T_s
00486 #define GAN_MAT_RMULTLT_I gan_mat24f_rmultl44T_i
00487 #define GAN_MAT_RMULTLIT_Q gan_mat24f_rmultl44IT_q
00488 #define GAN_MAT_RMULTLIT_S gan_mat24f_rmultl44IT_s
00489 #define GAN_MAT_RMULTLIT_I gan_mat24f_rmultl44IT_i
00490 #define GAN_MAT_SUMSQR_Q gan_mat24f_sumsqr_q
00491 #define GAN_MAT_SUMSQR_S gan_mat24f_sumsqr_s
00492 #define GAN_MAT_FNORM_Q gan_mat24f_Fnorm_q
00493 #define GAN_MAT_FNORM_S gan_mat24f_Fnorm_s
00494 #define GAN_MAT_FROM_MAT_Q gan_mat24f_from_matf_q
00495 #define GAN_MAT_FROM_MAT_S gan_mat24f_from_matf_s
00496
00497 #ifndef _GAN_2X4MATF_H
00498 #define _GAN_2X4MATF_H
00499
00500
00501 #endif
00502
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535
00546 Gan_Matrix24_f *gan_mat24f_zero_q ( const Gan_Matrix24_f *A );
00547
00564 Gan_Matrix24_f *gan_mat24f_copy_q ( Gan_Matrix24_f *A, Gan_Matrix24_f *B );
00565
00583 Gan_Matrix24_f *gan_mat24f_scale_q ( Gan_Matrix24_f *A, float a,
00584 Gan_Matrix24_f *B );
00585
00593 Gan_Matrix24_f *gan_mat24f_scale_i ( Gan_Matrix24_f *A, float a );
00594
00603 Gan_Matrix24_f *gan_mat24f_divide_q ( Gan_Matrix24_f *A, float a,
00604 Gan_Matrix24_f *B );
00605
00613 Gan_Matrix24_f *gan_mat24f_divide_i ( Gan_Matrix24_f *A, float a );
00614
00622 Gan_Matrix24_f *gan_mat24f_negate_q ( Gan_Matrix24_f *A, Gan_Matrix24_f *B );
00623
00631 Gan_Matrix24_f *gan_mat24f_negate_i ( Gan_Matrix24_f *A );
00632
00640 Gan_Matrix24_f *gan_mat24f_unit_i ( Gan_Matrix24_f *A );
00641
00659 Gan_Matrix24_f *gan_mat24f_add_q ( Gan_Matrix24_f *A, Gan_Matrix24_f *B, Gan_Matrix24_f *C );
00660
00669 Gan_Matrix24_f *gan_mat24f_add_i1 ( Gan_Matrix24_f *A, Gan_Matrix24_f *B );
00670
00679 Gan_Matrix24_f *gan_mat24f_add_i2 ( Gan_Matrix24_f *A, Gan_Matrix24_f *B );
00680
00689 Gan_Matrix24_f *gan_mat24f_increment ( Gan_Matrix24_f *A, Gan_Matrix24_f *B );
00690
00708 Gan_Matrix24_f *gan_mat24f_sub_q ( Gan_Matrix24_f *A, Gan_Matrix24_f *B, Gan_Matrix24_f *C );
00709
00718 Gan_Matrix24_f *gan_mat24f_sub_i1 ( Gan_Matrix24_f *A, Gan_Matrix24_f *B );
00719
00728 Gan_Matrix24_f *gan_mat24f_sub_i2 ( Gan_Matrix24_f *A, Gan_Matrix24_f *B );
00729
00738 Gan_Matrix24_f *gan_mat24f_decrement ( Gan_Matrix24_f *A, Gan_Matrix24_f *B );
00739
00757 Gan_Matrix24_f *gan_vec24f_outer_q ( const Gan_Vector2_f *p, const Gan_Vector4_f *q,
00758 Gan_Matrix24_f *A );
00759
00768 Gan_Vector2_f *gan_mat24f_multv4_q ( const Gan_Matrix24_f *A, Gan_Vector4_f *p,
00769 Gan_Vector2_f *q );
00770
00771
00780 Gan_Vector4_f *gan_mat24Tf_multv2_q ( const Gan_Matrix24_f *A, Gan_Vector2_f *p,
00781 Gan_Vector4_f *q );
00782
00783
00802 Gan_Matrix24_f *gan_mat24f_lmultm22_q ( Gan_Matrix24_f *A, const Gan_Matrix22_f *B,
00803 Gan_Matrix24_f *C );
00804
00814 Gan_Matrix24_f *gan_mat24f_lmultm22T_q ( Gan_Matrix24_f *A, const Gan_Matrix22_f *B,
00815 Gan_Matrix24_f *C );
00816
00826 Gan_Matrix24_f *gan_mat24f_rmultm44_q ( Gan_Matrix24_f *A, const Gan_Matrix44_f *B,
00827 Gan_Matrix24_f *C );
00828
00838 Gan_Matrix24_f *gan_mat24f_rmultm44T_q ( Gan_Matrix24_f *A, const Gan_Matrix44_f *B,
00839 Gan_Matrix24_f *C );
00840
00852 Gan_SquMatrix44_f *gan_mat24f_lmultm24T_sym_q ( const Gan_Matrix24_f *A, const Gan_Matrix24_f *B,
00853 Gan_SquMatrix44_f *C );
00854
00866 Gan_SquMatrix22_f *gan_mat24f_rmultm24T_sym_q ( const Gan_Matrix24_f *A, const Gan_Matrix24_f *B,
00867 Gan_SquMatrix22_f *C );
00868
00877 Gan_Matrix24_f *gan_mat24f_lmults22_q ( Gan_Matrix24_f *A, const Gan_SquMatrix22_f *B,
00878 Gan_Matrix24_f *C );
00879
00888 Gan_Matrix24_f *gan_mat24f_rmults44_q ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B,
00889 Gan_Matrix24_f *C );
00890
00910 Gan_SquMatrix44_f *gan_symmat22f_lrmultm24T_q ( const Gan_SquMatrix22_f *A, const Gan_Matrix24_f *B,
00911 const Gan_Matrix24_f *C, Gan_SquMatrix44_f *D );
00912
00923 Gan_SquMatrix22_f *gan_symmat44f_lrmultm24_q ( const Gan_SquMatrix44_f *A, const Gan_Matrix24_f *B,
00924 const Gan_Matrix24_f *C, Gan_SquMatrix22_f *D );
00925
00944 Gan_Matrix24_f *gan_mat24f_lmultl22_q ( Gan_Matrix24_f *A, const Gan_SquMatrix22_f *B,
00945 Gan_Matrix24_f *C );
00946
00956 Gan_Matrix24_f *gan_mat24f_lmultl22I_q ( Gan_Matrix24_f *A, const Gan_SquMatrix22_f *B,
00957 Gan_Matrix24_f *C );
00958
00968 Gan_Matrix24_f *gan_mat24f_lmultl22T_q ( Gan_Matrix24_f *A, const Gan_SquMatrix22_f *B,
00969 Gan_Matrix24_f *C );
00970
00980 Gan_Matrix24_f *gan_mat24f_lmultl22IT_q ( Gan_Matrix24_f *A, const Gan_SquMatrix22_f *B,
00981 Gan_Matrix24_f *C );
00982
00992 Gan_Matrix24_f *gan_mat24f_rmultl44_q ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B,
00993 Gan_Matrix24_f *C );
00994
01004 Gan_Matrix24_f *gan_mat24f_rmultl44I_q ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B,
01005 Gan_Matrix24_f *C );
01006
01016 Gan_Matrix24_f *gan_mat24f_rmultl44T_q ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B,
01017 Gan_Matrix24_f *C );
01018
01028 Gan_Matrix24_f *gan_mat24f_rmultl44IT_q ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B,
01029 Gan_Matrix24_f *C );
01030
01040 Gan_Matrix24_f *gan_mat24f_lmultl22_i ( Gan_Matrix24_f *A, const Gan_SquMatrix22_f *B );
01041
01051 Gan_Matrix24_f *gan_mat24f_lmultl22I_i ( Gan_Matrix24_f *A, const Gan_SquMatrix22_f *B );
01052
01062 Gan_Matrix24_f *gan_mat24f_lmultl22T_i ( Gan_Matrix24_f *A, const Gan_SquMatrix22_f *B );
01063
01073 Gan_Matrix24_f *gan_mat24f_lmultl22IT_i ( Gan_Matrix24_f *A, const Gan_SquMatrix22_f *B );
01074
01084 Gan_Matrix24_f *gan_mat24f_rmultl44_i ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B );
01085
01095 Gan_Matrix24_f *gan_mat24f_rmultl44I_i ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B );
01096
01106 Gan_Matrix24_f *gan_mat24f_rmultl44T_i ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B );
01107
01117 Gan_Matrix24_f *gan_mat24f_rmultl44IT_i ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B );
01118
01127 Gan_SquMatrix44_f *gan_mat24f_slmultT_q ( Gan_Matrix24_f *A, const Gan_SquMatrix44_f *B );
01128
01129
01138 Gan_SquMatrix22_f *gan_mat24f_srmultT_q ( const Gan_Matrix24_f *A, Gan_SquMatrix22_f *B );
01139
01140
01155 float gan_mat24f_sumsqr_q ( const Gan_Matrix24_f *A );
01156
01163 float gan_mat24f_Fnorm_q ( const Gan_Matrix24_f *A );
01164
01174 Gan_Matrix24_f *gan_mat24f_from_matf_q ( const Gan_Matrix_f *A, Gan_Matrix24_f *B );
01175
01176
01177
01196
01197
01198
01199
01200
01201
01202
01203
01204
01205
01206
01207
01208
01209
01210
01211 #undef GAN_MATTYPE
01212 #undef GAN_MATRIX_TYPE
01213 #undef GAN_SQUMATRIX_TYPE
01214 #undef GAN_VECTOR_TYPE
01215 #undef GAN_MAT_ELEMENT_TYPE
01216 #undef GAN_REALTYPE
01217 #undef GAN_FWRITE_LENDIAN
01218 #undef GAN_FREAD_LENDIAN
01219 #undef GAN_VECTYPE1
01220 #undef GAN_VECTYPE2
01221 #undef GAN_MATTYPEL
01222 #undef GAN_MATTYPER
01223 #undef GAN_SQUMATTYPEL
01224 #undef GAN_SQUMATTYPER
01225 #undef GAN_FIXED_MATRIX_TYPE
01226 #undef GAN_MAT_FPRINT
01227 #undef GAN_MAT_PRINT
01228 #undef GAN_MAT_FSCANF
01229 #undef GAN_MAT_FWRITE
01230 #undef GAN_MAT_FREAD
01231 #undef GAN_MAT_ZERO_Q
01232 #undef GAN_MAT_ZERO_S
01233 #undef GAN_MAT_COPY_Q
01234 #undef GAN_MAT_COPY_S
01235 #undef GAN_MAT_SCALE_Q
01236 #undef GAN_MAT_SCALE_S
01237 #undef GAN_MAT_SCALE_I
01238 #undef GAN_MAT_DIVIDE_Q
01239 #undef GAN_MAT_DIVIDE_S
01240 #undef GAN_MAT_DIVIDE_I
01241 #undef GAN_MAT_NEGATE_Q
01242 #undef GAN_MAT_NEGATE_S
01243 #undef GAN_MAT_NEGATE_I
01244 #undef GAN_MAT_UNIT_Q
01245 #undef GAN_MAT_UNIT_S
01246 #undef GAN_MAT_UNIT_I
01247 #undef GAN_MAT_ADD_Q
01248 #undef GAN_MAT_ADD_I1
01249 #undef GAN_MAT_ADD_I2
01250 #undef GAN_MAT_INCREMENT
01251 #undef GAN_MAT_ADD_S
01252 #undef GAN_MAT_SUB_Q
01253 #undef GAN_MAT_SUB_I1
01254 #undef GAN_MAT_SUB_I2
01255 #undef GAN_MAT_DECREMENT
01256 #undef GAN_MAT_SUB_S
01257 #undef GAN_VEC_OUTER_Q
01258 #undef GAN_VEC_OUTER_S
01259 #undef GAN_MAT_MULTV_Q
01260 #undef GAN_MAT_MULTV_S
01261 #undef GAN_MAT_MULTV_I
01262 #undef GAN_MATT_MULTV_Q
01263 #undef GAN_MATT_MULTV_S
01264 #undef GAN_MATT_MULTV_I
01265 #undef GAN_MAT_LMULTM_Q
01266 #undef GAN_MAT_LMULTM_S
01267 #undef GAN_MAT_LMULTMT_Q
01268 #undef GAN_MAT_LMULTMT_S
01269 #undef GAN_MAT_RMULTM_Q
01270 #undef GAN_MAT_RMULTM_S
01271 #undef GAN_MAT_RMULTMT_Q
01272 #undef GAN_MAT_RMULTMT_S
01273 #undef GAN_MAT_LMULTMT_SYM_Q
01274 #undef GAN_MAT_LMULTMT_SYM_S
01275 #undef GAN_MAT_RMULTMT_SYM_Q
01276 #undef GAN_MAT_RMULTMT_SYM_S
01277 #undef GAN_MAT_LMULTS_Q
01278 #undef GAN_MAT_LMULTS_S
01279 #undef GAN_MAT_RMULTS_Q
01280 #undef GAN_MAT_RMULTS_S
01281 #undef GAN_SYMMATL_LRMULT_Q
01282 #undef GAN_SYMMATL_LRMULT_S
01283 #undef GAN_SYMMATR_LRMULT_Q
01284 #undef GAN_SYMMATR_LRMULT_S
01285 #undef GAN_MAT_LMULTL_Q
01286 #undef GAN_MAT_LMULTL_S
01287 #undef GAN_MAT_LMULTL_I
01288 #undef GAN_MAT_LMULTLI_Q
01289 #undef GAN_MAT_LMULTLI_S
01290 #undef GAN_MAT_LMULTLI_I
01291 #undef GAN_MAT_LMULTLT_Q
01292 #undef GAN_MAT_LMULTLT_S
01293 #undef GAN_MAT_LMULTLT_I
01294 #undef GAN_MAT_LMULTLIT_Q
01295 #undef GAN_MAT_LMULTLIT_S
01296 #undef GAN_MAT_LMULTLIT_I
01297 #undef GAN_MAT_RMULTL_Q
01298 #undef GAN_MAT_RMULTL_S
01299 #undef GAN_MAT_RMULTL_I
01300 #undef GAN_MAT_RMULTLI_Q
01301 #undef GAN_MAT_RMULTLI_S
01302 #undef GAN_MAT_RMULTLI_I
01303 #undef GAN_MAT_RMULTLT_Q
01304 #undef GAN_MAT_RMULTLT_S
01305 #undef GAN_MAT_RMULTLT_I
01306 #undef GAN_MAT_RMULTLIT_Q
01307 #undef GAN_MAT_RMULTLIT_S
01308 #undef GAN_MAT_RMULTLIT_I
01309 #undef GAN_MAT_SRMULTT_Q
01310 #undef GAN_MAT_SRMULTT_S
01311 #undef GAN_MAT_SRMULTT_I
01312 #undef GAN_MAT_SLMULTT_Q
01313 #undef GAN_MAT_SLMULTT_S
01314 #undef GAN_MAT_SLMULTT_I
01315 #undef GAN_MAT_RMULTLIT_S
01316 #undef GAN_MAT_SUMSQR_Q
01317 #undef GAN_MAT_SUMSQR_S
01318 #undef GAN_MAT_FNORM_Q
01319 #undef GAN_MAT_FNORM_S
01320 #undef GAN_MAT_FROM_MAT_Q
01321 #undef GAN_MAT_FROM_MAT_S
01322 #undef GAN_MAT_FROM_SQUMAT_Q
01323 #undef GAN_MAT_FROM_SQUMAT_S
01324 #undef GAN_SQUMAT_FROM_SQUMAT_Q
01325 #undef GAN_SQUMAT_FROM_SQUMAT_S
01326
01339 #ifdef __cplusplus
01340 }
01341 #endif
01342
01343 #endif