00001
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef _GAN_3X3MATRIX_H
00030 #define _GAN_3X3MATRIX_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_REPEAT33_H
00065 #define _GAN_REPEAT33_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
00280 #ifdef __cplusplus
00281 extern "C" {
00282 #endif
00283
00284
00285
00286 #define GAN_FREP33_A(a,b,p1,p2,p3,q1,q2,q3,r11,r12,r13,r21,r22,r23,r31,r32,r33) (GAN_FREP3_A(a,b,p1##q1,p1##q2,p1##q3,r11,r12,r13),\
00287 GAN_FREP3_A(a,b,p2##q1,p2##q2,p2##q3,r21,r22,r23),\
00288 GAN_FREP3_A(a,b,p3##q1,p3##q2,p3##q3,r31,r32,r33))
00289 #define GAN_FREP33_A_C(a,b,r11,r12,r13,r21,r22,r23,r31,r32,r33) \
00290 GAN_FREP33_A(a,b,x,y,z,x,y,z,r11,r12,r13,r21,r22,r23,r31,r32,r33)
00291
00292
00293 #define GAN_REP33_ABCS(a,b,c,d,p1,p2,p3,q1,q2,q3,r1,r2,r3,s1,s2,s3,t1,t2,t3,u1,u2,u3)\
00294 (GAN_REP3_ABCS(a,b,c,d,p1##q1,p1##q2,p1##q3,r1##s1,r1##s2,r1##s3,t1##u1,t1##u2,t1##u3),\
00295 GAN_REP3_ABCS(a,b,c,d,p2##q1,p2##q2,p2##q3,r2##s1,r2##s2,r2##s3,t2##u1,t2##u2,t2##u3),\
00296 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))
00297 #define GAN_REP33_ABC(a,b,c,p1,p2,p3,q1,q2,q3,r1,r2,r3,s1,s2,s3,t1,t2,t3,u1,u2,u3)\
00298 (GAN_REP3_ABC(a,b,c,p1##q1,p1##q2,p1##q3,r1##s1,r1##s2,r1##s3,t1##u1,t1##u2,t1##u3),\
00299 GAN_REP3_ABC(a,b,c,p2##q1,p2##q2,p2##q3,r2##s1,r2##s2,r2##s3,t2##u1,t2##u2,t2##u3),\
00300 GAN_REP3_ABC(a,b,c,p3##q1,p3##q2,p3##q3,r3##s1,r3##s2,r3##s3,t3##u1,t3##u2,t3##u3))
00301
00302 #define GAN_REP33_AAAS(a,b,c,d,p1,p2,p3,q1,q2,q3)\
00303 GAN_REP33_ABCS(a,b,c,d,p1,p2,p3,q1,q2,q3,p1,p2,p3,q1,q2,q3,p1,p2,p3,q1,q2,q3)
00304 #define GAN_REP33_AAA(a,b,c,p1,p2,p3,q1,q2,q3)\
00305 GAN_REP33_ABC(a,b,c,p1,p2,p3,q1,q2,q3,p1,p2,p3,q1,q2,q3,p1,p2,p3,q1,q2,q3)
00306
00307 #define GAN_REP33_ABS(a,b,c,p1,p2,p3,q1,q2,q3,r1,r2,r3,s1,s2,s3)\
00308 (GAN_REP3_ABS(a,b,c,p1##q1,p1##q2,p1##q3,r1##s1,r1##s2,r1##s3),\
00309 GAN_REP3_ABS(a,b,c,p2##q1,p2##q2,p2##q3,r2##s1,r2##s2,r2##s3),\
00310 GAN_REP3_ABS(a,b,c,p3##q1,p3##q2,p3##q3,r3##s1,r3##s2,r3##s3))
00311 #define GAN_REP33_AB(a,b,p1,p2,p3,q1,q2,q3,r1,r2,r3,s1,s2,s3)\
00312 (GAN_REP3_AB(a,b,p1##q1,p1##q2,p1##q3,r1##s1,r1##s2,r1##s3),\
00313 GAN_REP3_AB(a,b,p2##q1,p2##q2,p2##q3,r2##s1,r2##s2,r2##s3),\
00314 GAN_REP3_AB(a,b,p3##q1,p3##q2,p3##q3,r3##s1,r3##s2,r3##s3))
00315
00316 #define GAN_REP33_AAS(a,b,c,p1,p2,p3,q1,q2,q3)\
00317 GAN_REP33_ABS(a,b,c,p1,p2,p3,q1,q2,q3,p1,p2,p3,q1,q2,q3)
00318 #define GAN_REP33_AA(a,b,p1,p2,p3,q1,q2,q3)\
00319 GAN_REP33_AB(a,b,p1,p2,p3,q1,q2,q3,p1,p2,p3,q1,q2,q3)
00320
00321 #define GAN_REP33_AS(a,b,p1,p2,p3,q1,q2,q3)\
00322 (GAN_REP3_AS(a,b,p1##q1,p1##q2,p1##q3),\
00323 GAN_REP3_AS(a,b,p2##q1,p2##q2,p2##q3),\
00324 GAN_REP3_AS(a,b,p3##q1,p3##q2,p3##q3))
00325 #define GAN_REP33_A(a,p1,p2,p3,q1,q2,q3)\
00326 (GAN_REP3_A(a,p1##q1,p1##q2,p1##q3),\
00327 GAN_REP3_A(a,p2##q1,p2##q2,p2##q3),\
00328 GAN_REP3_A(a,p3##q1,p3##q2,p3##q3))
00329
00330
00331 #define GAN_REP33_AS_C(a,b) GAN_REP33_AS(a,b,x,y,z,x,y,z)
00332 #define GAN_REP33_AAS_C(a,b,c) GAN_REP33_AAS(a,b,c,x,y,z,x,y,z)
00333 #define GAN_REP33_AAAS_C(a,b,c,d) GAN_REP33_AAAS(a,b,c,d,x,y,z,x,y,z)
00334 #define GAN_REP33_A_C(a) GAN_REP33_A(a,x,y,z,x,y,z)
00335 #define GAN_REP33_AA_C(a,b) GAN_REP33_AA(a,b,x,y,z,x,y,z)
00336 #define GAN_REP33_AAA_C(a,b,c) GAN_REP33_AAA(a,b,c,x,y,z,x,y,z)
00337
00338
00339 #define GAN_REP33_AAT(a,b,p1,p2,p3,q1,q2,q3)\
00340 (GAN_REP3_AB(a,b,p1##q1,p1##q2,p1##q3,p1##q1,p2##q1,p3##q1),\
00341 GAN_REP3_AB(a,b,p2##q1,p2##q2,p2##q3,p1##q2,p2##q2,p3##q2),\
00342 GAN_REP3_AB(a,b,p3##q1,p3##q2,p3##q3,p1##q3,p2##q3,p3##q3))
00343 #define GAN_REP33_AAT_C(a,b) GAN_REP33_AAT(a,b,x,y,z,x,y,z)
00344
00345
00346 #define GAN_FREP33L_A(a,b,p1,p2,p3,q1,q2,q3,r11,r21,r22,r31,r32,r33)\
00347 (GAN_FREP1_A(a,b,p1##q1,r11),\
00348 GAN_FREP2_A(a,b,p2##q1,p2##q2,r21,r22),\
00349 GAN_FREP3_A(a,b,p3##q1,p3##q2,p3##q3,r31,r32,r33))
00350 #define GAN_FREP33L_A_C(a,b,r11,r21,r22,r31,r32,r33) \
00351 GAN_FREP33L_A(a,b,x,y,z,x,y,z,r11,r21,r22,r31,r32,r33)
00352
00353 #define GAN_REP33L_ABCS(a,b,c,d,p1,p2,p3,q1,q2,q3,r1,r2,r3,s1,s2,s3,t1,t2,t3,u1,u2,u3)\
00354 (GAN_REP1_ABCS(a,b,c,d,p1##q1,r1##s1,t1##u1),\
00355 GAN_REP2_ABCS(a,b,c,d,p2##q1,p2##q2,r2##s1,r2##s2,t2##u1,t2##u2),\
00356 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))
00357 #define GAN_REP33L_ABC(a,b,c,p1,p2,p3,q1,q2,q3,r1,r2,r3,s1,s2,s3,t1,t2,t3,u1,u2,u3)\
00358 (GAN_REP1_ABC(a,b,c,p1##q1,r1##s1,t1##u1),\
00359 GAN_REP2_ABC(a,b,c,p2##q1,p2##q2,r2##s1,r2##s2,t2##u1,t2##u2),\
00360 GAN_REP3_ABC(a,b,c,p3##q1,p3##q2,p3##q3,r3##s1,r3##s2,r3##s3,t3##u1,t3##u2,t3##u3))
00361 #define GAN_REP33L_AAAS(a,b,c,d,p1,p2,p3,q1,q2,q3)\
00362 GAN_REP33L_ABCS(a,b,c,d,p1,p2,p3,q1,q2,q3,p1,p2,p3,q1,q2,q3,p1,p2,p3,q1,q2,q3)
00363 #define GAN_REP33L_AAA(a,b,c,p1,p2,p3,q1,q2,q3)\
00364 GAN_REP33L_ABC(a,b,c,p1,p2,p3,q1,q2,q3,p1,p2,p3,q1,q2,q3,p1,p2,p3,q1,q2,q3)
00365 #define GAN_REP33L_ABS(a,b,c,p1,p2,p3,q1,q2,q3,r1,r2,r3,s1,s2,s3)\
00366 (GAN_REP1_ABS(a,b,c,p1##q1,r1##s1),\
00367 GAN_REP2_ABS(a,b,c,p2##q1,p2##q2,r2##s1,r2##s2),\
00368 GAN_REP3_ABS(a,b,c,p3##q1,p3##q2,p3##q3,r3##s1,r3##s2,r3##s3))
00369 #define GAN_REP33L_AB(a,b,p1,p2,p3,q1,q2,q3,r1,r2,r3,s1,s2,s3)\
00370 (GAN_REP1_AB(a,b,p1##q1,r1##s1),\
00371 GAN_REP2_AB(a,b,p2##q1,p2##q2,r2##s1,r2##s2),\
00372 GAN_REP3_AB(a,b,p3##q1,p3##q2,p3##q3,r3##s1,r3##s2,r3##s3))
00373 #define GAN_REP33L_AAS(a,b,c,p1,p2,p3,q1,q2,q3)\
00374 GAN_REP33L_ABS(a,b,c,p1,p2,p3,q1,q2,q3,p1,p2,p3,q1,q2,q3)
00375 #define GAN_REP33L_AA(a,b,p1,p2,p3,q1,q2,q3)\
00376 GAN_REP33L_AB(a,b,p1,p2,p3,q1,q2,q3,p1,p2,p3,q1,q2,q3)
00377 #define GAN_REP33L_AS(a,b,p1,p2,p3,q1,q2,q3)\
00378 (GAN_REP1_AS(a,b,p1##q1),\
00379 GAN_REP2_AS(a,b,p2##q1,p2##q2),\
00380 GAN_REP3_AS(a,b,p3##q1,p3##q2,p3##q3))
00381 #define GAN_REP33L_A(a,p1,p2,p3,q1,q2,q3)\
00382 (GAN_REP1_A(a,p1##q1),\
00383 GAN_REP2_A(a,p2##q1,p2##q2),\
00384 GAN_REP3_A(a,p3##q1,p3##q2,p3##q3))
00385 #define GAN_REP33L_AS_C(a,b) GAN_REP33L_AS(a,b,x,y,z,x,y,z)
00386 #define GAN_REP33L_AAS_C(a,b,c) GAN_REP33L_AAS(a,b,c,x,y,z,x,y,z)
00387 #define GAN_REP33L_AAAS_C(a,b,c,d) GAN_REP33L_AAAS(a,b,c,d,x,y,z,x,y,z)
00388 #define GAN_REP33L_A_C(a) GAN_REP33L_A(a,x,y,z,x,y,z)
00389 #define GAN_REP33L_AA_C(a,b) GAN_REP33L_AA(a,b,x,y,z,x,y,z)
00390 #define GAN_REP33L_AAA_C(a,b,c) GAN_REP33L_AAA(a,b,c,x,y,z,x,y,z)
00391 #define GAN_FREP33L_A_C(a,b,r11,r21,r22,r31,r32,r33)\
00392 GAN_FREP33L_A(a,b,x,y,z,x,y,z,r11,r21,r22,r31,r32,r33)
00393
00394 #ifdef __cplusplus
00395 }
00396 #endif
00397
00398 #endif
00399 #include <gandalf/linalg/3vector.h>
00400 #include <gandalf/linalg/2x2matrix.h>
00414
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428
00429 #endif
00430 #include <gandalf/linalg/mat_gen.h>
00431 #include <gandalf/linalg/mat_square.h>
00432
00433 #ifdef __cplusplus
00434 extern "C" {
00435 #endif
00436
00447
00448 typedef struct Gan_Matrix33
00449 {
00450 double xx, xy, xz,
00451 yx, yy, yz,
00452 zx, zy, zz;
00453 } Gan_Matrix33;
00454
00455 #ifndef NDEBUG
00456
00457 typedef enum { GAN_SYMMETRIC_MATRIX33, GAN_LOWER_TRI_MATRIX33 }
00458 Gan_SquMatrix33Type;
00459 #endif
00460
00462 typedef struct Gan_SquMatrix33
00463 {
00464 #ifndef NDEBUG
00465
00466 Gan_SquMatrix33Type type;
00467 #endif
00468
00469
00470 double xx,
00471 yx, yy,
00472 zx, zy, zz;
00473 } Gan_SquMatrix33;
00474
00475
00476 #define GAN_ST33_FILL(A,t,XX,YX,YY,ZX,ZY,ZZ)\
00477 (GAN_TEST_OP1(A,Gan_SquMatrix33),gan_eval((A)->type=t),\
00478 GAN_FREP33L_A_C((A)->,=,(XX),(YX),(YY),(ZX),(ZY),(ZZ)))
00479 #define GAN_ST33_IDENT(A,t)\
00480 (GAN_TEST_OP1(A,Gan_SquMatrix33),gan_eval((A)->type=t),\
00481 GAN_FREP33L_A_C((A)->,=,1.0,0.0,1.0,0.0,0.0,1.0))
00482
00483
00484 #define GAN_MAT33_MULT1D(a,b,c,p1,p2,p3,q1,q2,q3)\
00485 (a p1 = GAN_REP3_OP_AB(b,* c,xx,xy,xz,q1,q2,q3,+),\
00486 a p2 = GAN_REP3_OP_AB(b,* c,yx,yy,yz,q1,q2,q3,+),\
00487 a p3 = GAN_REP3_OP_AB(b,* c,zx,zy,zz,q1,q2,q3,+))
00488 #define GAN_MAT33T_MULT1D(a,b,c,p1,p2,p3,q1,q2,q3)\
00489 (a p1 = GAN_REP3_OP_AB(b,* c,xx,yx,zx,q1,q2,q3,+),\
00490 a p2 = GAN_REP3_OP_AB(b,* c,xy,yy,zy,q1,q2,q3,+),\
00491 a p3 = GAN_REP3_OP_AB(b,* c,xz,yz,zz,q1,q2,q3,+))
00492
00493
00494 #define GAN_SYM33_MULT1D(a,b,c,p1,p2,p3,q1,q2,q3)\
00495 (a p1 = GAN_REP3_OP_AB(b,* c,xx,yx,zx,q1,q2,q3,+),\
00496 a p2 = GAN_REP3_OP_AB(b,* c,yx,yy,zy,q1,q2,q3,+),\
00497 a p3 = GAN_REP3_OP_AB(b,* c,zx,zy,zz,q1,q2,q3,+))
00498
00499
00500 #define GAN_LOW33_MULT1D(a,b,c,p1,p2,p3,q1,q2,q3)\
00501 (a p3 = GAN_REP3_OP_AB(b,* c,zx,zy,zz,q1,q2,q3,+),\
00502 a p2 = GAN_REP2_OP_AB(b,* c,yx,yy,q1,q2,+),\
00503 a p1 = GAN_REP1_OP_AB(b,* c,xx,q1,+))
00504 #define GAN_LOW33I_MULT1D(a,b,c,p1,p2,p3,q1,q2,q3)\
00505 (a p1 = c q1 / b xx,\
00506 a p2 = (c q2 - b yx * a p1) / b yy,\
00507 a p3 = (c q3 - b zx * a p1 - b zy * a p2) / b zz)
00508
00509
00510 #define GAN_UPP33_MULT1D(a,b,c,p1,p2,p3,q1,q2,q3)\
00511 (a p1 = GAN_REP3_OP_AB(b,* c,xx,yx,zx,q1,q2,q3,+),\
00512 a p2 = GAN_REP2_OP_AB(b,* c,yy,zy,q2,q3,+),\
00513 a p3 = GAN_REP1_OP_AB(b,* c,zz,q3,+))
00514 #define GAN_UPP33I_MULT1D(a,b,c,p1,p2,p3,q1,q2,q3)\
00515 (a p3 = c q3 / b zz,\
00516 a p2 = (c q2 - b zy * a p3) / b yy,\
00517 a p1 = (c q1 - b yx * a p2 - b zx * a p3) / b xx)
00518
00519
00520 #define GAN_ST33_ZERO(A,t)\
00521 (GAN_TEST_OP1(A,Gan_SquMatrix33), gan_eval((A)->type=t),\
00522 GAN_REP33L_AS_C((A)->,=0.0))
00523 #define GAN_ST33_COPY(A,B,t)\
00524 (GAN_TEST_OP2(A,B,Gan_SquMatrix33,Gan_SquMatrix33),\
00525 assert((A)->type==t), gan_eval((B)->type=(A)->type),\
00526 GAN_REP33L_AA_C((B)->,=(A)->))
00527 #define GAN_ST33_SCALE(A,a,B,t)\
00528 (GAN_TEST_OP2(A,B,Gan_SquMatrix33,Gan_SquMatrix33),\
00529 assert((A)->type==t), gan_eval((B)->type=(A)->type),\
00530 GAN_REP33L_AAS_C((B)->,=(A)->,*(a)))
00531 #define GAN_ST33_DIVIDE(A,a,B,t)\
00532 (GAN_TEST_OP2(A,B,Gan_SquMatrix33,Gan_SquMatrix33),\
00533 assert((A)->type==t), gan_eval((B)->type=(A)->type),\
00534 GAN_REP33L_AAS_C((B)->,=(A)->,/(a)))
00535 #define GAN_ST33_NEGATE(A,B,t)\
00536 (GAN_TEST_OP2(A,B,Gan_SquMatrix33,Gan_SquMatrix33),\
00537 assert((A)->type==t), gan_eval((B)->type=(A)->type),\
00538 GAN_REP33L_AA_C((B)->,=-(A)->))
00539 #define GAN_ST33_ADD(A,B,C,t)\
00540 (GAN_TEST_OP3(A,B,C,Gan_SquMatrix33,Gan_SquMatrix33,Gan_SquMatrix33),\
00541 assert((A)->type==t && (B)->type==t), gan_eval((C)->type=(A)->type),\
00542 GAN_REP33L_AAA_C((C)->,=(A)->,+(B)->))
00543 #define GAN_ST33_SUB(A,B,C,t)\
00544 (GAN_TEST_OP3(A,B,C,Gan_SquMatrix33,Gan_SquMatrix33,Gan_SquMatrix33),\
00545 assert((A)->type==t && (B)->type==t), gan_eval((C)->type=(A)->type),\
00546 GAN_REP33L_AAA_C((C)->,=(A)->,-(B)->))
00547
00548
00562
00563
00564
00565
00566
00567
00568
00569
00570
00571
00572
00573
00574
00575
00576
00577 #ifndef _GAN_3X3MAT_H
00578
00595 Gan_Matrix33 *gan_mat33_fill_q ( Gan_Matrix33 *A,
00596 double XX, double XY, double XZ,
00597 double YX, double YY, double YZ,
00598 double ZX, double ZY, double ZZ );
00599
00624 Gan_Matrix33 *gan_mat33_cross_q ( const Gan_Vector3 *p, const Gan_Matrix33 *A );
00625
00647 void gan_mat33_get_rows_q ( const Gan_Matrix33 *A,
00648 Gan_Vector3 *p, Gan_Vector3 *q, Gan_Vector3 *r );
00649
00661 void gan_mat33_get_cols_q ( const Gan_Matrix33 *A,
00662 Gan_Vector3 *p, Gan_Vector3 *q, Gan_Vector3 *r );
00663
00671 Gan_Matrix22 *gan_mat33_get_m22tl_q ( const Gan_Matrix33 *A, Gan_Matrix22 *B );
00672
00680 Gan_Vector2 *gan_mat33_get_v2tr_q ( const Gan_Matrix33 *A, Gan_Vector2 *p );
00681
00695 void gan_mat33_get_parts_q ( const Gan_Matrix33 *A, Gan_Matrix22 *B,
00696 Gan_Vector2 *p, Gan_Vector2 *q, double *s );
00697
00720 Gan_Matrix33 *gan_mat33_set_parts_q ( Gan_Matrix33 *A, const Gan_Matrix22 *B,
00721 const Gan_Vector2 *p, const Gan_Vector2 *q,
00722 double s );
00723
00735 Gan_Matrix33 *gan_mat33_set_cols_q ( Gan_Matrix33 *A,
00736 const Gan_Vector3 *p, const Gan_Vector3 *q,
00737 const Gan_Vector3 *r );
00738
00751 Gan_Matrix33 *gan_mat33_set_rows_q ( Gan_Matrix33 *A,
00752 const Gan_Vector3 *p, const Gan_Vector3 *q,
00753 const Gan_Vector3 *r );
00754
00760 #endif
00761
00762 #define GAN_MATTYPE Gan_Matrix33
00763 #define GAN_MATRIX_TYPE Gan_Matrix
00764 #define GAN_SQUMATRIX_TYPE Gan_SquMatrix
00765 #define GAN_VECTOR_TYPE Gan_Vector
00766 #define GAN_MAT_ELEMENT_TYPE GAN_DOUBLE
00767 #define GAN_REALTYPE double
00768 #define GAN_FWRITE_LENDIAN gan_fwrite_lendian_f64
00769 #define GAN_FREAD_LENDIAN gan_fread_lendian_f64
00770 #define GAN_VECTYPE1 Gan_Vector3
00771 #define GAN_VECTYPE2 Gan_Vector3
00772 #define GAN_MATTYPEL Gan_Matrix33
00773 #define GAN_MATTYPER Gan_Matrix33
00774 #define GAN_SQUMATTYPEL Gan_SquMatrix33
00775 #define GAN_SQUMATTYPER Gan_SquMatrix33
00776 #define GAN_MAT_FPRINT gan_mat33_fprint
00777 #define GAN_MAT_PRINT gan_mat33_print
00778 #define GAN_MAT_FSCANF gan_mat33_fscanf
00779 #define GAN_MAT_FWRITE gan_mat33_fwrite
00780 #define GAN_MAT_FREAD gan_mat33_fread
00781 #define GAN_MAT_ZERO_Q gan_mat33_zero_q
00782 #define GAN_MAT_ZERO_S gan_mat33_zero_s
00783 #define GAN_MAT_COPY_Q gan_mat33_copy_q
00784 #define GAN_MAT_COPY_S gan_mat33_copy_s
00785 #define GAN_MAT_SCALE_Q gan_mat33_scale_q
00786 #define GAN_MAT_SCALE_I gan_mat33_scale_i
00787 #define GAN_MAT_SCALE_S gan_mat33_scale_s
00788 #define GAN_MAT_DIVIDE_Q gan_mat33_divide_q
00789 #define GAN_MAT_DIVIDE_I gan_mat33_divide_i
00790 #define GAN_MAT_DIVIDE_S gan_mat33_divide_s
00791 #define GAN_MAT_NEGATE_Q gan_mat33_negate_q
00792 #define GAN_MAT_NEGATE_I gan_mat33_negate_i
00793 #define GAN_MAT_NEGATE_S gan_mat33_negate_s
00794 #define GAN_MAT_UNIT_Q gan_mat33_unit_q
00795 #define GAN_MAT_UNIT_I gan_mat33_unit_i
00796 #define GAN_MAT_UNIT_S gan_mat33_unit_s
00797 #define GAN_MAT_ADD_Q gan_mat33_add_q
00798 #define GAN_MAT_ADD_I1 gan_mat33_add_i1
00799 #define GAN_MAT_ADD_I2 gan_mat33_add_i2
00800 #define GAN_MAT_INCREMENT gan_mat33_increment
00801 #define GAN_MAT_ADD_S gan_mat33_add_s
00802 #define GAN_MAT_SUB_Q gan_mat33_sub_q
00803 #define GAN_MAT_SUB_I1 gan_mat33_sub_i1
00804 #define GAN_MAT_SUB_I2 gan_mat33_sub_i2
00805 #define GAN_MAT_DECREMENT gan_mat33_decrement
00806 #define GAN_MAT_SUB_S gan_mat33_sub_s
00807 #define GAN_VEC_OUTER_Q gan_vec33_outer_q
00808 #define GAN_VEC_OUTER_S gan_vec33_outer_s
00809 #define GAN_MAT_MULTV_Q gan_mat33_multv3_q
00810 #define GAN_MAT_MULTV_S gan_mat33_multv3_s
00811 #define GAN_MATT_MULTV_Q gan_mat33T_multv3_q
00812 #define GAN_MATT_MULTV_S gan_mat33T_multv3_s
00813 #define GAN_MAT_LMULTMT_Q gan_mat33_lmultm33T_q
00814 #define GAN_MAT_LMULTMT_S gan_mat33_lmultm33T_s
00815 #define GAN_MAT_RMULTM_Q gan_mat33_rmultm33_q
00816 #define GAN_MAT_RMULTM_S gan_mat33_rmultm33_s
00817 #define GAN_MAT_RMULTMT_Q gan_mat33_rmultm33T_q
00818 #define GAN_MAT_RMULTMT_S gan_mat33_rmultm33T_s
00819 #define GAN_MAT_LMULTMT_SYM_Q gan_mat33_lmultm33T_sym_q
00820 #define GAN_MAT_LMULTMT_SYM_S gan_mat33_lmultm33T_sym_s
00821 #define GAN_MAT_RMULTMT_SYM_Q gan_mat33_rmultm33T_sym_q
00822 #define GAN_MAT_RMULTMT_SYM_S gan_mat33_rmultm33T_sym_s
00823 #define GAN_MAT_SLMULTT_Q gan_mat33_slmultT_q
00824 #define GAN_MAT_SLMULTT_S gan_mat33_slmultT_s
00825 #define GAN_MAT_SRMULTT_Q gan_mat33_srmultT_q
00826 #define GAN_MAT_SRMULTT_S gan_mat33_srmultT_s
00827 #define GAN_MAT_LMULTS_Q gan_mat33_lmults33_q
00828 #define GAN_MAT_LMULTS_S gan_mat33_lmults33_s
00829 #define GAN_MAT_RMULTS_Q gan_mat33_rmults33_q
00830 #define GAN_MAT_RMULTS_S gan_mat33_rmults33_s
00831 #define GAN_SYMMATL_LRMULT_Q gan_symmat33_lrmultm33T_q
00832 #define GAN_SYMMATL_LRMULT_S gan_symmat33_lrmultm33T_s
00833 #define GAN_SYMMATR_LRMULT_Q gan_symmat33_lrmultm33_q
00834 #define GAN_SYMMATR_LRMULT_S gan_symmat33_lrmultm33_s
00835 #define GAN_MAT_LMULTL_Q gan_mat33_lmultl33_q
00836 #define GAN_MAT_LMULTL_S gan_mat33_lmultl33_s
00837 #define GAN_MAT_LMULTL_I gan_mat33_lmultl33_i
00838 #define GAN_MAT_LMULTLI_Q gan_mat33_lmultl33I_q
00839 #define GAN_MAT_LMULTLI_S gan_mat33_lmultl33I_s
00840 #define GAN_MAT_LMULTLI_I gan_mat33_lmultl33I_i
00841 #define GAN_MAT_LMULTLT_Q gan_mat33_lmultl33T_q
00842 #define GAN_MAT_LMULTLT_S gan_mat33_lmultl33T_s
00843 #define GAN_MAT_LMULTLT_I gan_mat33_lmultl33T_i
00844 #define GAN_MAT_LMULTLIT_Q gan_mat33_lmultl33IT_q
00845 #define GAN_MAT_LMULTLIT_S gan_mat33_lmultl33IT_s
00846 #define GAN_MAT_LMULTLIT_I gan_mat33_lmultl33IT_i
00847 #define GAN_MAT_RMULTL_Q gan_mat33_rmultl33_q
00848 #define GAN_MAT_RMULTL_S gan_mat33_rmultl33_s
00849 #define GAN_MAT_RMULTL_I gan_mat33_rmultl33_i
00850 #define GAN_MAT_RMULTLI_Q gan_mat33_rmultl33I_q
00851 #define GAN_MAT_RMULTLI_S gan_mat33_rmultl33I_s
00852 #define GAN_MAT_RMULTLI_I gan_mat33_rmultl33I_i
00853 #define GAN_MAT_RMULTLT_Q gan_mat33_rmultl33T_q
00854 #define GAN_MAT_RMULTLT_S gan_mat33_rmultl33T_s
00855 #define GAN_MAT_RMULTLT_I gan_mat33_rmultl33T_i
00856 #define GAN_MAT_RMULTLIT_Q gan_mat33_rmultl33IT_q
00857 #define GAN_MAT_RMULTLIT_S gan_mat33_rmultl33IT_s
00858 #define GAN_MAT_RMULTLIT_I gan_mat33_rmultl33IT_i
00859 #define GAN_MAT_SUMSQR_Q gan_mat33_sumsqr_q
00860 #define GAN_MAT_SUMSQR_S gan_mat33_sumsqr_s
00861 #define GAN_MAT_FNORM_Q gan_mat33_Fnorm_q
00862 #define GAN_MAT_FNORM_S gan_mat33_Fnorm_s
00863 #define GAN_MAT_FROM_MAT_Q gan_mat33_from_mat_q
00864 #define GAN_MAT_FROM_MAT_S gan_mat33_from_mat_s
00865 #define GAN_MAT_FROM_SQUMAT_Q gan_mat33_from_squmat_q
00866 #define GAN_MAT_FROM_SQUMAT_S gan_mat33_from_squmat_s
00867 #define GAN_SQUMAT_FROM_SQUMAT_Q gan_squmat33_from_squmat_q
00868 #define GAN_SQUMAT_FROM_SQUMAT_S gan_squmat33_from_squmat_s
00869
00870 #define GAN_SQUMAT_IDENT_Q gan_mat33_ident_q
00871 #define GAN_SQUMAT_IDENT_S gan_mat33_ident_s
00872 #define GAN_SQUMAT_TPOSE_Q gan_mat33_tpose_q
00873 #define GAN_SQUMAT_TPOSE_S gan_mat33_tpose_s
00874 #define GAN_SQUMAT_TPOSE_I gan_mat33_tpose_i
00875 #define GAN_MAT_SADDT_Q gan_mat33_saddT_q
00876 #define GAN_MAT_SADDT_S gan_mat33_saddT_s
00877 #define GAN_SQUMAT_INVERT gan_mat33_invert
00878 #define GAN_SQUMAT_INVERT_Q gan_mat33_invert_q
00879 #define GAN_SQUMAT_INVERT_S gan_mat33_invert_s
00880 #define GAN_SQUMAT_INVERT_I gan_mat33_invert_i
00881 #define GAN_SQUMAT_ADJOINT_Q gan_mat33_adjoint_q
00882 #define GAN_SQUMAT_ADJOINT_S gan_mat33_adjoint_s
00883 #define GAN_SQUMAT_ADJOINTT_Q gan_mat33_adjointT_q
00884 #define GAN_SQUMAT_ADJOINTT_S gan_mat33_adjointT_s
00885 #define GAN_SQUMAT_DET_Q gan_mat33_det_q
00886 #define GAN_SQUMAT_DET_S gan_mat33_det_s
00887 #define GAN_SQUMAT_TRACE_Q gan_mat33_trace_q
00888 #define GAN_SQUMAT_TRACE_S gan_mat33_trace_s
00889
00890 #ifndef _GAN_3X3MAT_H
00891 #define _GAN_3X3MAT_H
00892
00893
00894 #endif
00895
00908
00909
00910
00911
00912
00913
00914
00915
00916
00917
00918
00919
00920
00921
00922
00923
00924
00925
00926
00927
00928
00929
00942 Gan_Matrix33 *gan_mat33_ident_q ( Gan_Matrix33 *A );
00943
00961 Gan_Matrix33 *gan_mat33_tpose_q ( Gan_Matrix33 *A, Gan_Matrix33 *B );
00962
00980 Gan_SquMatrix33 *gan_mat33_saddT_q ( const Gan_Matrix33 *A, Gan_SquMatrix33 *B );
00981
01012 Gan_Matrix33 *gan_mat33_invert_q ( Gan_Matrix33 *A, Gan_Matrix33 *B );
01013
01022 Gan_Matrix33 *gan_mat33_invert_i ( Gan_Matrix33 *A );
01023
01038 double gan_mat33_det_q ( const Gan_Matrix33 *A );
01039
01045 double gan_mat33_trace_q ( const Gan_Matrix33 *A );
01046
01052 #undef GAN_SQUMAT_IDENT_Q
01053 #undef GAN_SQUMAT_IDENT_S
01054 #undef GAN_SQUMAT_TPOSE_Q
01055 #undef GAN_SQUMAT_TPOSE_S
01056 #undef GAN_SQUMAT_TPOSE_I
01057 #undef GAN_MAT_SADDT_Q
01058 #undef GAN_MAT_SADDT_S
01059 #undef GAN_SQUMATI_MULTV_Q
01060 #undef GAN_SQUMATI_MULTV_S
01061 #undef GAN_SQUMATI_MULTV_I
01062 #undef GAN_SQUMATIT_MULTV_Q
01063 #undef GAN_SQUMATIT_MULTV_S
01064 #undef GAN_SQUMATIT_MULTV_I
01065 #undef GAN_SQUMAT_INVERT
01066 #undef GAN_SQUMAT_INVERT_Q
01067 #undef GAN_SQUMAT_INVERT_S
01068 #undef GAN_SQUMAT_INVERT_I
01069 #undef GAN_SQUMAT_ADJOINT_Q
01070 #undef GAN_SQUMAT_ADJOINT_S
01071 #undef GAN_SQUMAT_ADJOINTT_Q
01072 #undef GAN_SQUMAT_ADJOINTT_S
01073 #undef GAN_SQUMAT_DET_Q
01074 #undef GAN_SQUMAT_DET_S
01075 #undef GAN_SQUMAT_TRACE_Q
01076 #undef GAN_SQUMAT_TRACE_S
01077
01090
01091
01092
01093
01094
01095
01096
01097
01098
01099
01100
01101
01102
01103
01104
01105
01106
01107
01108
01109
01110
01121 Gan_Matrix33 *gan_mat33_zero_q ( const Gan_Matrix33 *A );
01122
01139 Gan_Matrix33 *gan_mat33_copy_q ( Gan_Matrix33 *A, Gan_Matrix33 *B );
01140
01158 Gan_Matrix33 *gan_mat33_scale_q ( Gan_Matrix33 *A, double a,
01159 Gan_Matrix33 *B );
01160
01168 Gan_Matrix33 *gan_mat33_scale_i ( Gan_Matrix33 *A, double a );
01169
01178 Gan_Matrix33 *gan_mat33_divide_q ( Gan_Matrix33 *A, double a,
01179 Gan_Matrix33 *B );
01180
01188 Gan_Matrix33 *gan_mat33_divide_i ( Gan_Matrix33 *A, double a );
01189
01197 Gan_Matrix33 *gan_mat33_negate_q ( Gan_Matrix33 *A, Gan_Matrix33 *B );
01198
01206 Gan_Matrix33 *gan_mat33_negate_i ( Gan_Matrix33 *A );
01207
01215 Gan_Matrix33 *gan_mat33_unit_i ( Gan_Matrix33 *A );
01216
01234 Gan_Matrix33 *gan_mat33_add_q ( Gan_Matrix33 *A, Gan_Matrix33 *B, Gan_Matrix33 *C );
01235
01244 Gan_Matrix33 *gan_mat33_add_i1 ( Gan_Matrix33 *A, Gan_Matrix33 *B );
01245
01254 Gan_Matrix33 *gan_mat33_add_i2 ( Gan_Matrix33 *A, Gan_Matrix33 *B );
01255
01264 Gan_Matrix33 *gan_mat33_increment ( Gan_Matrix33 *A, Gan_Matrix33 *B );
01265
01283 Gan_Matrix33 *gan_mat33_sub_q ( Gan_Matrix33 *A, Gan_Matrix33 *B, Gan_Matrix33 *C );
01284
01293 Gan_Matrix33 *gan_mat33_sub_i1 ( Gan_Matrix33 *A, Gan_Matrix33 *B );
01294
01303 Gan_Matrix33 *gan_mat33_sub_i2 ( Gan_Matrix33 *A, Gan_Matrix33 *B );
01304
01313 Gan_Matrix33 *gan_mat33_decrement ( Gan_Matrix33 *A, Gan_Matrix33 *B );
01314
01332 Gan_Matrix33 *gan_vec33_outer_q ( const Gan_Vector3 *p, const Gan_Vector3 *q,
01333 Gan_Matrix33 *A );
01334
01343 Gan_Vector3 *gan_mat33_multv3_q ( const Gan_Matrix33 *A, Gan_Vector3 *p,
01344 Gan_Vector3 *q );
01345
01346
01355 Gan_Vector3 *gan_mat33T_multv3_q ( const Gan_Matrix33 *A, Gan_Vector3 *p,
01356 Gan_Vector3 *q );
01357
01358
01378 Gan_Matrix33 *gan_mat33_lmultm33T_q ( Gan_Matrix33 *A, const Gan_Matrix33 *B,
01379 Gan_Matrix33 *C );
01380
01390 Gan_Matrix33 *gan_mat33_rmultm33_q ( Gan_Matrix33 *A, const Gan_Matrix33 *B,
01391 Gan_Matrix33 *C );
01392
01402 Gan_Matrix33 *gan_mat33_rmultm33T_q ( Gan_Matrix33 *A, const Gan_Matrix33 *B,
01403 Gan_Matrix33 *C );
01404
01416 Gan_SquMatrix33 *gan_mat33_lmultm33T_sym_q ( const Gan_Matrix33 *A, const Gan_Matrix33 *B,
01417 Gan_SquMatrix33 *C );
01418
01430 Gan_SquMatrix33 *gan_mat33_rmultm33T_sym_q ( const Gan_Matrix33 *A, const Gan_Matrix33 *B,
01431 Gan_SquMatrix33 *C );
01432
01441 Gan_Matrix33 *gan_mat33_lmults33_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B,
01442 Gan_Matrix33 *C );
01443
01452 Gan_Matrix33 *gan_mat33_rmults33_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B,
01453 Gan_Matrix33 *C );
01454
01474 Gan_SquMatrix33 *gan_symmat33_lrmultm33T_q ( const Gan_SquMatrix33 *A, const Gan_Matrix33 *B,
01475 const Gan_Matrix33 *C, Gan_SquMatrix33 *D );
01476
01487 Gan_SquMatrix33 *gan_symmat33_lrmultm33_q ( const Gan_SquMatrix33 *A, const Gan_Matrix33 *B,
01488 const Gan_Matrix33 *C, Gan_SquMatrix33 *D );
01489
01508 Gan_Matrix33 *gan_mat33_lmultl33_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B,
01509 Gan_Matrix33 *C );
01510
01520 Gan_Matrix33 *gan_mat33_lmultl33I_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B,
01521 Gan_Matrix33 *C );
01522
01532 Gan_Matrix33 *gan_mat33_lmultl33T_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B,
01533 Gan_Matrix33 *C );
01534
01544 Gan_Matrix33 *gan_mat33_lmultl33IT_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B,
01545 Gan_Matrix33 *C );
01546
01556 Gan_Matrix33 *gan_mat33_rmultl33_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B,
01557 Gan_Matrix33 *C );
01558
01568 Gan_Matrix33 *gan_mat33_rmultl33I_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B,
01569 Gan_Matrix33 *C );
01570
01580 Gan_Matrix33 *gan_mat33_rmultl33T_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B,
01581 Gan_Matrix33 *C );
01582
01592 Gan_Matrix33 *gan_mat33_rmultl33IT_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B,
01593 Gan_Matrix33 *C );
01594
01604 Gan_Matrix33 *gan_mat33_lmultl33_i ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B );
01605
01615 Gan_Matrix33 *gan_mat33_lmultl33I_i ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B );
01616
01626 Gan_Matrix33 *gan_mat33_lmultl33T_i ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B );
01627
01637 Gan_Matrix33 *gan_mat33_lmultl33IT_i ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B );
01638
01648 Gan_Matrix33 *gan_mat33_rmultl33_i ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B );
01649
01659 Gan_Matrix33 *gan_mat33_rmultl33I_i ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B );
01660
01670 Gan_Matrix33 *gan_mat33_rmultl33T_i ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B );
01671
01681 Gan_Matrix33 *gan_mat33_rmultl33IT_i ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B );
01682
01691 Gan_SquMatrix33 *gan_mat33_slmultT_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B );
01692
01693
01702 Gan_SquMatrix33 *gan_mat33_srmultT_q ( const Gan_Matrix33 *A, Gan_SquMatrix33 *B );
01703
01704
01719 double gan_mat33_sumsqr_q ( const Gan_Matrix33 *A );
01720
01727 double gan_mat33_Fnorm_q ( const Gan_Matrix33 *A );
01728
01738 Gan_Matrix33 *gan_mat33_from_mat_q ( const Gan_Matrix *A, Gan_Matrix33 *B );
01739
01740 Gan_Matrix33 *gan_mat33_from_squmat_q ( const Gan_SquMatrix *A, Gan_Matrix33 *B );
01741
01742 Gan_SquMatrix33 *gan_squmat33_from_squmat_q ( const Gan_SquMatrix *A,
01743 Gan_SquMatrix33 *B );
01744
01763
01764
01765
01766
01767
01768
01769
01770
01771
01772
01773
01774
01775
01776
01777
01778 #undef GAN_MATTYPE
01779 #undef GAN_MATRIX_TYPE
01780 #undef GAN_SQUMATRIX_TYPE
01781 #undef GAN_VECTOR_TYPE
01782 #undef GAN_MAT_ELEMENT_TYPE
01783 #undef GAN_REALTYPE
01784 #undef GAN_FWRITE_LENDIAN
01785 #undef GAN_FREAD_LENDIAN
01786 #undef GAN_VECTYPE1
01787 #undef GAN_VECTYPE2
01788 #undef GAN_MATTYPEL
01789 #undef GAN_MATTYPER
01790 #undef GAN_SQUMATTYPEL
01791 #undef GAN_SQUMATTYPER
01792 #undef GAN_FIXED_MATRIX_TYPE
01793 #undef GAN_MAT_FPRINT
01794 #undef GAN_MAT_PRINT
01795 #undef GAN_MAT_FSCANF
01796 #undef GAN_MAT_FWRITE
01797 #undef GAN_MAT_FREAD
01798 #undef GAN_MAT_ZERO_Q
01799 #undef GAN_MAT_ZERO_S
01800 #undef GAN_MAT_COPY_Q
01801 #undef GAN_MAT_COPY_S
01802 #undef GAN_MAT_SCALE_Q
01803 #undef GAN_MAT_SCALE_S
01804 #undef GAN_MAT_SCALE_I
01805 #undef GAN_MAT_DIVIDE_Q
01806 #undef GAN_MAT_DIVIDE_S
01807 #undef GAN_MAT_DIVIDE_I
01808 #undef GAN_MAT_NEGATE_Q
01809 #undef GAN_MAT_NEGATE_S
01810 #undef GAN_MAT_NEGATE_I
01811 #undef GAN_MAT_UNIT_Q
01812 #undef GAN_MAT_UNIT_S
01813 #undef GAN_MAT_UNIT_I
01814 #undef GAN_MAT_ADD_Q
01815 #undef GAN_MAT_ADD_I1
01816 #undef GAN_MAT_ADD_I2
01817 #undef GAN_MAT_INCREMENT
01818 #undef GAN_MAT_ADD_S
01819 #undef GAN_MAT_SUB_Q
01820 #undef GAN_MAT_SUB_I1
01821 #undef GAN_MAT_SUB_I2
01822 #undef GAN_MAT_DECREMENT
01823 #undef GAN_MAT_SUB_S
01824 #undef GAN_VEC_OUTER_Q
01825 #undef GAN_VEC_OUTER_S
01826 #undef GAN_MAT_MULTV_Q
01827 #undef GAN_MAT_MULTV_S
01828 #undef GAN_MAT_MULTV_I
01829 #undef GAN_MATT_MULTV_Q
01830 #undef GAN_MATT_MULTV_S
01831 #undef GAN_MATT_MULTV_I
01832 #undef GAN_MAT_LMULTM_Q
01833 #undef GAN_MAT_LMULTM_S
01834 #undef GAN_MAT_LMULTMT_Q
01835 #undef GAN_MAT_LMULTMT_S
01836 #undef GAN_MAT_RMULTM_Q
01837 #undef GAN_MAT_RMULTM_S
01838 #undef GAN_MAT_RMULTMT_Q
01839 #undef GAN_MAT_RMULTMT_S
01840 #undef GAN_MAT_LMULTMT_SYM_Q
01841 #undef GAN_MAT_LMULTMT_SYM_S
01842 #undef GAN_MAT_RMULTMT_SYM_Q
01843 #undef GAN_MAT_RMULTMT_SYM_S
01844 #undef GAN_MAT_LMULTS_Q
01845 #undef GAN_MAT_LMULTS_S
01846 #undef GAN_MAT_RMULTS_Q
01847 #undef GAN_MAT_RMULTS_S
01848 #undef GAN_SYMMATL_LRMULT_Q
01849 #undef GAN_SYMMATL_LRMULT_S
01850 #undef GAN_SYMMATR_LRMULT_Q
01851 #undef GAN_SYMMATR_LRMULT_S
01852 #undef GAN_MAT_LMULTL_Q
01853 #undef GAN_MAT_LMULTL_S
01854 #undef GAN_MAT_LMULTL_I
01855 #undef GAN_MAT_LMULTLI_Q
01856 #undef GAN_MAT_LMULTLI_S
01857 #undef GAN_MAT_LMULTLI_I
01858 #undef GAN_MAT_LMULTLT_Q
01859 #undef GAN_MAT_LMULTLT_S
01860 #undef GAN_MAT_LMULTLT_I
01861 #undef GAN_MAT_LMULTLIT_Q
01862 #undef GAN_MAT_LMULTLIT_S
01863 #undef GAN_MAT_LMULTLIT_I
01864 #undef GAN_MAT_RMULTL_Q
01865 #undef GAN_MAT_RMULTL_S
01866 #undef GAN_MAT_RMULTL_I
01867 #undef GAN_MAT_RMULTLI_Q
01868 #undef GAN_MAT_RMULTLI_S
01869 #undef GAN_MAT_RMULTLI_I
01870 #undef GAN_MAT_RMULTLT_Q
01871 #undef GAN_MAT_RMULTLT_S
01872 #undef GAN_MAT_RMULTLT_I
01873 #undef GAN_MAT_RMULTLIT_Q
01874 #undef GAN_MAT_RMULTLIT_S
01875 #undef GAN_MAT_RMULTLIT_I
01876 #undef GAN_MAT_SRMULTT_Q
01877 #undef GAN_MAT_SRMULTT_S
01878 #undef GAN_MAT_SRMULTT_I
01879 #undef GAN_MAT_SLMULTT_Q
01880 #undef GAN_MAT_SLMULTT_S
01881 #undef GAN_MAT_SLMULTT_I
01882 #undef GAN_MAT_RMULTLIT_S
01883 #undef GAN_MAT_SUMSQR_Q
01884 #undef GAN_MAT_SUMSQR_S
01885 #undef GAN_MAT_FNORM_Q
01886 #undef GAN_MAT_FNORM_S
01887 #undef GAN_MAT_FROM_MAT_Q
01888 #undef GAN_MAT_FROM_MAT_S
01889 #undef GAN_MAT_FROM_SQUMAT_Q
01890 #undef GAN_MAT_FROM_SQUMAT_S
01891 #undef GAN_SQUMAT_FROM_SQUMAT_Q
01892 #undef GAN_SQUMAT_FROM_SQUMAT_S
01893
01894
01908
01909
01910
01911
01912
01913
01914
01915
01916
01917
01918
01919
01920
01921
01922
01923 #ifndef _GAN_3X3SYMMAT_H
01924
01938 Gan_SquMatrix33 *gan_symmat33_fill_q ( Gan_SquMatrix33 *A,
01939 double XX,
01940 double YX, double YY,
01941 double ZX, double ZY, double ZZ );
01942
01964 void gan_symmat33_get_parts_q ( const Gan_SquMatrix33 *A,
01965 Gan_SquMatrix22 *B, Gan_Vector2 *p, double *s);
01966
01989 Gan_SquMatrix33 *gan_symmat33_set_parts_q ( Gan_SquMatrix33 *A,
01990 const Gan_SquMatrix22 *B,
01991 const Gan_Vector2 *p, double s );
01992
01998 #endif
01999
02000 #define GAN_MATTYPE Gan_SquMatrix33
02001 #define GAN_MATRIX_TYPE Gan_SquMatrix
02002 #define GAN_SQUMATRIX_TYPE Gan_SquMatrix
02003 #define GAN_VECTOR_TYPE Gan_Vector
02004 #define GAN_MAT_ELEMENT_TYPE GAN_DOUBLE
02005 #define GAN_REALTYPE double
02006 #define GAN_FWRITE_LENDIAN gan_fwrite_lendian_f64
02007 #define GAN_FREAD_LENDIAN gan_fread_lendian_f64
02008 #define GAN_VECTYPE1 Gan_Vector3
02009 #define GAN_VECTYPE2 Gan_Vector3
02010 #define GAN_FIXED_MATRIX_TYPE GAN_SYMMETRIC_MATRIX33
02011 #define GAN_MAT_FPRINT gan_symmat33_fprint
02012 #define GAN_MAT_PRINT gan_symmat33_print
02013 #define GAN_MAT_FSCANF gan_symmat33_fscanf
02014 #define GAN_MAT_FWRITE gan_symmat33_fwrite
02015 #define GAN_MAT_FREAD gan_symmat33_fread
02016 #define GAN_MAT_ZERO_Q gan_symmat33_zero_q
02017 #define GAN_MAT_ZERO_S gan_symmat33_zero_s
02018 #define GAN_MAT_COPY_Q gan_symmat33_copy_q
02019 #define GAN_MAT_COPY_S gan_symmat33_copy_s
02020 #define GAN_MAT_SCALE_Q gan_symmat33_scale_q
02021 #define GAN_MAT_SCALE_S gan_symmat33_scale_s
02022 #define GAN_MAT_SCALE_I gan_symmat33_scale_i
02023 #define GAN_MAT_DIVIDE_Q gan_symmat33_divide_q
02024 #define GAN_MAT_DIVIDE_S gan_symmat33_divide_s
02025 #define GAN_MAT_DIVIDE_I gan_symmat33_divide_i
02026 #define GAN_MAT_NEGATE_Q gan_symmat33_negate_q
02027 #define GAN_MAT_NEGATE_S gan_symmat33_negate_s
02028 #define GAN_MAT_NEGATE_I gan_symmat33_negate_i
02029 #define GAN_MAT_UNIT_Q gan_symmat33_unit_q
02030 #define GAN_MAT_UNIT_S gan_symmat33_unit_s
02031 #define GAN_MAT_UNIT_I gan_symmat33_unit_i
02032 #define GAN_MAT_ADD_Q gan_symmat33_add_q
02033 #define GAN_MAT_ADD_I1 gan_symmat33_add_i1
02034 #define GAN_MAT_ADD_I2 gan_symmat33_add_i2
02035 #define GAN_MAT_INCREMENT gan_symmat33_increment
02036 #define GAN_MAT_ADD_S gan_symmat33_add_s
02037 #define GAN_MAT_SUB_Q gan_symmat33_sub_q
02038 #define GAN_MAT_SUB_I1 gan_symmat33_sub_i1
02039 #define GAN_MAT_SUB_I2 gan_symmat33_sub_i2
02040 #define GAN_MAT_DECREMENT gan_symmat33_decrement
02041 #define GAN_MAT_SUB_S gan_symmat33_sub_s
02042 #define GAN_MAT_MULTV_Q gan_symmat33_multv3_q
02043 #define GAN_MAT_MULTV_S gan_symmat33_multv3_s
02044 #define GAN_MAT_SUMSQR_Q gan_symmat33_sumsqr_q
02045 #define GAN_MAT_SUMSQR_S gan_symmat33_sumsqr_s
02046 #define GAN_MAT_FNORM_Q gan_symmat33_Fnorm_q
02047 #define GAN_MAT_FNORM_S gan_symmat33_Fnorm_s
02048
02049 #define GAN_SQUMAT_IDENT_Q gan_symmat33_ident_q
02050 #define GAN_SQUMAT_IDENT_S gan_symmat33_ident_s
02051 #define GAN_SQUMAT_INVERT gan_symmat33_invert
02052 #define GAN_SQUMAT_INVERT_Q gan_symmat33_invert_q
02053 #define GAN_SQUMAT_INVERT_S gan_symmat33_invert_s
02054 #define GAN_SQUMAT_INVERT_I gan_symmat33_invert_i
02055 #define GAN_SQUMAT_DET_Q gan_symmat33_det_q
02056 #define GAN_SQUMAT_DET_S gan_symmat33_det_s
02057 #define GAN_SQUMAT_TRACE_Q gan_symmat33_trace_q
02058 #define GAN_SQUMAT_TRACE_S gan_symmat33_trace_s
02059
02060 #define GAN_VEC_OUTER_SYM_Q gan_vec33_outer_sym_q
02061 #define GAN_VEC_OUTER_SYM_S gan_vec33_outer_sym_s
02062 #define GAN_SYMMAT_CHOLESKY gan_symmat33_cholesky
02063 #define GAN_SYMMAT_CHOLESKY_Q gan_symmat33_cholesky_q
02064 #define GAN_SYMMAT_CHOLESKY_S gan_symmat33_cholesky_s
02065 #define GAN_SYMMAT_CHOLESKY_I gan_symmat33_cholesky_i
02066
02067 #ifndef _GAN_3X3SYMMAT_H
02068 #define _GAN_3X3SYMMAT_H
02069
02070
02071 #endif
02072
02085
02086
02087
02088
02089
02090
02091
02092
02093
02094
02095
02096
02097
02098
02099
02100
02101
02102
02103
02104
02105
02106
02117 Gan_SquMatrix33 *gan_vec33_outer_sym_q ( const Gan_Vector3 *p, Gan_SquMatrix33 *A );
02118
02140 Gan_SquMatrix33 *gan_symmat33_cholesky_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
02141
02150 Gan_SquMatrix33 *gan_symmat33_cholesky_i ( Gan_SquMatrix33 *A );
02151
02157 #undef GAN_VEC_OUTER_SYM_Q
02158 #undef GAN_VEC_OUTER_SYM_S
02159 #undef GAN_SYMMAT_CHOLESKY
02160 #undef GAN_SYMMAT_CHOLESKY_Q
02161 #undef GAN_SYMMAT_CHOLESKY_S
02162 #undef GAN_SYMMAT_CHOLESKY_I
02163
02176
02177
02178
02179
02180
02181
02182
02183
02184
02185
02186
02187
02188
02189
02190
02191
02192
02193
02194
02195
02196
02197
02210 Gan_SquMatrix33 *gan_symmat33_ident_q ( Gan_SquMatrix33 *A );
02211
02262 Gan_SquMatrix33 *gan_symmat33_invert_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
02263
02272 Gan_SquMatrix33 *gan_symmat33_invert_i ( Gan_SquMatrix33 *A );
02273
02288 double gan_symmat33_det_q ( const Gan_SquMatrix33 *A );
02289
02295 double gan_symmat33_trace_q ( const Gan_SquMatrix33 *A );
02296
02302 #undef GAN_SQUMAT_IDENT_Q
02303 #undef GAN_SQUMAT_IDENT_S
02304 #undef GAN_SQUMAT_TPOSE_Q
02305 #undef GAN_SQUMAT_TPOSE_S
02306 #undef GAN_SQUMAT_TPOSE_I
02307 #undef GAN_MAT_SADDT_Q
02308 #undef GAN_MAT_SADDT_S
02309 #undef GAN_SQUMATI_MULTV_Q
02310 #undef GAN_SQUMATI_MULTV_S
02311 #undef GAN_SQUMATI_MULTV_I
02312 #undef GAN_SQUMATIT_MULTV_Q
02313 #undef GAN_SQUMATIT_MULTV_S
02314 #undef GAN_SQUMATIT_MULTV_I
02315 #undef GAN_SQUMAT_INVERT
02316 #undef GAN_SQUMAT_INVERT_Q
02317 #undef GAN_SQUMAT_INVERT_S
02318 #undef GAN_SQUMAT_INVERT_I
02319 #undef GAN_SQUMAT_ADJOINT_Q
02320 #undef GAN_SQUMAT_ADJOINT_S
02321 #undef GAN_SQUMAT_ADJOINTT_Q
02322 #undef GAN_SQUMAT_ADJOINTT_S
02323 #undef GAN_SQUMAT_DET_Q
02324 #undef GAN_SQUMAT_DET_S
02325 #undef GAN_SQUMAT_TRACE_Q
02326 #undef GAN_SQUMAT_TRACE_S
02327
02340
02341
02342
02343
02344
02345
02346
02347
02348
02349
02350
02351
02352
02353
02354
02355
02356
02357
02358
02359
02360
02371 Gan_SquMatrix33 *gan_symmat33_zero_q ( const Gan_SquMatrix33 *A );
02372
02389 Gan_SquMatrix33 *gan_symmat33_copy_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
02390
02408 Gan_SquMatrix33 *gan_symmat33_scale_q ( Gan_SquMatrix33 *A, double a,
02409 Gan_SquMatrix33 *B );
02410
02418 Gan_SquMatrix33 *gan_symmat33_scale_i ( Gan_SquMatrix33 *A, double a );
02419
02428 Gan_SquMatrix33 *gan_symmat33_divide_q ( Gan_SquMatrix33 *A, double a,
02429 Gan_SquMatrix33 *B );
02430
02438 Gan_SquMatrix33 *gan_symmat33_divide_i ( Gan_SquMatrix33 *A, double a );
02439
02447 Gan_SquMatrix33 *gan_symmat33_negate_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
02448
02456 Gan_SquMatrix33 *gan_symmat33_negate_i ( Gan_SquMatrix33 *A );
02457
02465 Gan_SquMatrix33 *gan_symmat33_unit_i ( Gan_SquMatrix33 *A );
02466
02484 Gan_SquMatrix33 *gan_symmat33_add_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B, Gan_SquMatrix33 *C );
02485
02494 Gan_SquMatrix33 *gan_symmat33_add_i1 ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
02495
02504 Gan_SquMatrix33 *gan_symmat33_add_i2 ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
02505
02514 Gan_SquMatrix33 *gan_symmat33_increment ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
02515
02533 Gan_SquMatrix33 *gan_symmat33_sub_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B, Gan_SquMatrix33 *C );
02534
02543 Gan_SquMatrix33 *gan_symmat33_sub_i1 ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
02544
02553 Gan_SquMatrix33 *gan_symmat33_sub_i2 ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
02554
02563 Gan_SquMatrix33 *gan_symmat33_decrement ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
02564
02583 Gan_Vector3 *gan_symmat33_multv3_q ( const Gan_SquMatrix33 *A, Gan_Vector3 *p,
02584 Gan_Vector3 *q );
02585
02586
02587
02588
02660 double gan_symmat33_sumsqr_q ( const Gan_SquMatrix33 *A );
02661
02668 double gan_symmat33_Fnorm_q ( const Gan_SquMatrix33 *A );
02669
02700
02701
02702
02703
02704
02705
02706
02707
02708
02709
02710
02711
02712
02713
02714
02715 #undef GAN_MATTYPE
02716 #undef GAN_MATRIX_TYPE
02717 #undef GAN_SQUMATRIX_TYPE
02718 #undef GAN_VECTOR_TYPE
02719 #undef GAN_MAT_ELEMENT_TYPE
02720 #undef GAN_REALTYPE
02721 #undef GAN_FWRITE_LENDIAN
02722 #undef GAN_FREAD_LENDIAN
02723 #undef GAN_VECTYPE1
02724 #undef GAN_VECTYPE2
02725 #undef GAN_MATTYPEL
02726 #undef GAN_MATTYPER
02727 #undef GAN_SQUMATTYPEL
02728 #undef GAN_SQUMATTYPER
02729 #undef GAN_FIXED_MATRIX_TYPE
02730 #undef GAN_MAT_FPRINT
02731 #undef GAN_MAT_PRINT
02732 #undef GAN_MAT_FSCANF
02733 #undef GAN_MAT_FWRITE
02734 #undef GAN_MAT_FREAD
02735 #undef GAN_MAT_ZERO_Q
02736 #undef GAN_MAT_ZERO_S
02737 #undef GAN_MAT_COPY_Q
02738 #undef GAN_MAT_COPY_S
02739 #undef GAN_MAT_SCALE_Q
02740 #undef GAN_MAT_SCALE_S
02741 #undef GAN_MAT_SCALE_I
02742 #undef GAN_MAT_DIVIDE_Q
02743 #undef GAN_MAT_DIVIDE_S
02744 #undef GAN_MAT_DIVIDE_I
02745 #undef GAN_MAT_NEGATE_Q
02746 #undef GAN_MAT_NEGATE_S
02747 #undef GAN_MAT_NEGATE_I
02748 #undef GAN_MAT_UNIT_Q
02749 #undef GAN_MAT_UNIT_S
02750 #undef GAN_MAT_UNIT_I
02751 #undef GAN_MAT_ADD_Q
02752 #undef GAN_MAT_ADD_I1
02753 #undef GAN_MAT_ADD_I2
02754 #undef GAN_MAT_INCREMENT
02755 #undef GAN_MAT_ADD_S
02756 #undef GAN_MAT_SUB_Q
02757 #undef GAN_MAT_SUB_I1
02758 #undef GAN_MAT_SUB_I2
02759 #undef GAN_MAT_DECREMENT
02760 #undef GAN_MAT_SUB_S
02761 #undef GAN_VEC_OUTER_Q
02762 #undef GAN_VEC_OUTER_S
02763 #undef GAN_MAT_MULTV_Q
02764 #undef GAN_MAT_MULTV_S
02765 #undef GAN_MAT_MULTV_I
02766 #undef GAN_MATT_MULTV_Q
02767 #undef GAN_MATT_MULTV_S
02768 #undef GAN_MATT_MULTV_I
02769 #undef GAN_MAT_LMULTM_Q
02770 #undef GAN_MAT_LMULTM_S
02771 #undef GAN_MAT_LMULTMT_Q
02772 #undef GAN_MAT_LMULTMT_S
02773 #undef GAN_MAT_RMULTM_Q
02774 #undef GAN_MAT_RMULTM_S
02775 #undef GAN_MAT_RMULTMT_Q
02776 #undef GAN_MAT_RMULTMT_S
02777 #undef GAN_MAT_LMULTMT_SYM_Q
02778 #undef GAN_MAT_LMULTMT_SYM_S
02779 #undef GAN_MAT_RMULTMT_SYM_Q
02780 #undef GAN_MAT_RMULTMT_SYM_S
02781 #undef GAN_MAT_LMULTS_Q
02782 #undef GAN_MAT_LMULTS_S
02783 #undef GAN_MAT_RMULTS_Q
02784 #undef GAN_MAT_RMULTS_S
02785 #undef GAN_SYMMATL_LRMULT_Q
02786 #undef GAN_SYMMATL_LRMULT_S
02787 #undef GAN_SYMMATR_LRMULT_Q
02788 #undef GAN_SYMMATR_LRMULT_S
02789 #undef GAN_MAT_LMULTL_Q
02790 #undef GAN_MAT_LMULTL_S
02791 #undef GAN_MAT_LMULTL_I
02792 #undef GAN_MAT_LMULTLI_Q
02793 #undef GAN_MAT_LMULTLI_S
02794 #undef GAN_MAT_LMULTLI_I
02795 #undef GAN_MAT_LMULTLT_Q
02796 #undef GAN_MAT_LMULTLT_S
02797 #undef GAN_MAT_LMULTLT_I
02798 #undef GAN_MAT_LMULTLIT_Q
02799 #undef GAN_MAT_LMULTLIT_S
02800 #undef GAN_MAT_LMULTLIT_I
02801 #undef GAN_MAT_RMULTL_Q
02802 #undef GAN_MAT_RMULTL_S
02803 #undef GAN_MAT_RMULTL_I
02804 #undef GAN_MAT_RMULTLI_Q
02805 #undef GAN_MAT_RMULTLI_S
02806 #undef GAN_MAT_RMULTLI_I
02807 #undef GAN_MAT_RMULTLT_Q
02808 #undef GAN_MAT_RMULTLT_S
02809 #undef GAN_MAT_RMULTLT_I
02810 #undef GAN_MAT_RMULTLIT_Q
02811 #undef GAN_MAT_RMULTLIT_S
02812 #undef GAN_MAT_RMULTLIT_I
02813 #undef GAN_MAT_SRMULTT_Q
02814 #undef GAN_MAT_SRMULTT_S
02815 #undef GAN_MAT_SRMULTT_I
02816 #undef GAN_MAT_SLMULTT_Q
02817 #undef GAN_MAT_SLMULTT_S
02818 #undef GAN_MAT_SLMULTT_I
02819 #undef GAN_MAT_RMULTLIT_S
02820 #undef GAN_MAT_SUMSQR_Q
02821 #undef GAN_MAT_SUMSQR_S
02822 #undef GAN_MAT_FNORM_Q
02823 #undef GAN_MAT_FNORM_S
02824 #undef GAN_MAT_FROM_MAT_Q
02825 #undef GAN_MAT_FROM_MAT_S
02826 #undef GAN_MAT_FROM_SQUMAT_Q
02827 #undef GAN_MAT_FROM_SQUMAT_S
02828 #undef GAN_SQUMAT_FROM_SQUMAT_Q
02829 #undef GAN_SQUMAT_FROM_SQUMAT_S
02830
02831
02845
02846
02847
02848
02849
02850
02851
02852
02853
02854
02855
02856
02857
02858
02859
02860 #ifndef _GAN_3X3LTMAT_H
02861
02877 Gan_SquMatrix33 *gan_ltmat33_fill_q ( Gan_SquMatrix33 *A,
02878 double XX,
02879 double YX, double YY,
02880 double ZX, double ZY, double ZZ );
02881
02901 void gan_ltmat33_get_parts_q ( const Gan_SquMatrix33 *A,
02902 Gan_SquMatrix22 *B, Gan_Vector2 *p, double *s );
02903
02926 Gan_SquMatrix33 * gan_ltmat33_set_parts_q ( Gan_SquMatrix33 *A,
02927 const Gan_SquMatrix22 *B,
02928 const Gan_Vector2 *p, double s );
02929
02935 #endif
02936
02937 #define GAN_MATTYPE Gan_SquMatrix33
02938 #define GAN_MATRIX_TYPE Gan_SquMatrix
02939 #define GAN_SQUMATRIX_TYPE Gan_SquMatrix
02940 #define GAN_VECTOR_TYPE Gan_Vector
02941 #define GAN_MAT_ELEMENT_TYPE GAN_DOUBLE
02942 #define GAN_REALTYPE double
02943 #define GAN_FWRITE_LENDIAN gan_fwrite_lendian_f64
02944 #define GAN_FREAD_LENDIAN gan_fread_lendian_f64
02945 #define GAN_VECTYPE1 Gan_Vector3
02946 #define GAN_VECTYPE2 Gan_Vector3
02947 #define GAN_SQUMATTYPEL Gan_SquMatrix33
02948 #define GAN_SQUMATTYPER Gan_SquMatrix33
02949 #define GAN_FIXED_MATRIX_TYPE GAN_LOWER_TRI_MATRIX33
02950 #define GAN_MAT_FPRINT gan_ltmat33_fprint
02951 #define GAN_MAT_PRINT gan_ltmat33_print
02952 #define GAN_MAT_FSCANF gan_ltmat33_fscanf
02953 #define GAN_MAT_FWRITE gan_ltmat33_fwrite
02954 #define GAN_MAT_FREAD gan_ltmat33_fread
02955 #define GAN_MAT_ZERO_Q gan_ltmat33_zero_q
02956 #define GAN_MAT_ZERO_S gan_ltmat33_zero_s
02957 #define GAN_MAT_COPY_Q gan_ltmat33_copy_q
02958 #define GAN_MAT_COPY_S gan_ltmat33_copy_s
02959 #define GAN_MAT_SCALE_Q gan_ltmat33_scale_q
02960 #define GAN_MAT_SCALE_S gan_ltmat33_scale_s
02961 #define GAN_MAT_SCALE_I gan_ltmat33_scale_i
02962 #define GAN_MAT_DIVIDE_Q gan_ltmat33_divide_q
02963 #define GAN_MAT_DIVIDE_S gan_ltmat33_divide_s
02964 #define GAN_MAT_DIVIDE_I gan_ltmat33_divide_i
02965 #define GAN_MAT_NEGATE_Q gan_ltmat33_negate_q
02966 #define GAN_MAT_NEGATE_S gan_ltmat33_negate_s
02967 #define GAN_MAT_NEGATE_I gan_ltmat33_negate_i
02968 #define GAN_MAT_UNIT_Q gan_ltmat33_unit_q
02969 #define GAN_MAT_UNIT_S gan_ltmat33_unit_s
02970 #define GAN_MAT_UNIT_I gan_ltmat33_unit_i
02971 #define GAN_MAT_ADD_Q gan_ltmat33_add_q
02972 #define GAN_MAT_ADD_I1 gan_ltmat33_add_i1
02973 #define GAN_MAT_ADD_I2 gan_ltmat33_add_i2
02974 #define GAN_MAT_INCREMENT gan_ltmat33_increment
02975 #define GAN_MAT_ADD_S gan_ltmat33_add_s
02976 #define GAN_MAT_SUB_Q gan_ltmat33_sub_q
02977 #define GAN_MAT_SUB_I1 gan_ltmat33_sub_i1
02978 #define GAN_MAT_SUB_I2 gan_ltmat33_sub_i2
02979 #define GAN_MAT_DECREMENT gan_ltmat33_decrement
02980 #define GAN_MAT_SUB_S gan_ltmat33_sub_s
02981 #define GAN_MAT_MULTV_Q gan_ltmat33_multv3_q
02982 #define GAN_MAT_MULTV_S gan_ltmat33_multv3_s
02983 #define GAN_MAT_MULTV_I gan_ltmat33_multv3_i
02984 #define GAN_MATT_MULTV_Q gan_ltmat33T_multv3_q
02985 #define GAN_MATT_MULTV_S gan_ltmat33T_multv3_s
02986 #define GAN_MATT_MULTV_I gan_ltmat33T_multv3_i
02987 #define GAN_MAT_SRMULTT_Q gan_ltmat33_srmultT_q
02988 #define GAN_MAT_SRMULTT_S gan_ltmat33_srmultT_s
02989 #define GAN_MAT_SRMULTT_I gan_ltmat33_srmultT_i
02990 #define GAN_MAT_SLMULTT_Q gan_ltmat33_slmultT_q
02991 #define GAN_MAT_SLMULTT_S gan_ltmat33_slmultT_s
02992 #define GAN_MAT_SLMULTT_I gan_ltmat33_slmultT_i
02993 #define GAN_MAT_SUMSQR_Q gan_ltmat33_sumsqr_q
02994 #define GAN_MAT_SUMSQR_S gan_ltmat33_sumsqr_s
02995 #define GAN_MAT_FNORM_Q gan_ltmat33_Fnorm_q
02996 #define GAN_MAT_FNORM_S gan_ltmat33_Fnorm_s
02997
02998 #define GAN_SQUMAT_IDENT_Q gan_ltmat33_ident_q
02999 #define GAN_SQUMAT_IDENT_S gan_ltmat33_ident_s
03000 #define GAN_SQUMATI_MULTV_Q gan_ltmat33I_multv3_q
03001 #define GAN_SQUMATI_MULTV_S gan_ltmat33I_multv3_s
03002 #define GAN_SQUMATI_MULTV_I gan_ltmat33I_multv3_i
03003 #define GAN_SQUMATIT_MULTV_Q gan_ltmat33IT_multv3_q
03004 #define GAN_SQUMATIT_MULTV_S gan_ltmat33IT_multv3_s
03005 #define GAN_SQUMATIT_MULTV_I gan_ltmat33IT_multv3_i
03006 #define GAN_SQUMAT_INVERT gan_ltmat33_invert
03007 #define GAN_SQUMAT_INVERT_Q gan_ltmat33_invert_q
03008 #define GAN_SQUMAT_INVERT_S gan_ltmat33_invert_s
03009 #define GAN_SQUMAT_INVERT_I gan_ltmat33_invert_i
03010 #define GAN_SQUMAT_DET_Q gan_ltmat33_det_q
03011 #define GAN_SQUMAT_DET_S gan_ltmat33_det_s
03012 #define GAN_SQUMAT_TRACE_Q gan_ltmat33_trace_q
03013 #define GAN_SQUMAT_TRACE_S gan_ltmat33_trace_s
03014
03015 #ifndef _GAN_3X3LTMAT_H
03016 #define _GAN_3X3LTMAT_H
03017
03018
03019 #endif
03020
03033
03034
03035
03036
03037
03038
03039
03040
03041
03042
03043
03044
03045
03046
03047
03048
03049
03050
03051
03052
03053
03054
03067 Gan_SquMatrix33 *gan_ltmat33_ident_q ( Gan_SquMatrix33 *A );
03068
03106 Gan_Vector3 *gan_ltmat33I_multv3_q ( const Gan_SquMatrix33 *A, Gan_Vector3 *p,
03107 Gan_Vector3 *q );
03108
03117 Gan_Vector3 *gan_ltmat33I_multv3_i ( const Gan_SquMatrix33 *A, Gan_Vector3 *p );
03118
03127 Gan_Vector3 *gan_ltmat33IT_multv3_q ( const Gan_SquMatrix33 *A, Gan_Vector3 *p,
03128 Gan_Vector3 *q );
03129
03138 Gan_Vector3 *gan_ltmat33IT_multv3_i ( const Gan_SquMatrix33 *A, Gan_Vector3 *p );
03139
03157 Gan_SquMatrix33 *gan_ltmat33_invert_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
03158
03167 Gan_SquMatrix33 *gan_ltmat33_invert_i ( Gan_SquMatrix33 *A );
03168
03183 double gan_ltmat33_det_q ( const Gan_SquMatrix33 *A );
03184
03190 double gan_ltmat33_trace_q ( const Gan_SquMatrix33 *A );
03191
03197 #undef GAN_SQUMAT_IDENT_Q
03198 #undef GAN_SQUMAT_IDENT_S
03199 #undef GAN_SQUMAT_TPOSE_Q
03200 #undef GAN_SQUMAT_TPOSE_S
03201 #undef GAN_SQUMAT_TPOSE_I
03202 #undef GAN_MAT_SADDT_Q
03203 #undef GAN_MAT_SADDT_S
03204 #undef GAN_SQUMATI_MULTV_Q
03205 #undef GAN_SQUMATI_MULTV_S
03206 #undef GAN_SQUMATI_MULTV_I
03207 #undef GAN_SQUMATIT_MULTV_Q
03208 #undef GAN_SQUMATIT_MULTV_S
03209 #undef GAN_SQUMATIT_MULTV_I
03210 #undef GAN_SQUMAT_INVERT
03211 #undef GAN_SQUMAT_INVERT_Q
03212 #undef GAN_SQUMAT_INVERT_S
03213 #undef GAN_SQUMAT_INVERT_I
03214 #undef GAN_SQUMAT_ADJOINT_Q
03215 #undef GAN_SQUMAT_ADJOINT_S
03216 #undef GAN_SQUMAT_ADJOINTT_Q
03217 #undef GAN_SQUMAT_ADJOINTT_S
03218 #undef GAN_SQUMAT_DET_Q
03219 #undef GAN_SQUMAT_DET_S
03220 #undef GAN_SQUMAT_TRACE_Q
03221 #undef GAN_SQUMAT_TRACE_S
03222
03235
03236
03237
03238
03239
03240
03241
03242
03243
03244
03245
03246
03247
03248
03249
03250
03251
03252
03253
03254
03255
03266 Gan_SquMatrix33 *gan_ltmat33_zero_q ( const Gan_SquMatrix33 *A );
03267
03284 Gan_SquMatrix33 *gan_ltmat33_copy_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
03285
03303 Gan_SquMatrix33 *gan_ltmat33_scale_q ( Gan_SquMatrix33 *A, double a,
03304 Gan_SquMatrix33 *B );
03305
03313 Gan_SquMatrix33 *gan_ltmat33_scale_i ( Gan_SquMatrix33 *A, double a );
03314
03323 Gan_SquMatrix33 *gan_ltmat33_divide_q ( Gan_SquMatrix33 *A, double a,
03324 Gan_SquMatrix33 *B );
03325
03333 Gan_SquMatrix33 *gan_ltmat33_divide_i ( Gan_SquMatrix33 *A, double a );
03334
03342 Gan_SquMatrix33 *gan_ltmat33_negate_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
03343
03351 Gan_SquMatrix33 *gan_ltmat33_negate_i ( Gan_SquMatrix33 *A );
03352
03360 Gan_SquMatrix33 *gan_ltmat33_unit_i ( Gan_SquMatrix33 *A );
03361
03379 Gan_SquMatrix33 *gan_ltmat33_add_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B, Gan_SquMatrix33 *C );
03380
03389 Gan_SquMatrix33 *gan_ltmat33_add_i1 ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
03390
03399 Gan_SquMatrix33 *gan_ltmat33_add_i2 ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
03400
03409 Gan_SquMatrix33 *gan_ltmat33_increment ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
03410
03428 Gan_SquMatrix33 *gan_ltmat33_sub_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B, Gan_SquMatrix33 *C );
03429
03438 Gan_SquMatrix33 *gan_ltmat33_sub_i1 ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
03439
03448 Gan_SquMatrix33 *gan_ltmat33_sub_i2 ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
03449
03458 Gan_SquMatrix33 *gan_ltmat33_decrement ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
03459
03478 Gan_Vector3 *gan_ltmat33_multv3_q ( const Gan_SquMatrix33 *A, Gan_Vector3 *p,
03479 Gan_Vector3 *q );
03480
03489 Gan_Vector3 *gan_ltmat33_multv3_i ( const Gan_SquMatrix33 *A, Gan_Vector3 *p );
03490
03499 Gan_Vector3 *gan_ltmat33T_multv3_q ( const Gan_SquMatrix33 *A, Gan_Vector3 *p,
03500 Gan_Vector3 *q );
03501
03510 Gan_Vector3 *gan_ltmat33T_multv3_i ( const Gan_SquMatrix33 *A, Gan_Vector3 *p );
03511
03573 Gan_SquMatrix33 *gan_ltmat33_slmultT_q ( Gan_SquMatrix33 *A, const Gan_SquMatrix33 *B );
03574
03584 Gan_SquMatrix33 *gan_ltmat33_slmultT_i ( Gan_SquMatrix33 *A );
03585
03594 Gan_SquMatrix33 *gan_ltmat33_srmultT_q ( const Gan_SquMatrix33 *A, Gan_SquMatrix33 *B );
03595
03605 Gan_SquMatrix33 *gan_ltmat33_srmultT_i ( Gan_SquMatrix33 *A );
03606
03621 double gan_ltmat33_sumsqr_q ( const Gan_SquMatrix33 *A );
03622
03629 double gan_ltmat33_Fnorm_q ( const Gan_SquMatrix33 *A );
03630
03661
03662
03663
03664
03665
03666
03667
03668
03669
03670
03671
03672
03673
03674
03675
03676 #undef GAN_MATTYPE
03677 #undef GAN_MATRIX_TYPE
03678 #undef GAN_SQUMATRIX_TYPE
03679 #undef GAN_VECTOR_TYPE
03680 #undef GAN_MAT_ELEMENT_TYPE
03681 #undef GAN_REALTYPE
03682 #undef GAN_FWRITE_LENDIAN
03683 #undef GAN_FREAD_LENDIAN
03684 #undef GAN_VECTYPE1
03685 #undef GAN_VECTYPE2
03686 #undef GAN_MATTYPEL
03687 #undef GAN_MATTYPER
03688 #undef GAN_SQUMATTYPEL
03689 #undef GAN_SQUMATTYPER
03690 #undef GAN_FIXED_MATRIX_TYPE
03691 #undef GAN_MAT_FPRINT
03692 #undef GAN_MAT_PRINT
03693 #undef GAN_MAT_FSCANF
03694 #undef GAN_MAT_FWRITE
03695 #undef GAN_MAT_FREAD
03696 #undef GAN_MAT_ZERO_Q
03697 #undef GAN_MAT_ZERO_S
03698 #undef GAN_MAT_COPY_Q
03699 #undef GAN_MAT_COPY_S
03700 #undef GAN_MAT_SCALE_Q
03701 #undef GAN_MAT_SCALE_S
03702 #undef GAN_MAT_SCALE_I
03703 #undef GAN_MAT_DIVIDE_Q
03704 #undef GAN_MAT_DIVIDE_S
03705 #undef GAN_MAT_DIVIDE_I
03706 #undef GAN_MAT_NEGATE_Q
03707 #undef GAN_MAT_NEGATE_S
03708 #undef GAN_MAT_NEGATE_I
03709 #undef GAN_MAT_UNIT_Q
03710 #undef GAN_MAT_UNIT_S
03711 #undef GAN_MAT_UNIT_I
03712 #undef GAN_MAT_ADD_Q
03713 #undef GAN_MAT_ADD_I1
03714 #undef GAN_MAT_ADD_I2
03715 #undef GAN_MAT_INCREMENT
03716 #undef GAN_MAT_ADD_S
03717 #undef GAN_MAT_SUB_Q
03718 #undef GAN_MAT_SUB_I1
03719 #undef GAN_MAT_SUB_I2
03720 #undef GAN_MAT_DECREMENT
03721 #undef GAN_MAT_SUB_S
03722 #undef GAN_VEC_OUTER_Q
03723 #undef GAN_VEC_OUTER_S
03724 #undef GAN_MAT_MULTV_Q
03725 #undef GAN_MAT_MULTV_S
03726 #undef GAN_MAT_MULTV_I
03727 #undef GAN_MATT_MULTV_Q
03728 #undef GAN_MATT_MULTV_S
03729 #undef GAN_MATT_MULTV_I
03730 #undef GAN_MAT_LMULTM_Q
03731 #undef GAN_MAT_LMULTM_S
03732 #undef GAN_MAT_LMULTMT_Q
03733 #undef GAN_MAT_LMULTMT_S
03734 #undef GAN_MAT_RMULTM_Q
03735 #undef GAN_MAT_RMULTM_S
03736 #undef GAN_MAT_RMULTMT_Q
03737 #undef GAN_MAT_RMULTMT_S
03738 #undef GAN_MAT_LMULTMT_SYM_Q
03739 #undef GAN_MAT_LMULTMT_SYM_S
03740 #undef GAN_MAT_RMULTMT_SYM_Q
03741 #undef GAN_MAT_RMULTMT_SYM_S
03742 #undef GAN_MAT_LMULTS_Q
03743 #undef GAN_MAT_LMULTS_S
03744 #undef GAN_MAT_RMULTS_Q
03745 #undef GAN_MAT_RMULTS_S
03746 #undef GAN_SYMMATL_LRMULT_Q
03747 #undef GAN_SYMMATL_LRMULT_S
03748 #undef GAN_SYMMATR_LRMULT_Q
03749 #undef GAN_SYMMATR_LRMULT_S
03750 #undef GAN_MAT_LMULTL_Q
03751 #undef GAN_MAT_LMULTL_S
03752 #undef GAN_MAT_LMULTL_I
03753 #undef GAN_MAT_LMULTLI_Q
03754 #undef GAN_MAT_LMULTLI_S
03755 #undef GAN_MAT_LMULTLI_I
03756 #undef GAN_MAT_LMULTLT_Q
03757 #undef GAN_MAT_LMULTLT_S
03758 #undef GAN_MAT_LMULTLT_I
03759 #undef GAN_MAT_LMULTLIT_Q
03760 #undef GAN_MAT_LMULTLIT_S
03761 #undef GAN_MAT_LMULTLIT_I
03762 #undef GAN_MAT_RMULTL_Q
03763 #undef GAN_MAT_RMULTL_S
03764 #undef GAN_MAT_RMULTL_I
03765 #undef GAN_MAT_RMULTLI_Q
03766 #undef GAN_MAT_RMULTLI_S
03767 #undef GAN_MAT_RMULTLI_I
03768 #undef GAN_MAT_RMULTLT_Q
03769 #undef GAN_MAT_RMULTLT_S
03770 #undef GAN_MAT_RMULTLT_I
03771 #undef GAN_MAT_RMULTLIT_Q
03772 #undef GAN_MAT_RMULTLIT_S
03773 #undef GAN_MAT_RMULTLIT_I
03774 #undef GAN_MAT_SRMULTT_Q
03775 #undef GAN_MAT_SRMULTT_S
03776 #undef GAN_MAT_SRMULTT_I
03777 #undef GAN_MAT_SLMULTT_Q
03778 #undef GAN_MAT_SLMULTT_S
03779 #undef GAN_MAT_SLMULTT_I
03780 #undef GAN_MAT_RMULTLIT_S
03781 #undef GAN_MAT_SUMSQR_Q
03782 #undef GAN_MAT_SUMSQR_S
03783 #undef GAN_MAT_FNORM_Q
03784 #undef GAN_MAT_FNORM_S
03785 #undef GAN_MAT_FROM_MAT_Q
03786 #undef GAN_MAT_FROM_MAT_S
03787 #undef GAN_MAT_FROM_SQUMAT_Q
03788 #undef GAN_MAT_FROM_SQUMAT_S
03789 #undef GAN_SQUMAT_FROM_SQUMAT_Q
03790 #undef GAN_SQUMAT_FROM_SQUMAT_S
03791
03792
03806
03807
03808
03809
03810
03811
03812
03813
03814
03815
03816
03817
03818
03819
03820
03821 #define GAN_MATTYPE Gan_SquMatrix33
03822 #define GAN_MATRIX_TYPE Gan_SquMatrix
03823 #define GAN_SQUMATRIX_TYPE Gan_SquMatrix
03824 #define GAN_VECTOR_TYPE Gan_Vector
03825 #define GAN_MAT_ELEMENT_TYPE GAN_DOUBLE
03826 #define GAN_REALTYPE double
03827 #define GAN_MAT_FPRINT gan_ltmat33T_fprint
03828 #define GAN_MAT_PRINT gan_ltmat33T_print
03829 #define GAN_MAT_FSCANF gan_ltmat33T_fscanf
03830 #define GAN_FIXED_MATRIX_TYPE GAN_LOWER_TRI_MATRIX33
03831
03832 #define gan_ltmat33T_fwrite gan_ltmat33_fwrite
03833 #define gan_ltmat33T_fread gan_ltmat33_fread
03834
03847
03848
03849
03850
03851
03852
03853
03854
03855
03856
03857
03858
03859
03860
03861
03862
03863
03864
03865
03866
03867
03868
03935 #undef GAN_SQUMAT_IDENT_Q
03936 #undef GAN_SQUMAT_IDENT_S
03937 #undef GAN_SQUMAT_TPOSE_Q
03938 #undef GAN_SQUMAT_TPOSE_S
03939 #undef GAN_SQUMAT_TPOSE_I
03940 #undef GAN_MAT_SADDT_Q
03941 #undef GAN_MAT_SADDT_S
03942 #undef GAN_SQUMATI_MULTV_Q
03943 #undef GAN_SQUMATI_MULTV_S
03944 #undef GAN_SQUMATI_MULTV_I
03945 #undef GAN_SQUMATIT_MULTV_Q
03946 #undef GAN_SQUMATIT_MULTV_S
03947 #undef GAN_SQUMATIT_MULTV_I
03948 #undef GAN_SQUMAT_INVERT
03949 #undef GAN_SQUMAT_INVERT_Q
03950 #undef GAN_SQUMAT_INVERT_S
03951 #undef GAN_SQUMAT_INVERT_I
03952 #undef GAN_SQUMAT_ADJOINT_Q
03953 #undef GAN_SQUMAT_ADJOINT_S
03954 #undef GAN_SQUMAT_ADJOINTT_Q
03955 #undef GAN_SQUMAT_ADJOINTT_S
03956 #undef GAN_SQUMAT_DET_Q
03957 #undef GAN_SQUMAT_DET_S
03958 #undef GAN_SQUMAT_TRACE_Q
03959 #undef GAN_SQUMAT_TRACE_S
03960
03973
03974
03975
03976
03977
03978
03979
03980
03981
03982
03983
03984
03985
03986
03987
03988
03989
03990
03991
03992
03993
04164
04165
04166
04167
04168
04169
04170
04171
04172
04173
04174
04175
04176
04177
04178
04179 #undef GAN_MATTYPE
04180 #undef GAN_MATRIX_TYPE
04181 #undef GAN_SQUMATRIX_TYPE
04182 #undef GAN_VECTOR_TYPE
04183 #undef GAN_MAT_ELEMENT_TYPE
04184 #undef GAN_REALTYPE
04185 #undef GAN_FWRITE_LENDIAN
04186 #undef GAN_FREAD_LENDIAN
04187 #undef GAN_VECTYPE1
04188 #undef GAN_VECTYPE2
04189 #undef GAN_MATTYPEL
04190 #undef GAN_MATTYPER
04191 #undef GAN_SQUMATTYPEL
04192 #undef GAN_SQUMATTYPER
04193 #undef GAN_FIXED_MATRIX_TYPE
04194 #undef GAN_MAT_FPRINT
04195 #undef GAN_MAT_PRINT
04196 #undef GAN_MAT_FSCANF
04197 #undef GAN_MAT_FWRITE
04198 #undef GAN_MAT_FREAD
04199 #undef GAN_MAT_ZERO_Q
04200 #undef GAN_MAT_ZERO_S
04201 #undef GAN_MAT_COPY_Q
04202 #undef GAN_MAT_COPY_S
04203 #undef GAN_MAT_SCALE_Q
04204 #undef GAN_MAT_SCALE_S
04205 #undef GAN_MAT_SCALE_I
04206 #undef GAN_MAT_DIVIDE_Q
04207 #undef GAN_MAT_DIVIDE_S
04208 #undef GAN_MAT_DIVIDE_I
04209 #undef GAN_MAT_NEGATE_Q
04210 #undef GAN_MAT_NEGATE_S
04211 #undef GAN_MAT_NEGATE_I
04212 #undef GAN_MAT_UNIT_Q
04213 #undef GAN_MAT_UNIT_S
04214 #undef GAN_MAT_UNIT_I
04215 #undef GAN_MAT_ADD_Q
04216 #undef GAN_MAT_ADD_I1
04217 #undef GAN_MAT_ADD_I2
04218 #undef GAN_MAT_INCREMENT
04219 #undef GAN_MAT_ADD_S
04220 #undef GAN_MAT_SUB_Q
04221 #undef GAN_MAT_SUB_I1
04222 #undef GAN_MAT_SUB_I2
04223 #undef GAN_MAT_DECREMENT
04224 #undef GAN_MAT_SUB_S
04225 #undef GAN_VEC_OUTER_Q
04226 #undef GAN_VEC_OUTER_S
04227 #undef GAN_MAT_MULTV_Q
04228 #undef GAN_MAT_MULTV_S
04229 #undef GAN_MAT_MULTV_I
04230 #undef GAN_MATT_MULTV_Q
04231 #undef GAN_MATT_MULTV_S
04232 #undef GAN_MATT_MULTV_I
04233 #undef GAN_MAT_LMULTM_Q
04234 #undef GAN_MAT_LMULTM_S
04235 #undef GAN_MAT_LMULTMT_Q
04236 #undef GAN_MAT_LMULTMT_S
04237 #undef GAN_MAT_RMULTM_Q
04238 #undef GAN_MAT_RMULTM_S
04239 #undef GAN_MAT_RMULTMT_Q
04240 #undef GAN_MAT_RMULTMT_S
04241 #undef GAN_MAT_LMULTMT_SYM_Q
04242 #undef GAN_MAT_LMULTMT_SYM_S
04243 #undef GAN_MAT_RMULTMT_SYM_Q
04244 #undef GAN_MAT_RMULTMT_SYM_S
04245 #undef GAN_MAT_LMULTS_Q
04246 #undef GAN_MAT_LMULTS_S
04247 #undef GAN_MAT_RMULTS_Q
04248 #undef GAN_MAT_RMULTS_S
04249 #undef GAN_SYMMATL_LRMULT_Q
04250 #undef GAN_SYMMATL_LRMULT_S
04251 #undef GAN_SYMMATR_LRMULT_Q
04252 #undef GAN_SYMMATR_LRMULT_S
04253 #undef GAN_MAT_LMULTL_Q
04254 #undef GAN_MAT_LMULTL_S
04255 #undef GAN_MAT_LMULTL_I
04256 #undef GAN_MAT_LMULTLI_Q
04257 #undef GAN_MAT_LMULTLI_S
04258 #undef GAN_MAT_LMULTLI_I
04259 #undef GAN_MAT_LMULTLT_Q
04260 #undef GAN_MAT_LMULTLT_S
04261 #undef GAN_MAT_LMULTLT_I
04262 #undef GAN_MAT_LMULTLIT_Q
04263 #undef GAN_MAT_LMULTLIT_S
04264 #undef GAN_MAT_LMULTLIT_I
04265 #undef GAN_MAT_RMULTL_Q
04266 #undef GAN_MAT_RMULTL_S
04267 #undef GAN_MAT_RMULTL_I
04268 #undef GAN_MAT_RMULTLI_Q
04269 #undef GAN_MAT_RMULTLI_S
04270 #undef GAN_MAT_RMULTLI_I
04271 #undef GAN_MAT_RMULTLT_Q
04272 #undef GAN_MAT_RMULTLT_S
04273 #undef GAN_MAT_RMULTLT_I
04274 #undef GAN_MAT_RMULTLIT_Q
04275 #undef GAN_MAT_RMULTLIT_S
04276 #undef GAN_MAT_RMULTLIT_I
04277 #undef GAN_MAT_SRMULTT_Q
04278 #undef GAN_MAT_SRMULTT_S
04279 #undef GAN_MAT_SRMULTT_I
04280 #undef GAN_MAT_SLMULTT_Q
04281 #undef GAN_MAT_SLMULTT_S
04282 #undef GAN_MAT_SLMULTT_I
04283 #undef GAN_MAT_RMULTLIT_S
04284 #undef GAN_MAT_SUMSQR_Q
04285 #undef GAN_MAT_SUMSQR_S
04286 #undef GAN_MAT_FNORM_Q
04287 #undef GAN_MAT_FNORM_S
04288 #undef GAN_MAT_FROM_MAT_Q
04289 #undef GAN_MAT_FROM_MAT_S
04290 #undef GAN_MAT_FROM_SQUMAT_Q
04291 #undef GAN_MAT_FROM_SQUMAT_S
04292 #undef GAN_SQUMAT_FROM_SQUMAT_Q
04293 #undef GAN_SQUMAT_FROM_SQUMAT_S
04294
04303 #ifdef __cplusplus
04304 }
04305 #endif
04306
04307 #endif