00001
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef _GAN_4X4MATRIXF_H
00030 #define _GAN_4X4MATRIXF_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_REPEAT44_H
00065 #define _GAN_REPEAT44_H
00066
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095 #ifndef _GAN_REPEAT1_H
00096 #define _GAN_REPEAT1_H
00097
00098 #ifdef __cplusplus
00099 extern "C" {
00100 #endif
00101
00102
00103 #define GAN_REP1_AS(a,b,p1) (a p1 b)
00104 #define GAN_REP1_A(a,p1) (a p1)
00105 #define GAN_REP1_A_C(a,b) GAN_REP1_A(a,b,x)
00106
00107 #define GAN_FREP1_A(a,b,p1,q1) (a p1 b q1)
00108 #define GAN_FREP1_A_C(a,b,p1) GAN_FREP1_A(a,b,x,p1)
00109
00110 #define GAN_REP1_ABS(a,b,c,p1,q1) (a p1 b q1 c)
00111 #define GAN_REP1_AAS(a,b,c,p1) GAN_REP1_ABS(a,b,c,p1,p1)
00112 #define GAN_REP1_AAS_C(a,b,c) GAN_REP1_AAS(a,b,c,x)
00113
00114 #define GAN_REP1_AB(a,b,p1,q1) (a p1 b q1)
00115 #define GAN_REP1_AA(a,b,p1) GAN_REP1_AB(a,b,p1,p1)
00116 #define GAN_REP1_AA_C(a,b) GAN_REP1_AA(a,b,x)
00117
00118 #define GAN_REP1_ABCS(a,b,c,d,p1,q1,r1) (a p1 b q1 c r1 d)
00119 #define GAN_REP1_ABC(a,b,c,p1,q1,r1) (a p1 b q1 c r1)
00120 #define GAN_REP1_AAA(a,b,c,p1) GAN_REP1_ABC(a,b,c,p1,p1,p1)
00121 #define GAN_REP1_AAA_C(a,b,c) GAN_REP1_AAA(a,b,c,x)
00122
00123 #define GAN_REP1_OP_AB(a,b,p1,q1,op) (a p1 b q1)
00124 #define GAN_REP1_OP_AA(a,b,p1,op) GAN_REP1_OP_AB(a,b,p1,p1,op)
00125 #define GAN_REP1_OP_AA_C(a,b,op) GAN_REP1_OP_AA(a,b,x,op)
00126
00127 #ifdef __cplusplus
00128 }
00129 #endif
00130
00131 #endif
00132
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160 #ifndef _GAN_REPEAT2_H
00161 #define _GAN_REPEAT2_H
00162
00163 #ifdef __cplusplus
00164 extern "C" {
00165 #endif
00166
00167
00168 #define GAN_REP2_AS(a,b,p1,p2) (a p1 b, a p2 b)
00169 #define GAN_REP2_A(a,p1,p2) (a p1, a p2)
00170 #define GAN_REP2_AS_C(a,b) GAN_REP2_AS(a,b,x,y)
00171 #define GAN_REP2_A_C(a) GAN_REP2_A(a,x,y)
00172
00173 #define GAN_FREP2_A(a,b,p1,p2,q1,q2) (a p1 b q1, a p2 b q2)
00174 #define GAN_FREP2_A_C(a,b,p1,p2) GAN_FREP2_A(a,b,x,y,p1,p2)
00175
00176 #define GAN_REP2_AB(a,b,p1,p2,q1,q2) (a p1 b q1, a p2 b q2)
00177 #define GAN_REP2_AA(a,b,p1,p2) GAN_REP2_AB(a,b,p1,p2,p1,p2)
00178 #define GAN_REP2_AA_C(a,b) GAN_REP2_AA(a,b,x,y)
00179
00180 #define GAN_REP2_ABS(a,b,c,p1,p2,q1,q2) (a p1 b q1 c, a p2 b q2 c)
00181 #define GAN_REP2_AAS(a,b,c,p1,p2) GAN_REP2_ABS(a,b,c,p1,p2,p1,p2)
00182 #define GAN_REP2_AAS_C(a,b,c) GAN_REP2_AAS(a,b,c,x,y)
00183
00184 #define GAN_REP2_AB(a,b,p1,p2,q1,q2) (a p1 b q1, a p2 b q2)
00185 #define GAN_REP2_AA(a,b,p1,p2) GAN_REP2_AB(a,b,p1,p2,p1,p2)
00186 #define GAN_REP2_AA_C(a,b) GAN_REP2_AA(a,b,x,y)
00187
00188 #define GAN_REP2_ABCS(a,b,c,d,p1,p2,q1,q2,r1,r2)\
00189 (a p1 b q1 c r1 d, a p2 b q2 c r2 d)
00190 #define GAN_REP2_ABC(a,b,c,p1,p2,q1,q2,r1,r2)\
00191 (a p1 b q1 c r1, a p2 b q2 c r2)
00192 #define GAN_REP2_AAA(a,b,c,p1,p2) GAN_REP2_ABC(a,b,c,p1,p2,p1,p2,p1,p2)
00193 #define GAN_REP2_AAA_C(a,b,c) GAN_REP2_AAA(a,b,c,x,y)
00194
00195 #define GAN_REP2_OP_AB(a,b,p1,p2,q1,q2,op)\
00196 (a p1 b q1 op a p2 b q2)
00197 #define GAN_REP2_OP_AA(a,b,p1,p2,op) GAN_REP2_OP_AB(a,b,p1,p2,p1,p2,op)
00198 #define GAN_REP2_OP_AA_C(a,b,op) GAN_REP2_OP_AA(a,b,x,y,op)
00199
00200 #ifdef __cplusplus
00201 }
00202 #endif
00203
00204 #endif
00205
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233 #ifndef _GAN_REPEAT3_H
00234 #define _GAN_REPEAT3_H
00235
00236 #ifdef __cplusplus
00237 extern "C" {
00238 #endif
00239
00240
00241 #define GAN_REP3_AS(a,b,p1,p2,p3) (a p1 b, a p2 b, a p3 b)
00242 #define GAN_REP3_AS_C(a,b) GAN_REP3_AS(a,b,x,y,z)
00243 #define GAN_REP3_A(a,p1,p2,p3) (a p1, a p2, a p3)
00244 #define GAN_REP3_A_C(a) GAN_REP3_A(a,x,y,z)
00245
00246 #define GAN_FREP3_A(a,b,p1,p2,p3,q1,q2,q3) (a p1 b q1, a p2 b q2, a p3 b q3)
00247 #define GAN_FREP3_A_C(a,b,p1,p2,p3) GAN_FREP3_A(a,b,x,y,z,p1,p2,p3)
00248
00249
00250 #define GAN_REP3_ABS(a,b,c,p1,p2,p3,q1,q2,q3)\
00251 (a p1 b q1 c, a p2 b q2 c, a p3 b q3 c)
00252 #define GAN_REP3_AAS(a,b,c,p1,p2,p3) GAN_REP3_ABS(a,b,c,p1,p2,p3,p1,p2,p3)
00253 #define GAN_REP3_AAS_C(a,b,c) GAN_REP3_AAS(a,b,c,x,y,z)
00254
00255 #define GAN_REP3_AB(a,b,p1,p2,p3,q1,q2,q3)\
00256 (a p1 b q1, a p2 b q2, a p3 b q3)
00257 #define GAN_REP3_AA(a,b,p1,p2,p3) GAN_REP3_AB(a,b,p1,p2,p3,p1,p2,p3)
00258 #define GAN_REP3_AA_C(a,b) GAN_REP3_AA(a,b,x,y,z)
00259
00260 #define GAN_REP3_ABCS(a,b,c,d,p1,p2,p3,q1,q2,q3,r1,r2,r3)\
00261 (a p1 b q1 c r1 d, a p2 b q2 c r2 d, a p3 b q3 c r3 d)
00262 #define GAN_REP3_ABC(a,b,c,p1,p2,p3,q1,q2,q3,r1,r2,r3)\
00263 (a p1 b q1 c r1, a p2 b q2 c r2, a p3 b q3 c r3)
00264 #define GAN_REP3_AAA(a,b,c,p1,p2,p3)\
00265 GAN_REP3_ABC(a,b,c,p1,p2,p3,p1,p2,p3,p1,p2,p3)
00266 #define GAN_REP3_AAA_C(a,b,c) GAN_REP3_AAA(a,b,c,x,y,z)
00267
00268 #define GAN_REP3_OP_AB(a,b,p1,p2,p3,q1,q2,q3,op)\
00269 (a p1 b q1 op a p2 b q2 op a p3 b q3)
00270 #define GAN_REP3_OP_AA(a,b,p1,p2,p3,op)\
00271 GAN_REP3_OP_AB(a,b,p1,p2,p3,p1,p2,p3,op)
00272 #define GAN_REP3_OP_AA_C(a,b,op) GAN_REP3_OP_AA(a,b,x,y,z,op)
00273
00274 #ifdef __cplusplus
00275 }
00276 #endif
00277
00278 #endif
00279
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307 #ifndef _GAN_REPEAT4_H
00308 #define _GAN_REPEAT4_H
00309
00310 #ifdef __cplusplus
00311 extern "C" {
00312 #endif
00313
00314
00315 #define GAN_REP4_AS(a,b,p1,p2,p3,p4) (a p1 b, a p2 b, a p3 b, a p4 b)
00316 #define GAN_REP4_AS_C(a,b) GAN_REP4_AS(a,b,x,y,z,w)
00317 #define GAN_REP4_A(a,p1,p2,p3,p4) (a p1, a p2, a p3, a p4)
00318 #define GAN_REP4_A_C(a) GAN_REP4_A(a,x,y,z,w)
00319
00320 #define GAN_FREP4_A(a,b,p1,p2,p3,p4,q1,q2,q3,q4)\
00321 (a p1 b q1, a p2 b q2,\
00322 a p3 b q3, a p4 b q4)
00323 #define GAN_FREP4_A_C(a,b,p1,p2,p3,p4) GAN_FREP4_A(a,b,x,y,z,w,p1,p2,p3,p4)
00324
00325 #define GAN_REP4_ABS(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4)\
00326 (a p1 b q1 c, a p2 b q2 c, a p3 b q3 c, a p4 b q4 c)
00327 #define GAN_REP4_AAS(a,b,c,p1,p2,p3,p4)\
00328 GAN_REP4_ABS(a,b,c,p1,p2,p3,p4,p1,p2,p3,p4)
00329 #define GAN_REP4_AAS_C(a,b,c) GAN_REP4_AAS(a,b,c,x,y,z,w)
00330
00331 #define GAN_REP4_AB(a,b,p1,p2,p3,p4,q1,q2,q3,q4)\
00332 (a p1 b q1, a p2 b q2, a p3 b q3, a p4 b q4)
00333 #define GAN_REP4_AA(a,b,p1,p2,p3,p4)\
00334 GAN_REP4_AB(a,b,p1,p2,p3,p4,p1,p2,p3,p4)
00335 #define GAN_REP4_AA_C(a,b) GAN_REP4_AA(a,b,x,y,z,w)
00336
00337 #define GAN_REP4_ABCS(a,b,c,d,p1,p2,p3,p4,q1,q2,q3,q4,r1,r2,r3,r4)\
00338 (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)
00339 #define GAN_REP4_ABC(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4,r1,r2,r3,r4)\
00340 (a p1 b q1 c r1, a p2 b q2 c r2, a p3 b q3 c r3, a p4 b q4 c r4)
00341 #define GAN_REP4_AAA(a,b,c,p1,p2,p3,p4)\
00342 GAN_REP4_ABC(a,b,c,p1,p2,p3,p4,p1,p2,p3,p4,p1,p2,p3,p4)
00343 #define GAN_REP4_AAA_C(a,b,c) GAN_REP4_AAA(a,b,c,x,y,z,w)
00344
00345 #define GAN_REP4_OP_AB(a,b,p1,p2,p3,p4,q1,q2,q3,q4,op)\
00346 (a p1 b q1 op a p2 b q2 op a p3 b q3 op a p4 b q4)
00347 #define GAN_REP4_OP_AA(a,b,p1,p2,p3,p4,op)\
00348 GAN_REP4_OP_AB(a,b,p1,p2,p3,p4,p1,p2,p3,p4,op)
00349 #define GAN_REP4_OP_AA_C(a,b,op) GAN_REP4_OP_AA(a,b,x,y,z,w,op)
00350
00351 #ifdef __cplusplus
00352 }
00353 #endif
00354
00355 #endif
00356
00357 #ifdef __cplusplus
00358 extern "C" {
00359 #endif
00360
00361
00362
00363 #define GAN_FREP44_A(a,b,p1,p2,p3,p4,q1,q2,q3,q4,r11,r12,r13,r14,r21,r22,r23,r24,r31,r32,r33,r34,r41,r42,r43,r44)\
00364 (GAN_FREP4_A(a,b,p1##q1,p1##q2,p1##q3,p1##q4,r11,r12,r13,r14),\
00365 GAN_FREP4_A(a,b,p2##q1,p2##q2,p2##q3,p2##q4,r21,r22,r23,r24),\
00366 GAN_FREP4_A(a,b,p3##q1,p3##q2,p3##q3,p3##q4,r31,r32,r33,r34),\
00367 GAN_FREP4_A(a,b,p4##q1,p4##q2,p4##q3,p4##q4,r41,r42,r43,r44))
00368 #define GAN_FREP44_A_C(a,b,r11,r12,r13,r14,r21,r22,r23,r24,r31,r32,r33,r34,r41,r42,r43,r44) \
00369 GAN_FREP44_A(a,b,x,y,z,w,x,y,z,w,r11,r12,r13,r14,r21,r22,r23,r24,r31,r32,r33,r34,r41,r42,r43,r44)
00370
00371
00372 #define GAN_REP44_ABCS(a,b,c,d,p1,p2,p3,p4,q1,q2,q3,q4,r1,r2,r3,r4,s1,s2,s3,s4,t1,t2,t3,t4,u1,u2,u3,u4)\
00373 (GAN_REP4_ABCS(a,b,c,d,p1##q1,p1##q2,p1##q3,p1##q4,\
00374 r1##s1,r1##s2,r1##s3,r1##s4,\
00375 t1##u1,t1##u2,t1##u3,t1##u4),\
00376 GAN_REP4_ABCS(a,b,c,d,p2##q1,p2##q2,p2##q3,p2##q4,\
00377 r2##s1,r2##s2,r2##s3,r2##s4,\
00378 t2##u1,t2##u2,t2##u3,t2##u4),\
00379 GAN_REP4_ABCS(a,b,c,d,p3##q1,p3##q2,p3##q3,p3##q4,\
00380 r3##s1,r3##s2,r3##s3,r3##s4,\
00381 t3##u1,t3##u2,t3##u3,t3##u4),\
00382 GAN_REP4_ABCS(a,b,c,d,p4##q1,p4##q2,p4##q3,p4##q4,\
00383 r4##s1,r4##s2,r4##s3,r4##s4,\
00384 t4##u1,t4##u2,t4##u3,t4##u4))
00385 #define GAN_REP44_ABC(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4,r1,r2,r3,r4,s1,s2,s3,s4,t1,t2,t3,t4,u1,u2,u3,u4)\
00386 (GAN_REP4_ABC(a,b,c,p1##q1,p1##q2,p1##q3,p1##q4,\
00387 r1##s1,r1##s2,r1##s3,r1##s4,\
00388 t1##u1,t1##u2,t1##u3,t1##u4),\
00389 GAN_REP4_ABC(a,b,c,p2##q1,p2##q2,p2##q3,p2##q4,\
00390 r2##s1,r2##s2,r2##s3,r2##s4,\
00391 t2##u1,t2##u2,t2##u3,t2##u4),\
00392 GAN_REP4_ABC(a,b,c,p3##q1,p3##q2,p3##q3,p3##q4,\
00393 r3##s1,r3##s2,r3##s3,r3##s4,\
00394 t3##u1,t3##u2,t3##u3,t3##u4),\
00395 GAN_REP4_ABC(a,b,c,p4##q1,p4##q2,p4##q3,p4##q4,\
00396 r4##s1,r4##s2,r4##s3,r4##s4,\
00397 t4##u1,t4##u2,t4##u3,t4##u4))
00398
00399 #define GAN_REP44_AAAS(a,b,c,d,p1,p2,p3,p4,q1,q2,q3,q4)\
00400 GAN_REP44_ABCS(a,b,c,d,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4)
00401 #define GAN_REP44_AAA(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4)\
00402 GAN_REP44_ABC(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4)
00403
00404 #define GAN_REP44_ABS(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4,r1,r2,r3,r4,s1,s2,s3,s4)\
00405 (GAN_REP4_ABS(a,b,c,p1##q1,p1##q2,p1##q3,p1##q4,\
00406 r1##s1,r1##s2,r1##s3,r1##s4),\
00407 GAN_REP4_ABS(a,b,c,p2##q1,p2##q2,p2##q3,p2##q4,\
00408 r2##s1,r2##s2,r2##s3,r2##s4),\
00409 GAN_REP4_ABS(a,b,c,p3##q1,p3##q2,p3##q3,p3##q4,\
00410 r3##s1,r3##s2,r3##s3,r3##s4),\
00411 GAN_REP4_ABS(a,b,c,p4##q1,p4##q2,p4##q3,p4##q4,\
00412 r4##s1,r4##s2,r4##s3,r4##s4))
00413 #define GAN_REP44_AB(a,b,p1,p2,p3,p4,q1,q2,q3,q4,r1,r2,r3,r4,s1,s2,s3,s4)\
00414 (GAN_REP4_AB(a,b,p1##q1,p1##q2,p1##q3,p1##q4,\
00415 r1##s1,r1##s2,r1##s3,r1##s4),\
00416 GAN_REP4_AB(a,b,p2##q1,p2##q2,p2##q3,p2##q4,\
00417 r2##s1,r2##s2,r2##s3,r2##s4),\
00418 GAN_REP4_AB(a,b,p3##q1,p3##q2,p3##q3,p3##q4,\
00419 r3##s1,r3##s2,r3##s3,r3##s4),\
00420 GAN_REP4_AB(a,b,p4##q1,p4##q2,p4##q3,p4##q4,\
00421 r4##s1,r4##s2,r4##s3,r4##s4))
00422
00423 #define GAN_REP44_AAS(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4)\
00424 GAN_REP44_ABS(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4)
00425 #define GAN_REP44_AA(a,b,p1,p2,p3,p4,q1,q2,q3,q4)\
00426 GAN_REP44_AB(a,b,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4)
00427
00428 #define GAN_REP44_AS(a,b,p1,p2,p3,p4,q1,q2,q3,q4)\
00429 (GAN_REP4_AS(a,b,p1##q1,p1##q2,p1##q3,p1##q4),\
00430 GAN_REP4_AS(a,b,p2##q1,p2##q2,p2##q3,p2##q4),\
00431 GAN_REP4_AS(a,b,p3##q1,p3##q2,p3##q3,p3##q4),\
00432 GAN_REP4_AS(a,b,p4##q1,p4##q2,p4##q3,p4##q4))
00433 #define GAN_REP44_A(a,p1,p2,p3,p4,q1,q2,q3,q4)\
00434 (GAN_REP4_A(a,p1##q1,p1##q2,p1##q3,p1##q4),\
00435 GAN_REP4_A(a,p2##q1,p2##q2,p2##q3,p2##q4),\
00436 GAN_REP4_A(a,p3##q1,p3##q2,p3##q3,p3##q4),\
00437 GAN_REP4_A(a,p4##q1,p4##q2,p4##q3,p4##q4))
00438
00439
00440 #define GAN_REP44_AS_C(a,b) GAN_REP44_AS(a,b,x,y,z,w,x,y,z,w)
00441 #define GAN_REP44_AAS_C(a,b,c) GAN_REP44_AAS(a,b,c,x,y,z,w,x,y,z,w)
00442 #define GAN_REP44_AAAS_C(a,b,c,d) GAN_REP44_AAAS(a,b,c,d,x,y,z,w,x,y,z,w)
00443 #define GAN_REP44_A_C(a) GAN_REP44_A(a,x,y,z,w,x,y,z,w)
00444 #define GAN_REP44_AA_C(a,b) GAN_REP44_AA(a,b,x,y,z,w,x,y,z,w)
00445 #define GAN_REP44_AAA_C(a,b,c) GAN_REP44_AAA(a,b,c,x,y,z,w,x,y,z,w)
00446
00447
00448 #define GAN_REP44_AAT(a,b,p1,p2,p3,p4,q1,q2,q3,q4)\
00449 (GAN_REP4_AB(a,b,p1##q1,p1##q2,p1##q3,p1##q4,p1##q1,p2##q1,p3##q1,p4##q1),\
00450 GAN_REP4_AB(a,b,p2##q1,p2##q2,p2##q3,p2##q4,p1##q2,p2##q2,p3##q2,p4##q2),\
00451 GAN_REP4_AB(a,b,p3##q1,p3##q2,p3##q3,p3##q4,p1##q3,p2##q3,p3##q3,p4##q3),\
00452 GAN_REP4_AB(a,b,p4##q1,p4##q2,p4##q3,p4##q4,p1##q4,p2##q4,p3##q4,p4##q4))
00453 #define GAN_REP44_AAT_C(a,b) GAN_REP44_AAT(a,b,x,y,z,w,x,y,z,w)
00454
00455
00456 #define GAN_FREP44L_A(a,b,p1,p2,p3,p4,q1,q2,q3,q4,r11,r21,r22,r31,r32,r33,r41,r42,r43,r44)\
00457 (GAN_FREP1_A(a,b,p1##q1,r11),\
00458 GAN_FREP2_A(a,b,p2##q1,p2##q2,r21,r22),\
00459 GAN_FREP3_A(a,b,p3##q1,p3##q2,p3##q3,r31,r32,r33),\
00460 GAN_FREP4_A(a,b,p4##q1,p4##q2,p4##q3,p4##q4,r41,r42,r43,r44))
00461 #define GAN_FREP44L_A_C(a,b,r11,r21,r22,r31,r32,r33,r41,r42,r43,r44) \
00462 GAN_FREP44L_A(a,b,x,y,z,w,x,y,z,w,r11,r21,r22,r31,r32,r33,r41,r42,r43,r44)
00463
00464 #define GAN_REP44L_ABCS(a,b,c,d,p1,p2,p3,p4,q1,q2,q3,q4,r1,r2,r3,r4,s1,s2,s3,s4,t1,t2,t3,t4,u1,u2,u3,u4)\
00465 (GAN_REP1_ABCS(a,b,c,d,p1##q1,r1##s1,t1##u1),\
00466 GAN_REP2_ABCS(a,b,c,d,p2##q1,p2##q2,r2##s1,r2##s2,t2##u1,t2##u2),\
00467 GAN_REP3_ABCS(a,b,c,d,p3##q1,p3##q2,p3##q3,r3##s1,r3##s2,r3##s3,t3##u1,t3##u2,t3##u3),\
00468 GAN_REP4_ABCS(a,b,c,d,p4##q1,p4##q2,p4##q3,p4##q4,r4##s1,r4##s2,r4##s3,r4##s4,t4##u1,t4##u2,t4##u3,t4##u4))
00469 #define GAN_REP44L_ABC(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4,r1,r2,r3,r4,s1,s2,s3,s4,t1,t2,t3,t4,u1,u2,u3,u4)\
00470 (GAN_REP1_ABC(a,b,c,p1##q1,r1##s1,t1##u1),\
00471 GAN_REP2_ABC(a,b,c,p2##q1,p2##q2,r2##s1,r2##s2,t2##u1,t2##u2),\
00472 GAN_REP3_ABC(a,b,c,p3##q1,p3##q2,p3##q3,r3##s1,r3##s2,r3##s3,t3##u1,t3##u2,t3##u3),\
00473 GAN_REP4_ABC(a,b,c,p4##q1,p4##q2,p4##q3,p4##q4,r4##s1,r4##s2,r4##s3,r4##s4,t4##u1,t4##u2,t4##u3,t4##u4))
00474 #define GAN_REP44L_AAAS(a,b,c,d,p1,p2,p3,p4,q1,q2,q3,q4)\
00475 GAN_REP44L_ABCS(a,b,c,d,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4)
00476 #define GAN_REP44L_AAA(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4)\
00477 GAN_REP44L_ABC(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4)
00478 #define GAN_REP44L_ABS(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4,r1,r2,r3,r4,s1,s2,s3,s4)\
00479 (GAN_REP1_ABS(a,b,c,p1##q1,r1##s1),\
00480 GAN_REP2_ABS(a,b,c,p2##q1,p2##q2,r2##s1,r2##s2),\
00481 GAN_REP3_ABS(a,b,c,p3##q1,p3##q2,p3##q3,r3##s1,r3##s2,r3##s3),\
00482 GAN_REP4_ABS(a,b,c,p4##q1,p4##q2,p4##q3,p4##q4,r4##s1,r4##s2,r4##s3,r4##s4))
00483 #define GAN_REP44L_AB(a,b,p1,p2,p3,p4,q1,q2,q3,q4,r1,r2,r3,r4,s1,s2,s3,s4)\
00484 (GAN_REP1_AB(a,b,p1##q1,r1##s1),\
00485 GAN_REP2_AB(a,b,p2##q1,p2##q2,r2##s1,r2##s2),\
00486 GAN_REP3_AB(a,b,p3##q1,p3##q2,p3##q3,r3##s1,r3##s2,r3##s3),\
00487 GAN_REP4_AB(a,b,p4##q1,p4##q2,p4##q3,p4##q4,r4##s1,r4##s2,r4##s3,r4##s4))
00488 #define GAN_REP44L_AAS(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4)\
00489 GAN_REP44L_ABS(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4)
00490 #define GAN_REP44L_AA(a,b,p1,p2,p3,p4,q1,q2,q3,q4)\
00491 GAN_REP44L_AB(a,b,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4)
00492 #define GAN_REP44L_AS(a,b,p1,p2,p3,p4,q1,q2,q3,q4)\
00493 (GAN_REP1_AS(a,b,p1##q1),\
00494 GAN_REP2_AS(a,b,p2##q1,p2##q2),\
00495 GAN_REP3_AS(a,b,p3##q1,p3##q2,p3##q3),\
00496 GAN_REP4_AS(a,b,p4##q1,p4##q2,p4##q3,p4##q4))
00497 #define GAN_REP44L_A(a,p1,p2,p3,p4,q1,q2,q3,q4)\
00498 (GAN_REP1_A(a,p1##q1),\
00499 GAN_REP2_A(a,p2##q1,p2##q2),\
00500 GAN_REP3_A(a,p3##q1,p3##q2,p3##q3),\
00501 GAN_REP4_A(a,p4##q1,p4##q2,p4##q3,p4##q4))
00502 #define GAN_REP44L_AS_C(a,b) GAN_REP44L_AS(a,b,x,y,z,w,x,y,z,w)
00503 #define GAN_REP44L_AAS_C(a,b,c) GAN_REP44L_AAS(a,b,c,x,y,z,w,x,y,z,w)
00504 #define GAN_REP44L_AAAS_C(a,b,c,d) GAN_REP44L_AAAS(a,b,c,d,x,y,z,w,x,y,z,w)
00505 #define GAN_REP44L_A_C(a) GAN_REP44L_A(a,x,y,z,w,x,y,z,w)
00506 #define GAN_REP44L_AA_C(a,b) GAN_REP44L_AA(a,b,x,y,z,w,x,y,z,w)
00507 #define GAN_REP44L_AAA_C(a,b,c) GAN_REP44L_AAA(a,b,c,x,y,z,w,x,y,z,w)
00508 #define GAN_FREP44L_A_C(a,b,r11,r21,r22,r31,r32,r33,r41,r42,r43,r44)\
00509 GAN_FREP44L_A(a,b,x,y,z,w,x,y,z,w,r11,r21,r22,r31,r32,r33,r41,r42,r43,r44)
00510
00511 #ifdef __cplusplus
00512 }
00513 #endif
00514
00515 #endif
00516 #include <gandalf/linalg/4vectorf.h>
00517 #include <gandalf/linalg/3x3matrixf.h>
00531
00532
00533
00534
00535
00536
00537
00538
00539
00540
00541
00542
00543
00544
00545
00546 #endif
00547 #include <gandalf/linalg/matf_gen.h>
00548 #include <gandalf/linalg/matf_square.h>
00549
00550 #ifdef __cplusplus
00551 extern "C" {
00552 #endif
00553
00569
00570 typedef struct Gan_Matrix44_f
00571 {
00572 float xx, xy, xz, xw,
00573 yx, yy, yz, yw,
00574 zx, zy, zz, zw,
00575 wx, wy, wz, ww;
00576 } Gan_Matrix44_f;
00577
00578 #ifndef NDEBUG
00579
00580 typedef enum { GAN_SYMMETRIC_MATRIX44_F, GAN_LOWER_TRI_MATRIX44_F }
00581 Gan_SquMatrix44Type_f;
00582 #endif
00583
00585 typedef struct Gan_SquMatrix44_f
00586 {
00587 #ifndef NDEBUG
00588
00589 Gan_SquMatrix44Type_f type;
00590 #endif
00591
00592
00593 float xx,
00594 yx, yy,
00595 zx, zy, zz,
00596 wx, wy, wz, ww;
00597 } Gan_SquMatrix44_f;
00598
00599
00600 #define GAN_ST44F_FILL(A,t,XX,YX,YY,ZX,ZY,ZZ,WX,WY,WZ,WW)\
00601 (GAN_TEST_OP1(A,Gan_SquMatrix44_f),gan_eval((A)->type=t),\
00602 GAN_FREP44L_A_C((A)->,=,(XX),(YX),(YY),(ZX),(ZY),(ZZ),(WX),(WY),(WZ),(WW)))
00603 #define GAN_ST44F_IDENT(A,t)\
00604 (GAN_TEST_OP1(A,Gan_SquMatrix44_f),gan_eval((A)->type=t),\
00605 GAN_FREP44L_A_C((A)->,=,1.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0))
00606
00607
00608 #define GAN_MAT44F_MULT1D(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4)\
00609 (a p1 = GAN_REP4_OP_AB(b,* c,xx,xy,xz,xw,q1,q2,q3,q4,+),\
00610 a p2 = GAN_REP4_OP_AB(b,* c,yx,yy,yz,yw,q1,q2,q3,q4,+),\
00611 a p3 = GAN_REP4_OP_AB(b,* c,zx,zy,zz,zw,q1,q2,q3,q4,+),\
00612 a p4 = GAN_REP4_OP_AB(b,* c,wx,wy,wz,ww,q1,q2,q3,q4,+))
00613 #define GAN_MAT44TF_MULT1D(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4)\
00614 (a p1 = GAN_REP4_OP_AB(b,* c,xx,yx,zx,wx,q1,q2,q3,q4,+),\
00615 a p2 = GAN_REP4_OP_AB(b,* c,xy,yy,zy,wy,q1,q2,q3,q4,+),\
00616 a p3 = GAN_REP4_OP_AB(b,* c,xz,yz,zz,wz,q1,q2,q3,q4,+),\
00617 a p4 = GAN_REP4_OP_AB(b,* c,xw,yw,zw,ww,q1,q2,q3,q4,+))
00618
00619
00620 #define GAN_SYM44F_MULT1D(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4)\
00621 (a p1 = GAN_REP4_OP_AB(b,* c,xx,yx,zx,wx,q1,q2,q3,q4,+),\
00622 a p2 = GAN_REP4_OP_AB(b,* c,yx,yy,zy,wy,q1,q2,q3,q4,+),\
00623 a p3 = GAN_REP4_OP_AB(b,* c,zx,zy,zz,wz,q1,q2,q3,q4,+),\
00624 a p4 = GAN_REP4_OP_AB(b,* c,wx,wy,wz,ww,q1,q2,q3,q4,+))
00625
00626
00627 #define GAN_LOW44F_MULT1D(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4)\
00628 (a p4 = GAN_REP4_OP_AB(b,* c,wx,wy,wz,ww,q1,q2,q3,q4,+),\
00629 a p3 = GAN_REP3_OP_AB(b,* c,zx,zy,zz,q1,q2,q3,+),\
00630 a p2 = GAN_REP2_OP_AB(b,* c,yx,yy,q1,q2,+),\
00631 a p1 = GAN_REP1_OP_AB(b,* c,xx,q1,+))
00632 #define GAN_LOW44IF_MULT1D(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4)\
00633 (a p1 = c q1 / b xx,\
00634 a p2 = (c q2 - b yx * a p1) / b yy,\
00635 a p3 = (c q3 - b zx * a p1 - b zy * a p2) / b zz,\
00636 a p4 = (c q4 - b wx * a p1 - b wy * a p2 - b wz * a p3) / b ww)
00637
00638
00639 #define GAN_UPP44F_MULT1D(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4)\
00640 (a p1 = GAN_REP4_OP_AB(b,* c,xx,yx,zx,wx,q1,q2,q3,q4,+),\
00641 a p2 = GAN_REP3_OP_AB(b,* c,yy,zy,wy,q2,q3,q4,+),\
00642 a p3 = GAN_REP2_OP_AB(b,* c,zz,wz,q3,q4,+),\
00643 a p4 = GAN_REP1_OP_AB(b,* c,ww,q4,+))
00644 #define GAN_UPP44IF_MULT1D(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4)\
00645 (a p4 = c q4 / b ww,\
00646 a p3 = (c q3 - b wz * a p4) / b zz,\
00647 a p2 = (c q2 - b zy * a p3 - b wy * a p4) / b yy,\
00648 a p1 = (c q1 - b yx * a p2 - b zx * a p3 - b wx * a p4) / b xx)
00649
00650
00651 #define GAN_ST44F_ZERO(A,t)\
00652 (GAN_TEST_OP1(A,Gan_SquMatrix44_f), gan_eval((A)->type=t),\
00653 GAN_REP44L_AS_C((A)->,=0.0))
00654 #define GAN_ST44F_COPY(A,B,t)\
00655 (GAN_TEST_OP2(A,B,Gan_SquMatrix44_f,Gan_SquMatrix44_f),\
00656 assert((A)->type==t), gan_eval((B)->type=(A)->type),\
00657 GAN_REP44L_AA_C((B)->,=(A)->))
00658 #define GAN_ST44F_SCALE(A,a,B,t)\
00659 (GAN_TEST_OP2(A,B,Gan_SquMatrix44_f,Gan_SquMatrix44_f),\
00660 assert((A)->type==t), gan_eval((B)->type=(A)->type),\
00661 GAN_REP44L_AAS_C((B)->,=(A)->,*(a)))
00662 #define GAN_ST44F_DIVIDE(A,a,B,t)\
00663 (GAN_TEST_OP2(A,B,Gan_SquMatrix44_f,Gan_SquMatrix44_f),\
00664 assert((A)->type==t), gan_eval((B)->type=(A)->type),\
00665 GAN_REP44L_AAS_C((B)->,=(A)->,/(a)))
00666 #define GAN_ST44F_NEGATE(A,B,t)\
00667 (GAN_TEST_OP2(A,B,Gan_SquMatrix44_f,Gan_SquMatrix44_f),\
00668 assert((A)->type==t), gan_eval((B)->type=(A)->type),\
00669 GAN_REP44L_AA_C((B)->,=-(A)->))
00670 #define GAN_ST44F_ADD(A,B,C,t)\
00671 (GAN_TEST_OP3(A,B,C,Gan_SquMatrix44_f,Gan_SquMatrix44_f,Gan_SquMatrix44_f),\
00672 assert((A)->type==t && (B)->type==t), gan_eval((C)->type=(A)->type),\
00673 GAN_REP44L_AAA_C((C)->,=(A)->,+(B)->))
00674 #define GAN_ST44F_SUB(A,B,C,t)\
00675 (GAN_TEST_OP3(A,B,C,Gan_SquMatrix44_f,Gan_SquMatrix44_f,Gan_SquMatrix44_f),\
00676 assert((A)->type==t && (B)->type==t), gan_eval((C)->type=(A)->type),\
00677 GAN_REP44L_AAA_C((C)->,=(A)->,-(B)->))
00678
00679
00693
00694
00695
00696
00697
00698
00699
00700
00701
00702
00703
00704
00705
00706
00707
00708 #ifndef _GAN_4X4MATF_H
00709
00726 Gan_Matrix44_f *gan_mat44f_fill_q ( Gan_Matrix44_f *A,
00727 float XX, float XY, float XZ, float XW,
00728 float YX, float YY, float YZ, float YW,
00729 float ZX, float ZY, float ZZ, float ZW,
00730 float WX, float WY, float WZ, float WW );
00731
00753 void gan_mat44f_get_rows_q ( const Gan_Matrix44_f *A,
00754 Gan_Vector4_f *p, Gan_Vector4_f *q,
00755 Gan_Vector4_f *r, Gan_Vector4_f *s );
00756
00768 void gan_mat44f_get_cols_q ( const Gan_Matrix44_f *A,
00769 Gan_Vector4_f *p, Gan_Vector4_f *q,
00770 Gan_Vector4_f *r, Gan_Vector4_f *s );
00771
00779 Gan_Matrix33_f *gan_mat44f_get_m33tl_q ( const Gan_Matrix44_f *A, Gan_Matrix33_f *B );
00780
00788 Gan_Vector3_f *gan_mat44f_get_v3tr_q ( const Gan_Matrix44_f *A, Gan_Vector3_f *p );
00789
00803 void gan_mat44f_get_parts_q ( const Gan_Matrix44_f *A, Gan_Matrix33_f *B,
00804 Gan_Vector3_f *p, Gan_Vector3_f *q, float *s );
00805
00818 void gan_mat44f_get_blocks_q ( const Gan_Matrix44_f *M,
00819 Gan_Matrix22_f *A, Gan_Matrix22_f *B,
00820 Gan_Matrix22_f *C, Gan_Matrix22_f *D );
00821
00844 Gan_Matrix44_f *gan_mat44f_set_parts_q ( Gan_Matrix44_f *A,
00845 const Gan_Matrix33_f *B, const Gan_Vector3_f *p,
00846 const Gan_Vector3_f *q, float s );
00847
00861 Gan_Matrix44_f *gan_mat44f_set_blocks_q ( Gan_Matrix44_f *M,
00862 const Gan_Matrix22_f *A, const Gan_Matrix22_f *B,
00863 const Gan_Matrix22_f *C, const Gan_Matrix22_f *D );
00864
00870 #endif
00871
00872 #define GAN_MATTYPE Gan_Matrix44_f
00873 #define GAN_MATRIX_TYPE Gan_Matrix_f
00874 #define GAN_SQUMATRIX_TYPE Gan_SquMatrix_f
00875 #define GAN_VECTOR_TYPE Gan_Vector_f
00876 #define GAN_MAT_ELEMENT_TYPE GAN_FLOAT
00877 #define GAN_REALTYPE float
00878 #define GAN_FWRITE_LENDIAN gan_fwrite_lendian_f32
00879 #define GAN_FREAD_LENDIAN gan_fread_lendian_f32
00880 #define GAN_VECTYPE1 Gan_Vector4_f
00881 #define GAN_VECTYPE2 Gan_Vector4_f
00882 #define GAN_MATTYPEL Gan_Matrix44_f
00883 #define GAN_MATTYPER Gan_Matrix44_f
00884 #define GAN_SQUMATTYPEL Gan_SquMatrix44_f
00885 #define GAN_SQUMATTYPER Gan_SquMatrix44_f
00886 #define GAN_MAT_FPRINT gan_mat44f_fprint
00887 #define GAN_MAT_PRINT gan_mat44f_print
00888 #define GAN_MAT_FSCANF gan_mat44f_fscanf
00889 #define GAN_MAT_FWRITE gan_mat44f_fwrite
00890 #define GAN_MAT_FREAD gan_mat44f_fread
00891 #define GAN_MAT_ZERO_Q gan_mat44f_zero_q
00892 #define GAN_MAT_ZERO_S gan_mat44f_zero_s
00893 #define GAN_MAT_COPY_Q gan_mat44f_copy_q
00894 #define GAN_MAT_COPY_S gan_mat44f_copy_s
00895 #define GAN_MAT_SCALE_Q gan_mat44f_scale_q
00896 #define GAN_MAT_SCALE_I gan_mat44f_scale_i
00897 #define GAN_MAT_SCALE_S gan_mat44f_scale_s
00898 #define GAN_MAT_DIVIDE_Q gan_mat44f_divide_q
00899 #define GAN_MAT_DIVIDE_I gan_mat44f_divide_i
00900 #define GAN_MAT_DIVIDE_S gan_mat44f_divide_s
00901 #define GAN_MAT_NEGATE_Q gan_mat44f_negate_q
00902 #define GAN_MAT_NEGATE_I gan_mat44f_negate_i
00903 #define GAN_MAT_NEGATE_S gan_mat44f_negate_s
00904 #define GAN_MAT_UNIT_Q gan_mat44f_unit_q
00905 #define GAN_MAT_UNIT_I gan_mat44f_unit_i
00906 #define GAN_MAT_UNIT_S gan_mat44f_unit_s
00907 #define GAN_MAT_ADD_Q gan_mat44f_add_q
00908 #define GAN_MAT_ADD_I1 gan_mat44f_add_i1
00909 #define GAN_MAT_ADD_I2 gan_mat44f_add_i2
00910 #define GAN_MAT_INCREMENT gan_mat44f_increment
00911 #define GAN_MAT_ADD_S gan_mat44f_add_s
00912 #define GAN_MAT_SUB_Q gan_mat44f_sub_q
00913 #define GAN_MAT_SUB_I1 gan_mat44f_sub_i1
00914 #define GAN_MAT_SUB_I2 gan_mat44f_sub_i2
00915 #define GAN_MAT_DECREMENT gan_mat44f_decrement
00916 #define GAN_MAT_SUB_S gan_mat44f_sub_s
00917 #define GAN_VEC_OUTER_Q gan_vec44f_outer_q
00918 #define GAN_VEC_OUTER_S gan_vec44f_outer_s
00919 #define GAN_MAT_MULTV_Q gan_mat44f_multv4_q
00920 #define GAN_MAT_MULTV_S gan_mat44f_multv4_s
00921 #define GAN_MATT_MULTV_Q gan_mat44Tf_multv4_q
00922 #define GAN_MATT_MULTV_S gan_mat44Tf_multv4_s
00923 #define GAN_MAT_LMULTMT_Q gan_mat44f_lmultm44T_q
00924 #define GAN_MAT_LMULTMT_S gan_mat44f_lmultm44T_s
00925 #define GAN_MAT_RMULTM_Q gan_mat44f_rmultm44_q
00926 #define GAN_MAT_RMULTM_S gan_mat44f_rmultm44_s
00927 #define GAN_MAT_RMULTMT_Q gan_mat44f_rmultm44T_q
00928 #define GAN_MAT_RMULTMT_S gan_mat44f_rmultm44T_s
00929 #define GAN_MAT_LMULTMT_SYM_Q gan_mat44f_lmultm44T_sym_q
00930 #define GAN_MAT_LMULTMT_SYM_S gan_mat44f_lmultm44T_sym_s
00931 #define GAN_MAT_RMULTMT_SYM_Q gan_mat44f_rmultm44T_sym_q
00932 #define GAN_MAT_RMULTMT_SYM_S gan_mat44f_rmultm44T_sym_s
00933 #define GAN_MAT_SLMULTT_Q gan_mat44f_slmultT_q
00934 #define GAN_MAT_SLMULTT_S gan_mat44f_slmultT_s
00935 #define GAN_MAT_SRMULTT_Q gan_mat44f_srmultT_q
00936 #define GAN_MAT_SRMULTT_S gan_mat44f_srmultT_s
00937 #define GAN_MAT_LMULTS_Q gan_mat44f_lmults44_q
00938 #define GAN_MAT_LMULTS_S gan_mat44f_lmults44_s
00939 #define GAN_MAT_RMULTS_Q gan_mat44f_rmults44_q
00940 #define GAN_MAT_RMULTS_S gan_mat44f_rmults44_s
00941 #define GAN_SYMMATL_LRMULT_Q gan_symmat44f_lrmultm44T_q
00942 #define GAN_SYMMATL_LRMULT_S gan_symmat44f_lrmultm44T_s
00943 #define GAN_SYMMATR_LRMULT_Q gan_symmat44f_lrmultm44_q
00944 #define GAN_SYMMATR_LRMULT_S gan_symmat44f_lrmultm44_s
00945 #define GAN_MAT_LMULTL_Q gan_mat44f_lmultl44_q
00946 #define GAN_MAT_LMULTL_S gan_mat44f_lmultl44_s
00947 #define GAN_MAT_LMULTL_I gan_mat44f_lmultl44_i
00948 #define GAN_MAT_LMULTLI_Q gan_mat44f_lmultl44I_q
00949 #define GAN_MAT_LMULTLI_S gan_mat44f_lmultl44I_s
00950 #define GAN_MAT_LMULTLI_I gan_mat44f_lmultl44I_i
00951 #define GAN_MAT_LMULTLT_Q gan_mat44f_lmultl44T_q
00952 #define GAN_MAT_LMULTLT_S gan_mat44f_lmultl44T_s
00953 #define GAN_MAT_LMULTLT_I gan_mat44f_lmultl44T_i
00954 #define GAN_MAT_LMULTLIT_Q gan_mat44f_lmultl44IT_q
00955 #define GAN_MAT_LMULTLIT_S gan_mat44f_lmultl44IT_s
00956 #define GAN_MAT_LMULTLIT_I gan_mat44f_lmultl44IT_i
00957 #define GAN_MAT_RMULTL_Q gan_mat44f_rmultl44_q
00958 #define GAN_MAT_RMULTL_S gan_mat44f_rmultl44_s
00959 #define GAN_MAT_RMULTL_I gan_mat44f_rmultl44_i
00960 #define GAN_MAT_RMULTLI_Q gan_mat44f_rmultl44I_q
00961 #define GAN_MAT_RMULTLI_S gan_mat44f_rmultl44I_s
00962 #define GAN_MAT_RMULTLI_I gan_mat44f_rmultl44I_i
00963 #define GAN_MAT_RMULTLT_Q gan_mat44f_rmultl44T_q
00964 #define GAN_MAT_RMULTLT_S gan_mat44f_rmultl44T_s
00965 #define GAN_MAT_RMULTLT_I gan_mat44f_rmultl44T_i
00966 #define GAN_MAT_RMULTLIT_Q gan_mat44f_rmultl44IT_q
00967 #define GAN_MAT_RMULTLIT_S gan_mat44f_rmultl44IT_s
00968 #define GAN_MAT_RMULTLIT_I gan_mat44f_rmultl44IT_i
00969 #define GAN_MAT_SUMSQR_Q gan_mat44f_sumsqr_q
00970 #define GAN_MAT_SUMSQR_S gan_mat44f_sumsqr_s
00971 #define GAN_MAT_FNORM_Q gan_mat44f_Fnorm_q
00972 #define GAN_MAT_FNORM_S gan_mat44f_Fnorm_s
00973 #define GAN_MAT_FROM_MAT_Q gan_mat44f_from_matf_q
00974 #define GAN_MAT_FROM_MAT_S gan_mat44f_from_matf_s
00975 #define GAN_MAT_FROM_SQUMAT_Q gan_mat44f_from_squmatf_q
00976 #define GAN_MAT_FROM_SQUMAT_S gan_mat44f_from_squmatf_s
00977 #define GAN_SQUMAT_FROM_SQUMAT_Q gan_squmat44f_from_squmatf_q
00978 #define GAN_SQUMAT_FROM_SQUMAT_S gan_squmat44f_from_squmatf_s
00979
00980 #define GAN_SQUMAT_IDENT_Q gan_mat44f_ident_q
00981 #define GAN_SQUMAT_IDENT_S gan_mat44f_ident_s
00982 #define GAN_SQUMAT_TPOSE_Q gan_mat44f_tpose_q
00983 #define GAN_SQUMAT_TPOSE_S gan_mat44f_tpose_s
00984 #define GAN_SQUMAT_TPOSE_I gan_mat44f_tpose_i
00985 #define GAN_MAT_SADDT_Q gan_mat44f_saddT_q
00986 #define GAN_MAT_SADDT_S gan_mat44f_saddT_s
00987 #define GAN_SQUMAT_INVERT gan_mat44f_invert
00988 #define GAN_SQUMAT_INVERT_Q gan_mat44f_invert_q
00989 #define GAN_SQUMAT_INVERT_S gan_mat44f_invert_s
00990 #define GAN_SQUMAT_INVERT_I gan_mat44f_invert_i
00991 #define GAN_SQUMAT_ADJOINT_Q gan_mat44f_adjoint_q
00992 #define GAN_SQUMAT_ADJOINT_S gan_mat44f_adjoint_s
00993 #define GAN_SQUMAT_ADJOINTT_Q gan_mat44f_adjointT_q
00994 #define GAN_SQUMAT_ADJOINTT_S gan_mat44f_adjointT_s
00995 #define GAN_SQUMAT_DET_Q gan_mat44f_det_q
00996 #define GAN_SQUMAT_DET_S gan_mat44f_det_s
00997 #define GAN_SQUMAT_TRACE_Q gan_mat44f_trace_q
00998 #define GAN_SQUMAT_TRACE_S gan_mat44f_trace_s
00999
01000 #ifndef _GAN_4X4MATF_H
01001 #define _GAN_4X4MATF_H
01002
01003
01004 #endif
01005
01018
01019
01020
01021
01022
01023
01024
01025
01026
01027
01028
01029
01030
01031
01032
01033
01034
01035
01036
01037
01038
01039
01052 Gan_Matrix44_f *gan_mat44f_ident_q ( Gan_Matrix44_f *A );
01053
01071 Gan_Matrix44_f *gan_mat44f_tpose_q ( Gan_Matrix44_f *A, Gan_Matrix44_f *B );
01072
01090 Gan_SquMatrix44_f *gan_mat44f_saddT_q ( const Gan_Matrix44_f *A, Gan_SquMatrix44_f *B );
01091
01122 Gan_Matrix44_f *gan_mat44f_invert_q ( Gan_Matrix44_f *A, Gan_Matrix44_f *B );
01123
01132 Gan_Matrix44_f *gan_mat44f_invert_i ( Gan_Matrix44_f *A );
01133
01148 float gan_mat44f_det_q ( const Gan_Matrix44_f *A );
01149
01155 float gan_mat44f_trace_q ( const Gan_Matrix44_f *A );
01156
01162 #undef GAN_SQUMAT_IDENT_Q
01163 #undef GAN_SQUMAT_IDENT_S
01164 #undef GAN_SQUMAT_TPOSE_Q
01165 #undef GAN_SQUMAT_TPOSE_S
01166 #undef GAN_SQUMAT_TPOSE_I
01167 #undef GAN_MAT_SADDT_Q
01168 #undef GAN_MAT_SADDT_S
01169 #undef GAN_SQUMATI_MULTV_Q
01170 #undef GAN_SQUMATI_MULTV_S
01171 #undef GAN_SQUMATI_MULTV_I
01172 #undef GAN_SQUMATIT_MULTV_Q
01173 #undef GAN_SQUMATIT_MULTV_S
01174 #undef GAN_SQUMATIT_MULTV_I
01175 #undef GAN_SQUMAT_INVERT
01176 #undef GAN_SQUMAT_INVERT_Q
01177 #undef GAN_SQUMAT_INVERT_S
01178 #undef GAN_SQUMAT_INVERT_I
01179 #undef GAN_SQUMAT_ADJOINT_Q
01180 #undef GAN_SQUMAT_ADJOINT_S
01181 #undef GAN_SQUMAT_ADJOINTT_Q
01182 #undef GAN_SQUMAT_ADJOINTT_S
01183 #undef GAN_SQUMAT_DET_Q
01184 #undef GAN_SQUMAT_DET_S
01185 #undef GAN_SQUMAT_TRACE_Q
01186 #undef GAN_SQUMAT_TRACE_S
01187
01200
01201
01202
01203
01204
01205
01206
01207
01208
01209
01210
01211
01212
01213
01214
01215
01216
01217
01218
01219
01220
01231 Gan_Matrix44_f *gan_mat44f_zero_q ( const Gan_Matrix44_f *A );
01232
01249 Gan_Matrix44_f *gan_mat44f_copy_q ( Gan_Matrix44_f *A, Gan_Matrix44_f *B );
01250
01268 Gan_Matrix44_f *gan_mat44f_scale_q ( Gan_Matrix44_f *A, float a,
01269 Gan_Matrix44_f *B );
01270
01278 Gan_Matrix44_f *gan_mat44f_scale_i ( Gan_Matrix44_f *A, float a );
01279
01288 Gan_Matrix44_f *gan_mat44f_divide_q ( Gan_Matrix44_f *A, float a,
01289 Gan_Matrix44_f *B );
01290
01298 Gan_Matrix44_f *gan_mat44f_divide_i ( Gan_Matrix44_f *A, float a );
01299
01307 Gan_Matrix44_f *gan_mat44f_negate_q ( Gan_Matrix44_f *A, Gan_Matrix44_f *B );
01308
01316 Gan_Matrix44_f *gan_mat44f_negate_i ( Gan_Matrix44_f *A );
01317
01325 Gan_Matrix44_f *gan_mat44f_unit_i ( Gan_Matrix44_f *A );
01326
01344 Gan_Matrix44_f *gan_mat44f_add_q ( Gan_Matrix44_f *A, Gan_Matrix44_f *B, Gan_Matrix44_f *C );
01345
01354 Gan_Matrix44_f *gan_mat44f_add_i1 ( Gan_Matrix44_f *A, Gan_Matrix44_f *B );
01355
01364 Gan_Matrix44_f *gan_mat44f_add_i2 ( Gan_Matrix44_f *A, Gan_Matrix44_f *B );
01365
01374 Gan_Matrix44_f *gan_mat44f_increment ( Gan_Matrix44_f *A, Gan_Matrix44_f *B );
01375
01393 Gan_Matrix44_f *gan_mat44f_sub_q ( Gan_Matrix44_f *A, Gan_Matrix44_f *B, Gan_Matrix44_f *C );
01394
01403 Gan_Matrix44_f *gan_mat44f_sub_i1 ( Gan_Matrix44_f *A, Gan_Matrix44_f *B );
01404
01413 Gan_Matrix44_f *gan_mat44f_sub_i2 ( Gan_Matrix44_f *A, Gan_Matrix44_f *B );
01414
01423 Gan_Matrix44_f *gan_mat44f_decrement ( Gan_Matrix44_f *A, Gan_Matrix44_f *B );
01424
01442 Gan_Matrix44_f *gan_vec44f_outer_q ( const Gan_Vector4_f *p, const Gan_Vector4_f *q,
01443 Gan_Matrix44_f *A );
01444
01453 Gan_Vector4_f *gan_mat44f_multv4_q ( const Gan_Matrix44_f *A, Gan_Vector4_f *p,
01454 Gan_Vector4_f *q );
01455
01456
01465 Gan_Vector4_f *gan_mat44Tf_multv4_q ( const Gan_Matrix44_f *A, Gan_Vector4_f *p,
01466 Gan_Vector4_f *q );
01467
01468
01488 Gan_Matrix44_f *gan_mat44f_lmultm44T_q ( Gan_Matrix44_f *A, const Gan_Matrix44_f *B,
01489 Gan_Matrix44_f *C );
01490
01500 Gan_Matrix44_f *gan_mat44f_rmultm44_q ( Gan_Matrix44_f *A, const Gan_Matrix44_f *B,
01501 Gan_Matrix44_f *C );
01502
01512 Gan_Matrix44_f *gan_mat44f_rmultm44T_q ( Gan_Matrix44_f *A, const Gan_Matrix44_f *B,
01513 Gan_Matrix44_f *C );
01514
01526 Gan_SquMatrix44_f *gan_mat44f_lmultm44T_sym_q ( const Gan_Matrix44_f *A, const Gan_Matrix44_f *B,
01527 Gan_SquMatrix44_f *C );
01528
01540 Gan_SquMatrix44_f *gan_mat44f_rmultm44T_sym_q ( const Gan_Matrix44_f *A, const Gan_Matrix44_f *B,
01541 Gan_SquMatrix44_f *C );
01542
01551 Gan_Matrix44_f *gan_mat44f_lmults44_q ( Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B,
01552 Gan_Matrix44_f *C );
01553
01562 Gan_Matrix44_f *gan_mat44f_rmults44_q ( Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B,
01563 Gan_Matrix44_f *C );
01564
01584 Gan_SquMatrix44_f *gan_symmat44f_lrmultm44T_q ( const Gan_SquMatrix44_f *A, const Gan_Matrix44_f *B,
01585 const Gan_Matrix44_f *C, Gan_SquMatrix44_f *D );
01586
01597 Gan_SquMatrix44_f *gan_symmat44f_lrmultm44_q ( const Gan_SquMatrix44_f *A, const Gan_Matrix44_f *B,
01598 const Gan_Matrix44_f *C, Gan_SquMatrix44_f *D );
01599
01618 Gan_Matrix44_f *gan_mat44f_lmultl44_q ( Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B,
01619 Gan_Matrix44_f *C );
01620
01630 Gan_Matrix44_f *gan_mat44f_lmultl44I_q ( Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B,
01631 Gan_Matrix44_f *C );
01632
01642 Gan_Matrix44_f *gan_mat44f_lmultl44T_q ( Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B,
01643 Gan_Matrix44_f *C );
01644
01654 Gan_Matrix44_f *gan_mat44f_lmultl44IT_q ( Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B,
01655 Gan_Matrix44_f *C );
01656
01666 Gan_Matrix44_f *gan_mat44f_rmultl44_q ( Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B,
01667 Gan_Matrix44_f *C );
01668
01678 Gan_Matrix44_f *gan_mat44f_rmultl44I_q ( Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B,
01679 Gan_Matrix44_f *C );
01680
01690 Gan_Matrix44_f *gan_mat44f_rmultl44T_q ( Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B,
01691 Gan_Matrix44_f *C );
01692
01702 Gan_Matrix44_f *gan_mat44f_rmultl44IT_q ( Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B,
01703 Gan_Matrix44_f *C );
01704
01714 Gan_Matrix44_f *gan_mat44f_lmultl44_i ( Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B );
01715
01725 Gan_Matrix44_f *gan_mat44f_lmultl44I_i ( Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B );
01726
01736 Gan_Matrix44_f *gan_mat44f_lmultl44T_i ( Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B );
01737
01747 Gan_Matrix44_f *gan_mat44f_lmultl44IT_i ( Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B );
01748
01758 Gan_Matrix44_f *gan_mat44f_rmultl44_i ( Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B );
01759
01769 Gan_Matrix44_f *gan_mat44f_rmultl44I_i ( Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B );
01770
01780 Gan_Matrix44_f *gan_mat44f_rmultl44T_i ( Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B );
01781
01791 Gan_Matrix44_f *gan_mat44f_rmultl44IT_i ( Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B );
01792
01801 Gan_SquMatrix44_f *gan_mat44f_slmultT_q ( Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B );
01802
01803
01812 Gan_SquMatrix44_f *gan_mat44f_srmultT_q ( const Gan_Matrix44_f *A, Gan_SquMatrix44_f *B );
01813
01814
01829 float gan_mat44f_sumsqr_q ( const Gan_Matrix44_f *A );
01830
01837 float gan_mat44f_Fnorm_q ( const Gan_Matrix44_f *A );
01838
01848 Gan_Matrix44_f *gan_mat44f_from_matf_q ( const Gan_Matrix_f *A, Gan_Matrix44_f *B );
01849
01850 Gan_Matrix44_f *gan_mat44f_from_squmatf_q ( const Gan_SquMatrix_f *A, Gan_Matrix44_f *B );
01851
01852 Gan_SquMatrix44_f *gan_squmat44f_from_squmatf_q ( const Gan_SquMatrix_f *A,
01853 Gan_SquMatrix44_f *B );
01854
01873
01874
01875
01876
01877
01878
01879
01880
01881
01882
01883
01884
01885
01886
01887
01888 #undef GAN_MATTYPE
01889 #undef GAN_MATRIX_TYPE
01890 #undef GAN_SQUMATRIX_TYPE
01891 #undef GAN_VECTOR_TYPE
01892 #undef GAN_MAT_ELEMENT_TYPE
01893 #undef GAN_REALTYPE
01894 #undef GAN_FWRITE_LENDIAN
01895 #undef GAN_FREAD_LENDIAN
01896 #undef GAN_VECTYPE1
01897 #undef GAN_VECTYPE2
01898 #undef GAN_MATTYPEL
01899 #undef GAN_MATTYPER
01900 #undef GAN_SQUMATTYPEL
01901 #undef GAN_SQUMATTYPER
01902 #undef GAN_FIXED_MATRIX_TYPE
01903 #undef GAN_MAT_FPRINT
01904 #undef GAN_MAT_PRINT
01905 #undef GAN_MAT_FSCANF
01906 #undef GAN_MAT_FWRITE
01907 #undef GAN_MAT_FREAD
01908 #undef GAN_MAT_ZERO_Q
01909 #undef GAN_MAT_ZERO_S
01910 #undef GAN_MAT_COPY_Q
01911 #undef GAN_MAT_COPY_S
01912 #undef GAN_MAT_SCALE_Q
01913 #undef GAN_MAT_SCALE_S
01914 #undef GAN_MAT_SCALE_I
01915 #undef GAN_MAT_DIVIDE_Q
01916 #undef GAN_MAT_DIVIDE_S
01917 #undef GAN_MAT_DIVIDE_I
01918 #undef GAN_MAT_NEGATE_Q
01919 #undef GAN_MAT_NEGATE_S
01920 #undef GAN_MAT_NEGATE_I
01921 #undef GAN_MAT_UNIT_Q
01922 #undef GAN_MAT_UNIT_S
01923 #undef GAN_MAT_UNIT_I
01924 #undef GAN_MAT_ADD_Q
01925 #undef GAN_MAT_ADD_I1
01926 #undef GAN_MAT_ADD_I2
01927 #undef GAN_MAT_INCREMENT
01928 #undef GAN_MAT_ADD_S
01929 #undef GAN_MAT_SUB_Q
01930 #undef GAN_MAT_SUB_I1
01931 #undef GAN_MAT_SUB_I2
01932 #undef GAN_MAT_DECREMENT
01933 #undef GAN_MAT_SUB_S
01934 #undef GAN_VEC_OUTER_Q
01935 #undef GAN_VEC_OUTER_S
01936 #undef GAN_MAT_MULTV_Q
01937 #undef GAN_MAT_MULTV_S
01938 #undef GAN_MAT_MULTV_I
01939 #undef GAN_MATT_MULTV_Q
01940 #undef GAN_MATT_MULTV_S
01941 #undef GAN_MATT_MULTV_I
01942 #undef GAN_MAT_LMULTM_Q
01943 #undef GAN_MAT_LMULTM_S
01944 #undef GAN_MAT_LMULTMT_Q
01945 #undef GAN_MAT_LMULTMT_S
01946 #undef GAN_MAT_RMULTM_Q
01947 #undef GAN_MAT_RMULTM_S
01948 #undef GAN_MAT_RMULTMT_Q
01949 #undef GAN_MAT_RMULTMT_S
01950 #undef GAN_MAT_LMULTMT_SYM_Q
01951 #undef GAN_MAT_LMULTMT_SYM_S
01952 #undef GAN_MAT_RMULTMT_SYM_Q
01953 #undef GAN_MAT_RMULTMT_SYM_S
01954 #undef GAN_MAT_LMULTS_Q
01955 #undef GAN_MAT_LMULTS_S
01956 #undef GAN_MAT_RMULTS_Q
01957 #undef GAN_MAT_RMULTS_S
01958 #undef GAN_SYMMATL_LRMULT_Q
01959 #undef GAN_SYMMATL_LRMULT_S
01960 #undef GAN_SYMMATR_LRMULT_Q
01961 #undef GAN_SYMMATR_LRMULT_S
01962 #undef GAN_MAT_LMULTL_Q
01963 #undef GAN_MAT_LMULTL_S
01964 #undef GAN_MAT_LMULTL_I
01965 #undef GAN_MAT_LMULTLI_Q
01966 #undef GAN_MAT_LMULTLI_S
01967 #undef GAN_MAT_LMULTLI_I
01968 #undef GAN_MAT_LMULTLT_Q
01969 #undef GAN_MAT_LMULTLT_S
01970 #undef GAN_MAT_LMULTLT_I
01971 #undef GAN_MAT_LMULTLIT_Q
01972 #undef GAN_MAT_LMULTLIT_S
01973 #undef GAN_MAT_LMULTLIT_I
01974 #undef GAN_MAT_RMULTL_Q
01975 #undef GAN_MAT_RMULTL_S
01976 #undef GAN_MAT_RMULTL_I
01977 #undef GAN_MAT_RMULTLI_Q
01978 #undef GAN_MAT_RMULTLI_S
01979 #undef GAN_MAT_RMULTLI_I
01980 #undef GAN_MAT_RMULTLT_Q
01981 #undef GAN_MAT_RMULTLT_S
01982 #undef GAN_MAT_RMULTLT_I
01983 #undef GAN_MAT_RMULTLIT_Q
01984 #undef GAN_MAT_RMULTLIT_S
01985 #undef GAN_MAT_RMULTLIT_I
01986 #undef GAN_MAT_SRMULTT_Q
01987 #undef GAN_MAT_SRMULTT_S
01988 #undef GAN_MAT_SRMULTT_I
01989 #undef GAN_MAT_SLMULTT_Q
01990 #undef GAN_MAT_SLMULTT_S
01991 #undef GAN_MAT_SLMULTT_I
01992 #undef GAN_MAT_RMULTLIT_S
01993 #undef GAN_MAT_SUMSQR_Q
01994 #undef GAN_MAT_SUMSQR_S
01995 #undef GAN_MAT_FNORM_Q
01996 #undef GAN_MAT_FNORM_S
01997 #undef GAN_MAT_FROM_MAT_Q
01998 #undef GAN_MAT_FROM_MAT_S
01999 #undef GAN_MAT_FROM_SQUMAT_Q
02000 #undef GAN_MAT_FROM_SQUMAT_S
02001 #undef GAN_SQUMAT_FROM_SQUMAT_Q
02002 #undef GAN_SQUMAT_FROM_SQUMAT_S
02003
02004
02018
02019
02020
02021
02022
02023
02024
02025
02026
02027
02028
02029
02030
02031
02032
02033 #ifndef _GAN_4X4SYMMATF_H
02034
02049 Gan_SquMatrix44_f *
02050 gan_symmat44f_fill_q ( Gan_SquMatrix44_f *A,
02051 float XX,
02052 float YX, float YY,
02053 float ZX, float ZY, float ZZ,
02054 float WX, float WY, float WZ, float WW );
02055
02077 void gan_symmat44f_get_parts_q ( const Gan_SquMatrix44_f *A,
02078 Gan_SquMatrix33_f *B, Gan_Vector3_f *p,
02079 float *s);
02080
02094 void gan_symmat44f_get_blocks_q ( const Gan_SquMatrix44_f *A,
02095 Gan_SquMatrix22_f *B, Gan_Matrix22_f *C,
02096 Gan_SquMatrix22_f *D );
02097
02120 Gan_SquMatrix44_f *gan_symmat44f_set_parts_q ( Gan_SquMatrix44_f *A,
02121 const Gan_SquMatrix33_f *B,
02122 const Gan_Vector3_f *p, float s );
02123
02137 Gan_SquMatrix44_f *gan_symmat44f_set_blocks_q ( Gan_SquMatrix44_f *A,
02138 const Gan_SquMatrix22_f *B,
02139 const Gan_Matrix22_f *C,
02140 const Gan_SquMatrix22_f *D );
02141
02147 #endif
02148
02149 #define GAN_MATTYPE Gan_SquMatrix44_f
02150 #define GAN_MATRIX_TYPE Gan_SquMatrix_f
02151 #define GAN_SQUMATRIX_TYPE Gan_SquMatrix_f
02152 #define GAN_VECTOR_TYPE Gan_Vector_f
02153 #define GAN_MAT_ELEMENT_TYPE GAN_FLOAT
02154 #define GAN_REALTYPE float
02155 #define GAN_FWRITE_LENDIAN gan_fwrite_lendian_f32
02156 #define GAN_FREAD_LENDIAN gan_fread_lendian_f32
02157 #define GAN_VECTYPE1 Gan_Vector4_f
02158 #define GAN_VECTYPE2 Gan_Vector4_f
02159 #define GAN_FIXED_MATRIX_TYPE GAN_SYMMETRIC_MATRIX44_F
02160 #define GAN_MAT_FPRINT gan_symmat44f_fprint
02161 #define GAN_MAT_PRINT gan_symmat44f_print
02162 #define GAN_MAT_FSCANF gan_symmat44f_fscanf
02163 #define GAN_MAT_FWRITE gan_symmat44f_fwrite
02164 #define GAN_MAT_FREAD gan_symmat44f_fread
02165 #define GAN_MAT_ZERO_Q gan_symmat44f_zero_q
02166 #define GAN_MAT_ZERO_S gan_symmat44f_zero_s
02167 #define GAN_MAT_COPY_Q gan_symmat44f_copy_q
02168 #define GAN_MAT_COPY_S gan_symmat44f_copy_s
02169 #define GAN_MAT_SCALE_Q gan_symmat44f_scale_q
02170 #define GAN_MAT_SCALE_S gan_symmat44f_scale_s
02171 #define GAN_MAT_SCALE_I gan_symmat44f_scale_i
02172 #define GAN_MAT_DIVIDE_Q gan_symmat44f_divide_q
02173 #define GAN_MAT_DIVIDE_S gan_symmat44f_divide_s
02174 #define GAN_MAT_DIVIDE_I gan_symmat44f_divide_i
02175 #define GAN_MAT_NEGATE_Q gan_symmat44f_negate_q
02176 #define GAN_MAT_NEGATE_S gan_symmat44f_negate_s
02177 #define GAN_MAT_NEGATE_I gan_symmat44f_negate_i
02178 #define GAN_MAT_UNIT_Q gan_symmat44f_unit_q
02179 #define GAN_MAT_UNIT_S gan_symmat44f_unit_s
02180 #define GAN_MAT_UNIT_I gan_symmat44f_unit_i
02181 #define GAN_MAT_ADD_Q gan_symmat44f_add_q
02182 #define GAN_MAT_ADD_I1 gan_symmat44f_add_i1
02183 #define GAN_MAT_ADD_I2 gan_symmat44f_add_i2
02184 #define GAN_MAT_INCREMENT gan_symmat44f_increment
02185 #define GAN_MAT_ADD_S gan_symmat44f_add_s
02186 #define GAN_MAT_SUB_Q gan_symmat44f_sub_q
02187 #define GAN_MAT_SUB_I1 gan_symmat44f_sub_i1
02188 #define GAN_MAT_SUB_I2 gan_symmat44f_sub_i2
02189 #define GAN_MAT_DECREMENT gan_symmat44f_decrement
02190 #define GAN_MAT_SUB_S gan_symmat44f_sub_s
02191 #define GAN_MAT_MULTV_Q gan_symmat44f_multv4_q
02192 #define GAN_MAT_MULTV_S gan_symmat44f_multv4_s
02193 #define GAN_MAT_SUMSQR_Q gan_symmat44f_sumsqr_q
02194 #define GAN_MAT_SUMSQR_S gan_symmat44f_sumsqr_s
02195 #define GAN_MAT_FNORM_Q gan_symmat44f_Fnorm_q
02196 #define GAN_MAT_FNORM_S gan_symmat44f_Fnorm_s
02197
02198 #define GAN_SQUMAT_IDENT_Q gan_symmat44f_ident_q
02199 #define GAN_SQUMAT_IDENT_S gan_symmat44f_ident_s
02200 #define GAN_SQUMAT_INVERT gan_symmat44f_invert
02201 #define GAN_SQUMAT_INVERT_Q gan_symmat44f_invert_q
02202 #define GAN_SQUMAT_INVERT_S gan_symmat44f_invert_s
02203 #define GAN_SQUMAT_INVERT_I gan_symmat44f_invert_i
02204 #define GAN_SQUMAT_DET_Q gan_symmat44f_det_q
02205 #define GAN_SQUMAT_DET_S gan_symmat44f_det_s
02206 #define GAN_SQUMAT_TRACE_Q gan_symmat44f_trace_q
02207 #define GAN_SQUMAT_TRACE_S gan_symmat44f_trace_s
02208
02209 #define GAN_VEC_OUTER_SYM_Q gan_vec44f_outer_sym_q
02210 #define GAN_VEC_OUTER_SYM_S gan_vec44f_outer_sym_s
02211 #define GAN_SYMMAT_CHOLESKY gan_symmat44f_cholesky
02212 #define GAN_SYMMAT_CHOLESKY_Q gan_symmat44f_cholesky_q
02213 #define GAN_SYMMAT_CHOLESKY_S gan_symmat44f_cholesky_s
02214 #define GAN_SYMMAT_CHOLESKY_I gan_symmat44f_cholesky_i
02215
02216 #ifndef _GAN_4X4SYMMATF_H
02217 #define _GAN_4X4SYMMATF_H
02218
02219
02220 #endif
02221
02234
02235
02236
02237
02238
02239
02240
02241
02242
02243
02244
02245
02246
02247
02248
02249
02250
02251
02252
02253
02254
02255
02266 Gan_SquMatrix44_f *gan_vec44f_outer_sym_q ( const Gan_Vector4_f *p, Gan_SquMatrix44_f *A );
02267
02289 Gan_SquMatrix44_f *gan_symmat44f_cholesky_q ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
02290
02299 Gan_SquMatrix44_f *gan_symmat44f_cholesky_i ( Gan_SquMatrix44_f *A );
02300
02306 #undef GAN_VEC_OUTER_SYM_Q
02307 #undef GAN_VEC_OUTER_SYM_S
02308 #undef GAN_SYMMAT_CHOLESKY
02309 #undef GAN_SYMMAT_CHOLESKY_Q
02310 #undef GAN_SYMMAT_CHOLESKY_S
02311 #undef GAN_SYMMAT_CHOLESKY_I
02312
02325
02326
02327
02328
02329
02330
02331
02332
02333
02334
02335
02336
02337
02338
02339
02340
02341
02342
02343
02344
02345
02346
02359 Gan_SquMatrix44_f *gan_symmat44f_ident_q ( Gan_SquMatrix44_f *A );
02360
02411 Gan_SquMatrix44_f *gan_symmat44f_invert_q ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
02412
02421 Gan_SquMatrix44_f *gan_symmat44f_invert_i ( Gan_SquMatrix44_f *A );
02422
02437 float gan_symmat44f_det_q ( const Gan_SquMatrix44_f *A );
02438
02444 float gan_symmat44f_trace_q ( const Gan_SquMatrix44_f *A );
02445
02451 #undef GAN_SQUMAT_IDENT_Q
02452 #undef GAN_SQUMAT_IDENT_S
02453 #undef GAN_SQUMAT_TPOSE_Q
02454 #undef GAN_SQUMAT_TPOSE_S
02455 #undef GAN_SQUMAT_TPOSE_I
02456 #undef GAN_MAT_SADDT_Q
02457 #undef GAN_MAT_SADDT_S
02458 #undef GAN_SQUMATI_MULTV_Q
02459 #undef GAN_SQUMATI_MULTV_S
02460 #undef GAN_SQUMATI_MULTV_I
02461 #undef GAN_SQUMATIT_MULTV_Q
02462 #undef GAN_SQUMATIT_MULTV_S
02463 #undef GAN_SQUMATIT_MULTV_I
02464 #undef GAN_SQUMAT_INVERT
02465 #undef GAN_SQUMAT_INVERT_Q
02466 #undef GAN_SQUMAT_INVERT_S
02467 #undef GAN_SQUMAT_INVERT_I
02468 #undef GAN_SQUMAT_ADJOINT_Q
02469 #undef GAN_SQUMAT_ADJOINT_S
02470 #undef GAN_SQUMAT_ADJOINTT_Q
02471 #undef GAN_SQUMAT_ADJOINTT_S
02472 #undef GAN_SQUMAT_DET_Q
02473 #undef GAN_SQUMAT_DET_S
02474 #undef GAN_SQUMAT_TRACE_Q
02475 #undef GAN_SQUMAT_TRACE_S
02476
02489
02490
02491
02492
02493
02494
02495
02496
02497
02498
02499
02500
02501
02502
02503
02504
02505
02506
02507
02508
02509
02520 Gan_SquMatrix44_f *gan_symmat44f_zero_q ( const Gan_SquMatrix44_f *A );
02521
02538 Gan_SquMatrix44_f *gan_symmat44f_copy_q ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
02539
02557 Gan_SquMatrix44_f *gan_symmat44f_scale_q ( Gan_SquMatrix44_f *A, float a,
02558 Gan_SquMatrix44_f *B );
02559
02567 Gan_SquMatrix44_f *gan_symmat44f_scale_i ( Gan_SquMatrix44_f *A, float a );
02568
02577 Gan_SquMatrix44_f *gan_symmat44f_divide_q ( Gan_SquMatrix44_f *A, float a,
02578 Gan_SquMatrix44_f *B );
02579
02587 Gan_SquMatrix44_f *gan_symmat44f_divide_i ( Gan_SquMatrix44_f *A, float a );
02588
02596 Gan_SquMatrix44_f *gan_symmat44f_negate_q ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
02597
02605 Gan_SquMatrix44_f *gan_symmat44f_negate_i ( Gan_SquMatrix44_f *A );
02606
02614 Gan_SquMatrix44_f *gan_symmat44f_unit_i ( Gan_SquMatrix44_f *A );
02615
02633 Gan_SquMatrix44_f *gan_symmat44f_add_q ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B, Gan_SquMatrix44_f *C );
02634
02643 Gan_SquMatrix44_f *gan_symmat44f_add_i1 ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
02644
02653 Gan_SquMatrix44_f *gan_symmat44f_add_i2 ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
02654
02663 Gan_SquMatrix44_f *gan_symmat44f_increment ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
02664
02682 Gan_SquMatrix44_f *gan_symmat44f_sub_q ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B, Gan_SquMatrix44_f *C );
02683
02692 Gan_SquMatrix44_f *gan_symmat44f_sub_i1 ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
02693
02702 Gan_SquMatrix44_f *gan_symmat44f_sub_i2 ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
02703
02712 Gan_SquMatrix44_f *gan_symmat44f_decrement ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
02713
02732 Gan_Vector4_f *gan_symmat44f_multv4_q ( const Gan_SquMatrix44_f *A, Gan_Vector4_f *p,
02733 Gan_Vector4_f *q );
02734
02735
02736
02737
02809 float gan_symmat44f_sumsqr_q ( const Gan_SquMatrix44_f *A );
02810
02817 float gan_symmat44f_Fnorm_q ( const Gan_SquMatrix44_f *A );
02818
02849
02850
02851
02852
02853
02854
02855
02856
02857
02858
02859
02860
02861
02862
02863
02864 #undef GAN_MATTYPE
02865 #undef GAN_MATRIX_TYPE
02866 #undef GAN_SQUMATRIX_TYPE
02867 #undef GAN_VECTOR_TYPE
02868 #undef GAN_MAT_ELEMENT_TYPE
02869 #undef GAN_REALTYPE
02870 #undef GAN_FWRITE_LENDIAN
02871 #undef GAN_FREAD_LENDIAN
02872 #undef GAN_VECTYPE1
02873 #undef GAN_VECTYPE2
02874 #undef GAN_MATTYPEL
02875 #undef GAN_MATTYPER
02876 #undef GAN_SQUMATTYPEL
02877 #undef GAN_SQUMATTYPER
02878 #undef GAN_FIXED_MATRIX_TYPE
02879 #undef GAN_MAT_FPRINT
02880 #undef GAN_MAT_PRINT
02881 #undef GAN_MAT_FSCANF
02882 #undef GAN_MAT_FWRITE
02883 #undef GAN_MAT_FREAD
02884 #undef GAN_MAT_ZERO_Q
02885 #undef GAN_MAT_ZERO_S
02886 #undef GAN_MAT_COPY_Q
02887 #undef GAN_MAT_COPY_S
02888 #undef GAN_MAT_SCALE_Q
02889 #undef GAN_MAT_SCALE_S
02890 #undef GAN_MAT_SCALE_I
02891 #undef GAN_MAT_DIVIDE_Q
02892 #undef GAN_MAT_DIVIDE_S
02893 #undef GAN_MAT_DIVIDE_I
02894 #undef GAN_MAT_NEGATE_Q
02895 #undef GAN_MAT_NEGATE_S
02896 #undef GAN_MAT_NEGATE_I
02897 #undef GAN_MAT_UNIT_Q
02898 #undef GAN_MAT_UNIT_S
02899 #undef GAN_MAT_UNIT_I
02900 #undef GAN_MAT_ADD_Q
02901 #undef GAN_MAT_ADD_I1
02902 #undef GAN_MAT_ADD_I2
02903 #undef GAN_MAT_INCREMENT
02904 #undef GAN_MAT_ADD_S
02905 #undef GAN_MAT_SUB_Q
02906 #undef GAN_MAT_SUB_I1
02907 #undef GAN_MAT_SUB_I2
02908 #undef GAN_MAT_DECREMENT
02909 #undef GAN_MAT_SUB_S
02910 #undef GAN_VEC_OUTER_Q
02911 #undef GAN_VEC_OUTER_S
02912 #undef GAN_MAT_MULTV_Q
02913 #undef GAN_MAT_MULTV_S
02914 #undef GAN_MAT_MULTV_I
02915 #undef GAN_MATT_MULTV_Q
02916 #undef GAN_MATT_MULTV_S
02917 #undef GAN_MATT_MULTV_I
02918 #undef GAN_MAT_LMULTM_Q
02919 #undef GAN_MAT_LMULTM_S
02920 #undef GAN_MAT_LMULTMT_Q
02921 #undef GAN_MAT_LMULTMT_S
02922 #undef GAN_MAT_RMULTM_Q
02923 #undef GAN_MAT_RMULTM_S
02924 #undef GAN_MAT_RMULTMT_Q
02925 #undef GAN_MAT_RMULTMT_S
02926 #undef GAN_MAT_LMULTMT_SYM_Q
02927 #undef GAN_MAT_LMULTMT_SYM_S
02928 #undef GAN_MAT_RMULTMT_SYM_Q
02929 #undef GAN_MAT_RMULTMT_SYM_S
02930 #undef GAN_MAT_LMULTS_Q
02931 #undef GAN_MAT_LMULTS_S
02932 #undef GAN_MAT_RMULTS_Q
02933 #undef GAN_MAT_RMULTS_S
02934 #undef GAN_SYMMATL_LRMULT_Q
02935 #undef GAN_SYMMATL_LRMULT_S
02936 #undef GAN_SYMMATR_LRMULT_Q
02937 #undef GAN_SYMMATR_LRMULT_S
02938 #undef GAN_MAT_LMULTL_Q
02939 #undef GAN_MAT_LMULTL_S
02940 #undef GAN_MAT_LMULTL_I
02941 #undef GAN_MAT_LMULTLI_Q
02942 #undef GAN_MAT_LMULTLI_S
02943 #undef GAN_MAT_LMULTLI_I
02944 #undef GAN_MAT_LMULTLT_Q
02945 #undef GAN_MAT_LMULTLT_S
02946 #undef GAN_MAT_LMULTLT_I
02947 #undef GAN_MAT_LMULTLIT_Q
02948 #undef GAN_MAT_LMULTLIT_S
02949 #undef GAN_MAT_LMULTLIT_I
02950 #undef GAN_MAT_RMULTL_Q
02951 #undef GAN_MAT_RMULTL_S
02952 #undef GAN_MAT_RMULTL_I
02953 #undef GAN_MAT_RMULTLI_Q
02954 #undef GAN_MAT_RMULTLI_S
02955 #undef GAN_MAT_RMULTLI_I
02956 #undef GAN_MAT_RMULTLT_Q
02957 #undef GAN_MAT_RMULTLT_S
02958 #undef GAN_MAT_RMULTLT_I
02959 #undef GAN_MAT_RMULTLIT_Q
02960 #undef GAN_MAT_RMULTLIT_S
02961 #undef GAN_MAT_RMULTLIT_I
02962 #undef GAN_MAT_SRMULTT_Q
02963 #undef GAN_MAT_SRMULTT_S
02964 #undef GAN_MAT_SRMULTT_I
02965 #undef GAN_MAT_SLMULTT_Q
02966 #undef GAN_MAT_SLMULTT_S
02967 #undef GAN_MAT_SLMULTT_I
02968 #undef GAN_MAT_RMULTLIT_S
02969 #undef GAN_MAT_SUMSQR_Q
02970 #undef GAN_MAT_SUMSQR_S
02971 #undef GAN_MAT_FNORM_Q
02972 #undef GAN_MAT_FNORM_S
02973 #undef GAN_MAT_FROM_MAT_Q
02974 #undef GAN_MAT_FROM_MAT_S
02975 #undef GAN_MAT_FROM_SQUMAT_Q
02976 #undef GAN_MAT_FROM_SQUMAT_S
02977 #undef GAN_SQUMAT_FROM_SQUMAT_Q
02978 #undef GAN_SQUMAT_FROM_SQUMAT_S
02979
02980
02994
02995
02996
02997
02998
02999
03000
03001
03002
03003
03004
03005
03006
03007
03008
03009 #ifndef _GAN_4X4LTMATF_H
03010
03027 Gan_SquMatrix44_f *gan_ltmat44f_fill_q (
03028 Gan_SquMatrix44_f *A,
03029 float XX,
03030 float YX, float YY,
03031 float ZX, float ZY, float ZZ,
03032 float WX, float WY, float WZ, float WW );
03033
03053 void gan_ltmat44f_get_parts_q ( const Gan_SquMatrix44_f *A,
03054 Gan_SquMatrix33_f *B, Gan_Vector3_f *p,
03055 float *s );
03056
03079 Gan_SquMatrix44_f *gan_ltmat44f_set_parts_q ( Gan_SquMatrix44_f *A,
03080 const Gan_SquMatrix33_f *B,
03081 const Gan_Vector3_f *p, float s );
03082
03088 #endif
03089
03090 #define GAN_MATTYPE Gan_SquMatrix44_f
03091 #define GAN_MATRIX_TYPE Gan_SquMatrix_f
03092 #define GAN_SQUMATRIX_TYPE Gan_SquMatrix_f
03093 #define GAN_VECTOR_TYPE Gan_Vector_f
03094 #define GAN_MAT_ELEMENT_TYPE GAN_FLOAT
03095 #define GAN_REALTYPE float
03096 #define GAN_FWRITE_LENDIAN gan_fwrite_lendian_f32
03097 #define GAN_FREAD_LENDIAN gan_fread_lendian_f32
03098 #define GAN_VECTYPE1 Gan_Vector4_f
03099 #define GAN_VECTYPE2 Gan_Vector4_f
03100 #define GAN_SQUMATTYPEL Gan_SquMatrix44_f
03101 #define GAN_SQUMATTYPER Gan_SquMatrix44_f
03102 #define GAN_FIXED_MATRIX_TYPE GAN_LOWER_TRI_MATRIX44_F
03103 #define GAN_MAT_FPRINT gan_ltmat44f_fprint
03104 #define GAN_MAT_PRINT gan_ltmat44f_print
03105 #define GAN_MAT_FSCANF gan_ltmat44f_fscanf
03106 #define GAN_MAT_FWRITE gan_ltmat44f_fwrite
03107 #define GAN_MAT_FREAD gan_ltmat44f_fread
03108 #define GAN_MAT_ZERO_Q gan_ltmat44f_zero_q
03109 #define GAN_MAT_ZERO_S gan_ltmat44f_zero_s
03110 #define GAN_MAT_COPY_Q gan_ltmat44f_copy_q
03111 #define GAN_MAT_COPY_S gan_ltmat44f_copy_s
03112 #define GAN_MAT_SCALE_Q gan_ltmat44f_scale_q
03113 #define GAN_MAT_SCALE_S gan_ltmat44f_scale_s
03114 #define GAN_MAT_SCALE_I gan_ltmat44f_scale_i
03115 #define GAN_MAT_DIVIDE_Q gan_ltmat44f_divide_q
03116 #define GAN_MAT_DIVIDE_S gan_ltmat44f_divide_s
03117 #define GAN_MAT_DIVIDE_I gan_ltmat44f_divide_i
03118 #define GAN_MAT_NEGATE_Q gan_ltmat44f_negate_q
03119 #define GAN_MAT_NEGATE_S gan_ltmat44f_negate_s
03120 #define GAN_MAT_NEGATE_I gan_ltmat44f_negate_i
03121 #define GAN_MAT_UNIT_Q gan_ltmat44f_unit_q
03122 #define GAN_MAT_UNIT_S gan_ltmat44f_unit_s
03123 #define GAN_MAT_UNIT_I gan_ltmat44f_unit_i
03124 #define GAN_MAT_ADD_Q gan_ltmat44f_add_q
03125 #define GAN_MAT_ADD_I1 gan_ltmat44f_add_i1
03126 #define GAN_MAT_ADD_I2 gan_ltmat44f_add_i2
03127 #define GAN_MAT_INCREMENT gan_ltmat44f_increment
03128 #define GAN_MAT_ADD_S gan_ltmat44f_add_s
03129 #define GAN_MAT_SUB_Q gan_ltmat44f_sub_q
03130 #define GAN_MAT_SUB_I1 gan_ltmat44f_sub_i1
03131 #define GAN_MAT_SUB_I2 gan_ltmat44f_sub_i2
03132 #define GAN_MAT_DECREMENT gan_ltmat44f_decrement
03133 #define GAN_MAT_SUB_S gan_ltmat44f_sub_s
03134 #define GAN_MAT_MULTV_Q gan_ltmat44f_multv4_q
03135 #define GAN_MAT_MULTV_S gan_ltmat44f_multv4_s
03136 #define GAN_MAT_MULTV_I gan_ltmat44f_multv4_i
03137 #define GAN_MATT_MULTV_Q gan_ltmat44Tf_multv4_q
03138 #define GAN_MATT_MULTV_S gan_ltmat44Tf_multv4_s
03139 #define GAN_MATT_MULTV_I gan_ltmat44Tf_multv4_i
03140 #define GAN_MAT_SRMULTT_Q gan_ltmat44f_srmultT_q
03141 #define GAN_MAT_SRMULTT_S gan_ltmat44f_srmultT_s
03142 #define GAN_MAT_SRMULTT_I gan_ltmat44f_srmultT_i
03143 #define GAN_MAT_SLMULTT_Q gan_ltmat44f_slmultT_q
03144 #define GAN_MAT_SLMULTT_S gan_ltmat44f_slmultT_s
03145 #define GAN_MAT_SLMULTT_I gan_ltmat44f_slmultT_i
03146 #define GAN_MAT_SUMSQR_Q gan_ltmat44f_sumsqr_q
03147 #define GAN_MAT_SUMSQR_S gan_ltmat44f_sumsqr_s
03148 #define GAN_MAT_FNORM_Q gan_ltmat44f_Fnorm_q
03149 #define GAN_MAT_FNORM_S gan_ltmat44f_Fnorm_s
03150
03151 #define GAN_SQUMAT_IDENT_Q gan_ltmat44f_ident_q
03152 #define GAN_SQUMAT_IDENT_S gan_ltmat44f_ident_s
03153 #define GAN_SQUMATI_MULTV_Q gan_ltmat44If_multv4_q
03154 #define GAN_SQUMATI_MULTV_S gan_ltmat44If_multv4_s
03155 #define GAN_SQUMATI_MULTV_I gan_ltmat44If_multv4_i
03156 #define GAN_SQUMATIT_MULTV_Q gan_ltmat44ITf_multv4_q
03157 #define GAN_SQUMATIT_MULTV_S gan_ltmat44ITf_multv4_s
03158 #define GAN_SQUMATIT_MULTV_I gan_ltmat44ITf_multv4_i
03159 #define GAN_SQUMAT_INVERT gan_ltmat44f_invert
03160 #define GAN_SQUMAT_INVERT_Q gan_ltmat44f_invert_q
03161 #define GAN_SQUMAT_INVERT_S gan_ltmat44f_invert_s
03162 #define GAN_SQUMAT_INVERT_I gan_ltmat44f_invert_i
03163 #define GAN_SQUMAT_DET_Q gan_ltmat44f_det_q
03164 #define GAN_SQUMAT_DET_S gan_ltmat44f_det_s
03165 #define GAN_SQUMAT_TRACE_Q gan_ltmat44f_trace_q
03166 #define GAN_SQUMAT_TRACE_S gan_ltmat44f_trace_s
03167
03168 #ifndef _GAN_4X4LTMATF_H
03169 #define _GAN_4X4LTMATF_H
03170
03171
03172 #endif
03173
03186
03187
03188
03189
03190
03191
03192
03193
03194
03195
03196
03197
03198
03199
03200
03201
03202
03203
03204
03205
03206
03207
03220 Gan_SquMatrix44_f *gan_ltmat44f_ident_q ( Gan_SquMatrix44_f *A );
03221
03259 Gan_Vector4_f *gan_ltmat44If_multv4_q ( const Gan_SquMatrix44_f *A, Gan_Vector4_f *p,
03260 Gan_Vector4_f *q );
03261
03270 Gan_Vector4_f *gan_ltmat44If_multv4_i ( const Gan_SquMatrix44_f *A, Gan_Vector4_f *p );
03271
03280 Gan_Vector4_f *gan_ltmat44ITf_multv4_q ( const Gan_SquMatrix44_f *A, Gan_Vector4_f *p,
03281 Gan_Vector4_f *q );
03282
03291 Gan_Vector4_f *gan_ltmat44ITf_multv4_i ( const Gan_SquMatrix44_f *A, Gan_Vector4_f *p );
03292
03310 Gan_SquMatrix44_f *gan_ltmat44f_invert_q ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
03311
03320 Gan_SquMatrix44_f *gan_ltmat44f_invert_i ( Gan_SquMatrix44_f *A );
03321
03336 float gan_ltmat44f_det_q ( const Gan_SquMatrix44_f *A );
03337
03343 float gan_ltmat44f_trace_q ( const Gan_SquMatrix44_f *A );
03344
03350 #undef GAN_SQUMAT_IDENT_Q
03351 #undef GAN_SQUMAT_IDENT_S
03352 #undef GAN_SQUMAT_TPOSE_Q
03353 #undef GAN_SQUMAT_TPOSE_S
03354 #undef GAN_SQUMAT_TPOSE_I
03355 #undef GAN_MAT_SADDT_Q
03356 #undef GAN_MAT_SADDT_S
03357 #undef GAN_SQUMATI_MULTV_Q
03358 #undef GAN_SQUMATI_MULTV_S
03359 #undef GAN_SQUMATI_MULTV_I
03360 #undef GAN_SQUMATIT_MULTV_Q
03361 #undef GAN_SQUMATIT_MULTV_S
03362 #undef GAN_SQUMATIT_MULTV_I
03363 #undef GAN_SQUMAT_INVERT
03364 #undef GAN_SQUMAT_INVERT_Q
03365 #undef GAN_SQUMAT_INVERT_S
03366 #undef GAN_SQUMAT_INVERT_I
03367 #undef GAN_SQUMAT_ADJOINT_Q
03368 #undef GAN_SQUMAT_ADJOINT_S
03369 #undef GAN_SQUMAT_ADJOINTT_Q
03370 #undef GAN_SQUMAT_ADJOINTT_S
03371 #undef GAN_SQUMAT_DET_Q
03372 #undef GAN_SQUMAT_DET_S
03373 #undef GAN_SQUMAT_TRACE_Q
03374 #undef GAN_SQUMAT_TRACE_S
03375
03388
03389
03390
03391
03392
03393
03394
03395
03396
03397
03398
03399
03400
03401
03402
03403
03404
03405
03406
03407
03408
03419 Gan_SquMatrix44_f *gan_ltmat44f_zero_q ( const Gan_SquMatrix44_f *A );
03420
03437 Gan_SquMatrix44_f *gan_ltmat44f_copy_q ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
03438
03456 Gan_SquMatrix44_f *gan_ltmat44f_scale_q ( Gan_SquMatrix44_f *A, float a,
03457 Gan_SquMatrix44_f *B );
03458
03466 Gan_SquMatrix44_f *gan_ltmat44f_scale_i ( Gan_SquMatrix44_f *A, float a );
03467
03476 Gan_SquMatrix44_f *gan_ltmat44f_divide_q ( Gan_SquMatrix44_f *A, float a,
03477 Gan_SquMatrix44_f *B );
03478
03486 Gan_SquMatrix44_f *gan_ltmat44f_divide_i ( Gan_SquMatrix44_f *A, float a );
03487
03495 Gan_SquMatrix44_f *gan_ltmat44f_negate_q ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
03496
03504 Gan_SquMatrix44_f *gan_ltmat44f_negate_i ( Gan_SquMatrix44_f *A );
03505
03513 Gan_SquMatrix44_f *gan_ltmat44f_unit_i ( Gan_SquMatrix44_f *A );
03514
03532 Gan_SquMatrix44_f *gan_ltmat44f_add_q ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B, Gan_SquMatrix44_f *C );
03533
03542 Gan_SquMatrix44_f *gan_ltmat44f_add_i1 ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
03543
03552 Gan_SquMatrix44_f *gan_ltmat44f_add_i2 ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
03553
03562 Gan_SquMatrix44_f *gan_ltmat44f_increment ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
03563
03581 Gan_SquMatrix44_f *gan_ltmat44f_sub_q ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B, Gan_SquMatrix44_f *C );
03582
03591 Gan_SquMatrix44_f *gan_ltmat44f_sub_i1 ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
03592
03601 Gan_SquMatrix44_f *gan_ltmat44f_sub_i2 ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
03602
03611 Gan_SquMatrix44_f *gan_ltmat44f_decrement ( Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
03612
03631 Gan_Vector4_f *gan_ltmat44f_multv4_q ( const Gan_SquMatrix44_f *A, Gan_Vector4_f *p,
03632 Gan_Vector4_f *q );
03633
03642 Gan_Vector4_f *gan_ltmat44f_multv4_i ( const Gan_SquMatrix44_f *A, Gan_Vector4_f *p );
03643
03652 Gan_Vector4_f *gan_ltmat44Tf_multv4_q ( const Gan_SquMatrix44_f *A, Gan_Vector4_f *p,
03653 Gan_Vector4_f *q );
03654
03663 Gan_Vector4_f *gan_ltmat44Tf_multv4_i ( const Gan_SquMatrix44_f *A, Gan_Vector4_f *p );
03664
03726 Gan_SquMatrix44_f *gan_ltmat44f_slmultT_q ( Gan_SquMatrix44_f *A, const Gan_SquMatrix44_f *B );
03727
03737 Gan_SquMatrix44_f *gan_ltmat44f_slmultT_i ( Gan_SquMatrix44_f *A );
03738
03747 Gan_SquMatrix44_f *gan_ltmat44f_srmultT_q ( const Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B );
03748
03758 Gan_SquMatrix44_f *gan_ltmat44f_srmultT_i ( Gan_SquMatrix44_f *A );
03759
03774 float gan_ltmat44f_sumsqr_q ( const Gan_SquMatrix44_f *A );
03775
03782 float gan_ltmat44f_Fnorm_q ( const Gan_SquMatrix44_f *A );
03783
03814
03815
03816
03817
03818
03819
03820
03821
03822
03823
03824
03825
03826
03827
03828
03829 #undef GAN_MATTYPE
03830 #undef GAN_MATRIX_TYPE
03831 #undef GAN_SQUMATRIX_TYPE
03832 #undef GAN_VECTOR_TYPE
03833 #undef GAN_MAT_ELEMENT_TYPE
03834 #undef GAN_REALTYPE
03835 #undef GAN_FWRITE_LENDIAN
03836 #undef GAN_FREAD_LENDIAN
03837 #undef GAN_VECTYPE1
03838 #undef GAN_VECTYPE2
03839 #undef GAN_MATTYPEL
03840 #undef GAN_MATTYPER
03841 #undef GAN_SQUMATTYPEL
03842 #undef GAN_SQUMATTYPER
03843 #undef GAN_FIXED_MATRIX_TYPE
03844 #undef GAN_MAT_FPRINT
03845 #undef GAN_MAT_PRINT
03846 #undef GAN_MAT_FSCANF
03847 #undef GAN_MAT_FWRITE
03848 #undef GAN_MAT_FREAD
03849 #undef GAN_MAT_ZERO_Q
03850 #undef GAN_MAT_ZERO_S
03851 #undef GAN_MAT_COPY_Q
03852 #undef GAN_MAT_COPY_S
03853 #undef GAN_MAT_SCALE_Q
03854 #undef GAN_MAT_SCALE_S
03855 #undef GAN_MAT_SCALE_I
03856 #undef GAN_MAT_DIVIDE_Q
03857 #undef GAN_MAT_DIVIDE_S
03858 #undef GAN_MAT_DIVIDE_I
03859 #undef GAN_MAT_NEGATE_Q
03860 #undef GAN_MAT_NEGATE_S
03861 #undef GAN_MAT_NEGATE_I
03862 #undef GAN_MAT_UNIT_Q
03863 #undef GAN_MAT_UNIT_S
03864 #undef GAN_MAT_UNIT_I
03865 #undef GAN_MAT_ADD_Q
03866 #undef GAN_MAT_ADD_I1
03867 #undef GAN_MAT_ADD_I2
03868 #undef GAN_MAT_INCREMENT
03869 #undef GAN_MAT_ADD_S
03870 #undef GAN_MAT_SUB_Q
03871 #undef GAN_MAT_SUB_I1
03872 #undef GAN_MAT_SUB_I2
03873 #undef GAN_MAT_DECREMENT
03874 #undef GAN_MAT_SUB_S
03875 #undef GAN_VEC_OUTER_Q
03876 #undef GAN_VEC_OUTER_S
03877 #undef GAN_MAT_MULTV_Q
03878 #undef GAN_MAT_MULTV_S
03879 #undef GAN_MAT_MULTV_I
03880 #undef GAN_MATT_MULTV_Q
03881 #undef GAN_MATT_MULTV_S
03882 #undef GAN_MATT_MULTV_I
03883 #undef GAN_MAT_LMULTM_Q
03884 #undef GAN_MAT_LMULTM_S
03885 #undef GAN_MAT_LMULTMT_Q
03886 #undef GAN_MAT_LMULTMT_S
03887 #undef GAN_MAT_RMULTM_Q
03888 #undef GAN_MAT_RMULTM_S
03889 #undef GAN_MAT_RMULTMT_Q
03890 #undef GAN_MAT_RMULTMT_S
03891 #undef GAN_MAT_LMULTMT_SYM_Q
03892 #undef GAN_MAT_LMULTMT_SYM_S
03893 #undef GAN_MAT_RMULTMT_SYM_Q
03894 #undef GAN_MAT_RMULTMT_SYM_S
03895 #undef GAN_MAT_LMULTS_Q
03896 #undef GAN_MAT_LMULTS_S
03897 #undef GAN_MAT_RMULTS_Q
03898 #undef GAN_MAT_RMULTS_S
03899 #undef GAN_SYMMATL_LRMULT_Q
03900 #undef GAN_SYMMATL_LRMULT_S
03901 #undef GAN_SYMMATR_LRMULT_Q
03902 #undef GAN_SYMMATR_LRMULT_S
03903 #undef GAN_MAT_LMULTL_Q
03904 #undef GAN_MAT_LMULTL_S
03905 #undef GAN_MAT_LMULTL_I
03906 #undef GAN_MAT_LMULTLI_Q
03907 #undef GAN_MAT_LMULTLI_S
03908 #undef GAN_MAT_LMULTLI_I
03909 #undef GAN_MAT_LMULTLT_Q
03910 #undef GAN_MAT_LMULTLT_S
03911 #undef GAN_MAT_LMULTLT_I
03912 #undef GAN_MAT_LMULTLIT_Q
03913 #undef GAN_MAT_LMULTLIT_S
03914 #undef GAN_MAT_LMULTLIT_I
03915 #undef GAN_MAT_RMULTL_Q
03916 #undef GAN_MAT_RMULTL_S
03917 #undef GAN_MAT_RMULTL_I
03918 #undef GAN_MAT_RMULTLI_Q
03919 #undef GAN_MAT_RMULTLI_S
03920 #undef GAN_MAT_RMULTLI_I
03921 #undef GAN_MAT_RMULTLT_Q
03922 #undef GAN_MAT_RMULTLT_S
03923 #undef GAN_MAT_RMULTLT_I
03924 #undef GAN_MAT_RMULTLIT_Q
03925 #undef GAN_MAT_RMULTLIT_S
03926 #undef GAN_MAT_RMULTLIT_I
03927 #undef GAN_MAT_SRMULTT_Q
03928 #undef GAN_MAT_SRMULTT_S
03929 #undef GAN_MAT_SRMULTT_I
03930 #undef GAN_MAT_SLMULTT_Q
03931 #undef GAN_MAT_SLMULTT_S
03932 #undef GAN_MAT_SLMULTT_I
03933 #undef GAN_MAT_RMULTLIT_S
03934 #undef GAN_MAT_SUMSQR_Q
03935 #undef GAN_MAT_SUMSQR_S
03936 #undef GAN_MAT_FNORM_Q
03937 #undef GAN_MAT_FNORM_S
03938 #undef GAN_MAT_FROM_MAT_Q
03939 #undef GAN_MAT_FROM_MAT_S
03940 #undef GAN_MAT_FROM_SQUMAT_Q
03941 #undef GAN_MAT_FROM_SQUMAT_S
03942 #undef GAN_SQUMAT_FROM_SQUMAT_Q
03943 #undef GAN_SQUMAT_FROM_SQUMAT_S
03944
03945
03959 #define GAN_MATTYPE Gan_SquMatrix44_f
03960 #define GAN_MATRIX_TYPE Gan_SquMatrix_f
03961 #define GAN_SQUMATRIX_TYPE Gan_SquMatrix_f
03962 #define GAN_VECTOR_TYPE Gan_Vector_f
03963 #define GAN_MAT_ELEMENT_TYPE GAN_FLOAT
03964 #define GAN_REALTYPE float
03965 #define GAN_MAT_FPRINT gan_ltmat44Tf_fprint
03966 #define GAN_MAT_PRINT gan_ltmat44Tf_print
03967 #define GAN_MAT_FSCANF gan_ltmat44Tf_fscanf
03968 #define GAN_FIXED_MATRIX_TYPE GAN_LOWER_TRI_MATRIX44_F
03969
03970 #define gan_ltmat44Tf_fwrite gan_ltmat44f_fwrite
03971 #define gan_ltmat44Tf_fread gan_ltmat44f_fread
03972
03985
03986
03987
03988
03989
03990
03991
03992
03993
03994
03995
03996
03997
03998
03999
04000
04001
04002
04003
04004
04005
04006
04073 #undef GAN_SQUMAT_IDENT_Q
04074 #undef GAN_SQUMAT_IDENT_S
04075 #undef GAN_SQUMAT_TPOSE_Q
04076 #undef GAN_SQUMAT_TPOSE_S
04077 #undef GAN_SQUMAT_TPOSE_I
04078 #undef GAN_MAT_SADDT_Q
04079 #undef GAN_MAT_SADDT_S
04080 #undef GAN_SQUMATI_MULTV_Q
04081 #undef GAN_SQUMATI_MULTV_S
04082 #undef GAN_SQUMATI_MULTV_I
04083 #undef GAN_SQUMATIT_MULTV_Q
04084 #undef GAN_SQUMATIT_MULTV_S
04085 #undef GAN_SQUMATIT_MULTV_I
04086 #undef GAN_SQUMAT_INVERT
04087 #undef GAN_SQUMAT_INVERT_Q
04088 #undef GAN_SQUMAT_INVERT_S
04089 #undef GAN_SQUMAT_INVERT_I
04090 #undef GAN_SQUMAT_ADJOINT_Q
04091 #undef GAN_SQUMAT_ADJOINT_S
04092 #undef GAN_SQUMAT_ADJOINTT_Q
04093 #undef GAN_SQUMAT_ADJOINTT_S
04094 #undef GAN_SQUMAT_DET_Q
04095 #undef GAN_SQUMAT_DET_S
04096 #undef GAN_SQUMAT_TRACE_Q
04097 #undef GAN_SQUMAT_TRACE_S
04098
04111
04112
04113
04114
04115
04116
04117
04118
04119
04120
04121
04122
04123
04124
04125
04126
04127
04128
04129
04130
04131
04302
04303
04304
04305
04306
04307
04308
04309
04310
04311
04312
04313
04314
04315
04316
04317 #undef GAN_MATTYPE
04318 #undef GAN_MATRIX_TYPE
04319 #undef GAN_SQUMATRIX_TYPE
04320 #undef GAN_VECTOR_TYPE
04321 #undef GAN_MAT_ELEMENT_TYPE
04322 #undef GAN_REALTYPE
04323 #undef GAN_FWRITE_LENDIAN
04324 #undef GAN_FREAD_LENDIAN
04325 #undef GAN_VECTYPE1
04326 #undef GAN_VECTYPE2
04327 #undef GAN_MATTYPEL
04328 #undef GAN_MATTYPER
04329 #undef GAN_SQUMATTYPEL
04330 #undef GAN_SQUMATTYPER
04331 #undef GAN_FIXED_MATRIX_TYPE
04332 #undef GAN_MAT_FPRINT
04333 #undef GAN_MAT_PRINT
04334 #undef GAN_MAT_FSCANF
04335 #undef GAN_MAT_FWRITE
04336 #undef GAN_MAT_FREAD
04337 #undef GAN_MAT_ZERO_Q
04338 #undef GAN_MAT_ZERO_S
04339 #undef GAN_MAT_COPY_Q
04340 #undef GAN_MAT_COPY_S
04341 #undef GAN_MAT_SCALE_Q
04342 #undef GAN_MAT_SCALE_S
04343 #undef GAN_MAT_SCALE_I
04344 #undef GAN_MAT_DIVIDE_Q
04345 #undef GAN_MAT_DIVIDE_S
04346 #undef GAN_MAT_DIVIDE_I
04347 #undef GAN_MAT_NEGATE_Q
04348 #undef GAN_MAT_NEGATE_S
04349 #undef GAN_MAT_NEGATE_I
04350 #undef GAN_MAT_UNIT_Q
04351 #undef GAN_MAT_UNIT_S
04352 #undef GAN_MAT_UNIT_I
04353 #undef GAN_MAT_ADD_Q
04354 #undef GAN_MAT_ADD_I1
04355 #undef GAN_MAT_ADD_I2
04356 #undef GAN_MAT_INCREMENT
04357 #undef GAN_MAT_ADD_S
04358 #undef GAN_MAT_SUB_Q
04359 #undef GAN_MAT_SUB_I1
04360 #undef GAN_MAT_SUB_I2
04361 #undef GAN_MAT_DECREMENT
04362 #undef GAN_MAT_SUB_S
04363 #undef GAN_VEC_OUTER_Q
04364 #undef GAN_VEC_OUTER_S
04365 #undef GAN_MAT_MULTV_Q
04366 #undef GAN_MAT_MULTV_S
04367 #undef GAN_MAT_MULTV_I
04368 #undef GAN_MATT_MULTV_Q
04369 #undef GAN_MATT_MULTV_S
04370 #undef GAN_MATT_MULTV_I
04371 #undef GAN_MAT_LMULTM_Q
04372 #undef GAN_MAT_LMULTM_S
04373 #undef GAN_MAT_LMULTMT_Q
04374 #undef GAN_MAT_LMULTMT_S
04375 #undef GAN_MAT_RMULTM_Q
04376 #undef GAN_MAT_RMULTM_S
04377 #undef GAN_MAT_RMULTMT_Q
04378 #undef GAN_MAT_RMULTMT_S
04379 #undef GAN_MAT_LMULTMT_SYM_Q
04380 #undef GAN_MAT_LMULTMT_SYM_S
04381 #undef GAN_MAT_RMULTMT_SYM_Q
04382 #undef GAN_MAT_RMULTMT_SYM_S
04383 #undef GAN_MAT_LMULTS_Q
04384 #undef GAN_MAT_LMULTS_S
04385 #undef GAN_MAT_RMULTS_Q
04386 #undef GAN_MAT_RMULTS_S
04387 #undef GAN_SYMMATL_LRMULT_Q
04388 #undef GAN_SYMMATL_LRMULT_S
04389 #undef GAN_SYMMATR_LRMULT_Q
04390 #undef GAN_SYMMATR_LRMULT_S
04391 #undef GAN_MAT_LMULTL_Q
04392 #undef GAN_MAT_LMULTL_S
04393 #undef GAN_MAT_LMULTL_I
04394 #undef GAN_MAT_LMULTLI_Q
04395 #undef GAN_MAT_LMULTLI_S
04396 #undef GAN_MAT_LMULTLI_I
04397 #undef GAN_MAT_LMULTLT_Q
04398 #undef GAN_MAT_LMULTLT_S
04399 #undef GAN_MAT_LMULTLT_I
04400 #undef GAN_MAT_LMULTLIT_Q
04401 #undef GAN_MAT_LMULTLIT_S
04402 #undef GAN_MAT_LMULTLIT_I
04403 #undef GAN_MAT_RMULTL_Q
04404 #undef GAN_MAT_RMULTL_S
04405 #undef GAN_MAT_RMULTL_I
04406 #undef GAN_MAT_RMULTLI_Q
04407 #undef GAN_MAT_RMULTLI_S
04408 #undef GAN_MAT_RMULTLI_I
04409 #undef GAN_MAT_RMULTLT_Q
04410 #undef GAN_MAT_RMULTLT_S
04411 #undef GAN_MAT_RMULTLT_I
04412 #undef GAN_MAT_RMULTLIT_Q
04413 #undef GAN_MAT_RMULTLIT_S
04414 #undef GAN_MAT_RMULTLIT_I
04415 #undef GAN_MAT_SRMULTT_Q
04416 #undef GAN_MAT_SRMULTT_S
04417 #undef GAN_MAT_SRMULTT_I
04418 #undef GAN_MAT_SLMULTT_Q
04419 #undef GAN_MAT_SLMULTT_S
04420 #undef GAN_MAT_SLMULTT_I
04421 #undef GAN_MAT_RMULTLIT_S
04422 #undef GAN_MAT_SUMSQR_Q
04423 #undef GAN_MAT_SUMSQR_S
04424 #undef GAN_MAT_FNORM_Q
04425 #undef GAN_MAT_FNORM_S
04426 #undef GAN_MAT_FROM_MAT_Q
04427 #undef GAN_MAT_FROM_MAT_S
04428 #undef GAN_MAT_FROM_SQUMAT_Q
04429 #undef GAN_MAT_FROM_SQUMAT_S
04430 #undef GAN_SQUMAT_FROM_SQUMAT_Q
04431 #undef GAN_SQUMAT_FROM_SQUMAT_S
04432
04445 #ifdef __cplusplus
04446 }
04447 #endif
04448
04449 #endif