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

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 00452 00453 typedef struct Gan_Matrix33 00454 { 00455 double xx, xy, xz, 00456 yx, yy, yz, 00457 zx, zy, zz; 00458 } Gan_Matrix33; 00459 00460 #ifndef NDEBUG 00461 00462 typedef enum { GAN_SYMMETRIC_MATRIX33, GAN_LOWER_TRI_MATRIX33 } 00463 Gan_SquMatrix33Type; 00464 #endif 00465 00467 typedef struct Gan_SquMatrix33 00468 { 00469 #ifndef NDEBUG 00470
00471 Gan_SquMatrix33Type type; 00472 #endif 00473 00474
00475 double xx, 00476 yx, yy, 00477 zx, zy, zz; 00478 } Gan_SquMatrix33; 00479 00480 00481 #define GAN_ST33_FILL(A,t,XX,YX,YY,ZX,ZY,ZZ)
00482 (GAN_TEST_OP1(A,Gan_SquMatrix33),gan_eval((A)->type=t),
00483 GAN_FREP33L_A_C((A)->,=,(XX),(YX),(YY),(ZX),(ZY),(ZZ))) 00484 #define GAN_ST33_IDENT(A,t)
00485 (GAN_TEST_OP1(A,Gan_SquMatrix33),gan_eval((A)->type=t),
00486 GAN_FREP33L_A_C((A)->,=,1.0,0.0,1.0,0.0,0.0,1.0)) 00487 00488 00489 #define GAN_MAT33_MULT1D(a,b,c,p1,p2,p3,q1,q2,q3)
00490 (a p1 = GAN_REP3_OP_AB(b,* c,xx,xy,xz,q1,q2,q3,+),
00491 a p2 = GAN_REP3_OP_AB(b,* c,yx,yy,yz,q1,q2,q3,+),
00492 a p3 = GAN_REP3_OP_AB(b,* c,zx,zy,zz,q1,q2,q3,+)) 00493 #define GAN_MAT33T_MULT1D(a,b,c,p1,p2,p3,q1,q2,q3)
00494 (a p1 = GAN_REP3_OP_AB(b,* c,xx,yx,zx,q1,q2,q3,+),
00495 a p2 = GAN_REP3_OP_AB(b,* c,xy,yy,zy,q1,q2,q3,+),
00496 a p3 = GAN_REP3_OP_AB(b,* c,xz,yz,zz,q1,q2,q3,+)) 00497 00498 00499 #define GAN_SYM33_MULT1D(a,b,c,p1,p2,p3,q1,q2,q3)
00500 (a p1 = GAN_REP3_OP_AB(b,* c,xx,yx,zx,q1,q2,q3,+),
00501 a p2 = GAN_REP3_OP_AB(b,* c,yx,yy,zy,q1,q2,q3,+),
00502 a p3 = GAN_REP3_OP_AB(b,* c,zx,zy,zz,q1,q2,q3,+)) 00503 00504 00505 #define GAN_LOW33_MULT1D(a,b,c,p1,p2,p3,q1,q2,q3)
00506 (a p3 = GAN_REP3_OP_AB(b,* c,zx,zy,zz,q1,q2,q3,+),
00507 a p2 = GAN_REP2_OP_AB(b,* c,yx,yy,q1,q2,+),
00508 a p1 = GAN_REP1_OP_AB(b,* c,xx,q1,+)) 00509 #define GAN_LOW33I_MULT1D(a,b,c,p1,p2,p3,q1,q2,q3)
00510 (a p1 = c q1 / b xx,
00511 a p2 = (c q2 - b yx * a p1) / b yy,
00512 a p3 = (c q3 - b zx * a p1 - b zy * a p2) / b zz) 00513 00514 00515 #define GAN_UPP33_MULT1D(a,b,c,p1,p2,p3,q1,q2,q3)
00516 (a p1 = GAN_REP3_OP_AB(b,* c,xx,yx,zx,q1,q2,q3,+),
00517 a p2 = GAN_REP2_OP_AB(b,* c,yy,zy,q2,q3,+),
00518 a p3 = GAN_REP1_OP_AB(b,* c,zz,q3,+)) 00519 #define GAN_UPP33I_MULT1D(a,b,c,p1,p2,p3,q1,q2,q3)
00520 (a p3 = c q3 / b zz,
00521 a p2 = (c q2 - b zy * a p3) / b yy,
00522 a p1 = (c q1 - b yx * a p2 - b zx * a p3) / b xx) 00523 00524 00525 #define GAN_ST33_ZERO(A,t)
00526 (GAN_TEST_OP1(A,Gan_SquMatrix33), gan_eval((A)->type=t),
00527 GAN_REP33L_AS_C((A)->,=0.0)) 00528 #define GAN_ST33_COPY(A,B,t)
00529 (GAN_TEST_OP2(A,B,Gan_SquMatrix33,Gan_SquMatrix33),
00530 assert((A)->type==t), gan_eval((B)->type=(A)->type),
00531 GAN_REP33L_AA_C((B)->,=(A)->)) 00532 #define GAN_ST33_SCALE(A,a,B,t)
00533 (GAN_TEST_OP2(A,B,Gan_SquMatrix33,Gan_SquMatrix33),
00534 assert((A)->type==t), gan_eval((B)->type=(A)->type),
00535 GAN_REP33L_AAS_C((B)->,=(A)->,*(a))) 00536 #define GAN_ST33_DIVIDE(A,a,B,t)
00537 (GAN_TEST_OP2(A,B,Gan_SquMatrix33,Gan_SquMatrix33),
00538 assert((A)->type==t), gan_eval((B)->type=(A)->type),
00539 GAN_REP33L_AAS_C((B)->,=(A)->,/(a))) 00540 #define GAN_ST33_NEGATE(A,B,t)
00541 (GAN_TEST_OP2(A,B,Gan_SquMatrix33,Gan_SquMatrix33),
00542 assert((A)->type==t), gan_eval((B)->type=(A)->type),
00543 GAN_REP33L_AA_C((B)->,=-(A)->)) 00544 #define GAN_ST33_ADD(A,B,C,t)
00545 (GAN_TEST_OP3(A,B,C,Gan_SquMatrix33,Gan_SquMatrix33,Gan_SquMatrix33),
00546 assert((A)->type==t && (B)->type==t), gan_eval((C)->type=(A)->type),
00547 GAN_REP33L_AAA_C((C)->,=(A)->,+(B)->)) 00548 #define GAN_ST33_SUB(A,B,C,t)
00549 (GAN_TEST_OP3(A,B,C,Gan_SquMatrix33,Gan_SquMatrix33,Gan_SquMatrix33),
00550 assert((A)->type==t && (B)->type==t), gan_eval((C)->type=(A)->type),
00551 GAN_REP33L_AAA_C((C)->,=(A)->,-(B)->)) 00552 00553 00567 00568 00569 00570 00571 00572 00573 00574 00575 00576 00577 00578 00579 00580 00581 00582 #ifndef _GAN_3X3MAT_H 00583 00600 Gan_Matrix33 *gan_mat33_fill_q ( Gan_Matrix33 *A, 00601 double XX, double XY, double XZ, 00602 double YX, double YY, double YZ, 00603 double ZX, double ZY, double ZZ ); 00604 00629 Gan_Matrix33 *gan_mat33_cross_q ( const Gan_Vector3 *p, const Gan_Matrix33 *A ); 00630 00652 void gan_mat33_get_rows_q ( const Gan_Matrix33 *A, 00653 Gan_Vector3 *p, Gan_Vector3 *q, Gan_Vector3 *r ); 00654 00666 void gan_mat33_get_cols_q ( const Gan_Matrix33 *A, 00667 Gan_Vector3 *p, Gan_Vector3 *q, Gan_Vector3 *r ); 00668 00676 Gan_Matrix22 *gan_mat33_get_m22tl_q ( const Gan_Matrix33 *A, Gan_Matrix22 *B ); 00677 00685 Gan_Vector2 *gan_mat33_get_v2tr_q ( const Gan_Matrix33 *A, Gan_Vector2 *p ); 00686 00700 void gan_mat33_get_parts_q ( const Gan_Matrix33 *A, Gan_Matrix22 *B, 00701 Gan_Vector2 *p, Gan_Vector2 *q, double *s ); 00702 00725 Gan_Matrix33 *gan_mat33_set_parts_q ( Gan_Matrix33 *A, const Gan_Matrix22 *B, 00726 const Gan_Vector2 *p, const Gan_Vector2 *q, 00727 double s ); 00728 00740 Gan_Matrix33 *gan_mat33_set_cols_q ( Gan_Matrix33 *A, 00741 const Gan_Vector3 *p, const Gan_Vector3 *q, 00742 const Gan_Vector3 *r ); 00743 00756 Gan_Matrix33 *gan_mat33_set_rows_q ( Gan_Matrix33 *A, 00757 const Gan_Vector3 *p, const Gan_Vector3 *q, 00758 const Gan_Vector3 *r ); 00759 00765 #endif 00766 00767 #define GAN_MATTYPE Gan_Matrix33 00768 #define GAN_MATRIX_TYPE Gan_Matrix 00769 #define GAN_SQUMATRIX_TYPE Gan_SquMatrix 00770 #define GAN_VECTOR_TYPE Gan_Vector 00771 #define GAN_MAT_ELEMENT_TYPE GAN_DOUBLE 00772 #define GAN_REALTYPE double 00773 #define GAN_FWRITE_LENDIAN gan_fwrite_lendian_f64 00774 #define GAN_FREAD_LENDIAN gan_fread_lendian_f64 00775 #define GAN_VECTYPE1 Gan_Vector3 00776 #define GAN_VECTYPE2 Gan_Vector3 00777 #define GAN_MATTYPEL Gan_Matrix33 00778 #define GAN_MATTYPER Gan_Matrix33 00779 #define GAN_SQUMATTYPEL Gan_SquMatrix33 00780 #define GAN_SQUMATTYPER Gan_SquMatrix33 00781 #define GAN_MAT_FPRINT gan_mat33_fprint 00782 #define GAN_MAT_PRINT gan_mat33_print 00783 #define GAN_MAT_FSCANF gan_mat33_fscanf 00784 #define GAN_MAT_FWRITE gan_mat33_fwrite 00785 #define GAN_MAT_FREAD gan_mat33_fread 00786 #define GAN_MAT_ZERO_Q gan_mat33_zero_q 00787 #define GAN_MAT_ZERO_S gan_mat33_zero_s 00788 #define GAN_MAT_COPY_Q gan_mat33_copy_q 00789 #define GAN_MAT_COPY_S gan_mat33_copy_s 00790 #define GAN_MAT_SCALE_Q gan_mat33_scale_q 00791 #define GAN_MAT_SCALE_I gan_mat33_scale_i 00792 #define GAN_MAT_SCALE_S gan_mat33_scale_s 00793 #define GAN_MAT_DIVIDE_Q gan_mat33_divide_q 00794 #define GAN_MAT_DIVIDE_I gan_mat33_divide_i 00795 #define GAN_MAT_DIVIDE_S gan_mat33_divide_s 00796 #define GAN_MAT_NEGATE_Q gan_mat33_negate_q 00797 #define GAN_MAT_NEGATE_I gan_mat33_negate_i 00798 #define GAN_MAT_NEGATE_S gan_mat33_negate_s 00799 #define GAN_MAT_UNIT_Q gan_mat33_unit_q 00800 #define GAN_MAT_UNIT_I gan_mat33_unit_i 00801 #define GAN_MAT_UNIT_S gan_mat33_unit_s 00802 #define GAN_MAT_ADD_Q gan_mat33_add_q 00803 #define GAN_MAT_ADD_I1 gan_mat33_add_i1 00804 #define GAN_MAT_ADD_I2 gan_mat33_add_i2 00805 #define GAN_MAT_INCREMENT gan_mat33_increment 00806 #define GAN_MAT_ADD_S gan_mat33_add_s 00807 #define GAN_MAT_SUB_Q gan_mat33_sub_q 00808 #define GAN_MAT_SUB_I1 gan_mat33_sub_i1 00809 #define GAN_MAT_SUB_I2 gan_mat33_sub_i2 00810 #define GAN_MAT_DECREMENT gan_mat33_decrement 00811 #define GAN_MAT_SUB_S gan_mat33_sub_s 00812 #define GAN_VEC_OUTER_Q gan_vec33_outer_q 00813 #define GAN_VEC_OUTER_S gan_vec33_outer_s 00814 #define GAN_MAT_MULTV_Q gan_mat33_multv3_q 00815 #define GAN_MAT_MULTV_S gan_mat33_multv3_s 00816 #define GAN_MATT_MULTV_Q gan_mat33T_multv3_q 00817 #define GAN_MATT_MULTV_S gan_mat33T_multv3_s 00818 #define GAN_MAT_LMULTMT_Q gan_mat33_lmultm33T_q 00819 #define GAN_MAT_LMULTMT_S gan_mat33_lmultm33T_s 00820 #define GAN_MAT_RMULTM_Q gan_mat33_rmultm33_q 00821 #define GAN_MAT_RMULTM_S gan_mat33_rmultm33_s 00822 #define GAN_MAT_RMULTMT_Q gan_mat33_rmultm33T_q 00823 #define GAN_MAT_RMULTMT_S gan_mat33_rmultm33T_s 00824 #define GAN_MAT_LMULTMT_SYM_Q gan_mat33_lmultm33T_sym_q 00825 #define GAN_MAT_LMULTMT_SYM_S gan_mat33_lmultm33T_sym_s 00826 #define GAN_MAT_RMULTMT_SYM_Q gan_mat33_rmultm33T_sym_q 00827 #define GAN_MAT_RMULTMT_SYM_S gan_mat33_rmultm33T_sym_s 00828 #define GAN_MAT_SLMULTT_Q gan_mat33_slmultT_q 00829 #define GAN_MAT_SLMULTT_S gan_mat33_slmultT_s 00830 #define GAN_MAT_SRMULTT_Q gan_mat33_srmultT_q 00831 #define GAN_MAT_SRMULTT_S gan_mat33_srmultT_s 00832 #define GAN_MAT_LMULTS_Q gan_mat33_lmults33_q 00833 #define GAN_MAT_LMULTS_S gan_mat33_lmults33_s 00834 #define GAN_MAT_RMULTS_Q gan_mat33_rmults33_q 00835 #define GAN_MAT_RMULTS_S gan_mat33_rmults33_s 00836 #define GAN_SYMMATL_LRMULT_Q gan_symmat33_lrmultm33T_q 00837 #define GAN_SYMMATL_LRMULT_S gan_symmat33_lrmultm33T_s 00838 #define GAN_SYMMATR_LRMULT_Q gan_symmat33_lrmultm33_q 00839 #define GAN_SYMMATR_LRMULT_S gan_symmat33_lrmultm33_s 00840 #define GAN_MAT_LMULTL_Q gan_mat33_lmultl33_q 00841 #define GAN_MAT_LMULTL_S gan_mat33_lmultl33_s 00842 #define GAN_MAT_LMULTL_I gan_mat33_lmultl33_i 00843 #define GAN_MAT_LMULTLI_Q gan_mat33_lmultl33I_q 00844 #define GAN_MAT_LMULTLI_S gan_mat33_lmultl33I_s 00845 #define GAN_MAT_LMULTLI_I gan_mat33_lmultl33I_i 00846 #define GAN_MAT_LMULTLT_Q gan_mat33_lmultl33T_q 00847 #define GAN_MAT_LMULTLT_S gan_mat33_lmultl33T_s 00848 #define GAN_MAT_LMULTLT_I gan_mat33_lmultl33T_i 00849 #define GAN_MAT_LMULTLIT_Q gan_mat33_lmultl33IT_q 00850 #define GAN_MAT_LMULTLIT_S gan_mat33_lmultl33IT_s 00851 #define GAN_MAT_LMULTLIT_I gan_mat33_lmultl33IT_i 00852 #define GAN_MAT_RMULTL_Q gan_mat33_rmultl33_q 00853 #define GAN_MAT_RMULTL_S gan_mat33_rmultl33_s 00854 #define GAN_MAT_RMULTL_I gan_mat33_rmultl33_i 00855 #define GAN_MAT_RMULTLI_Q gan_mat33_rmultl33I_q 00856 #define GAN_MAT_RMULTLI_S gan_mat33_rmultl33I_s 00857 #define GAN_MAT_RMULTLI_I gan_mat33_rmultl33I_i 00858 #define GAN_MAT_RMULTLT_Q gan_mat33_rmultl33T_q 00859 #define GAN_MAT_RMULTLT_S gan_mat33_rmultl33T_s 00860 #define GAN_MAT_RMULTLT_I gan_mat33_rmultl33T_i 00861 #define GAN_MAT_RMULTLIT_Q gan_mat33_rmultl33IT_q 00862 #define GAN_MAT_RMULTLIT_S gan_mat33_rmultl33IT_s 00863 #define GAN_MAT_RMULTLIT_I gan_mat33_rmultl33IT_i 00864 #define GAN_MAT_SUMSQR_Q gan_mat33_sumsqr_q 00865 #define GAN_MAT_SUMSQR_S gan_mat33_sumsqr_s 00866 #define GAN_MAT_FNORM_Q gan_mat33_Fnorm_q 00867 #define GAN_MAT_FNORM_S gan_mat33_Fnorm_s 00868 #define GAN_MAT_FROM_MAT_Q gan_mat33_from_mat_q 00869 #define GAN_MAT_FROM_MAT_S gan_mat33_from_mat_s 00870 #define GAN_MAT_FROM_SQUMAT_Q gan_mat33_from_squmat_q 00871 #define GAN_MAT_FROM_SQUMAT_S gan_mat33_from_squmat_s 00872 #define GAN_SQUMAT_FROM_SQUMAT_Q gan_squmat33_from_squmat_q 00873 #define GAN_SQUMAT_FROM_SQUMAT_S gan_squmat33_from_squmat_s 00874 00875 #define GAN_SQUMAT_IDENT_Q gan_mat33_ident_q 00876 #define GAN_SQUMAT_IDENT_S gan_mat33_ident_s 00877 #define GAN_SQUMAT_TPOSE_Q gan_mat33_tpose_q 00878 #define GAN_SQUMAT_TPOSE_S gan_mat33_tpose_s 00879 #define GAN_SQUMAT_TPOSE_I gan_mat33_tpose_i 00880 #define GAN_MAT_SADDT_Q gan_mat33_saddT_q 00881 #define GAN_MAT_SADDT_S gan_mat33_saddT_s 00882 #define GAN_SQUMAT_INVERT gan_mat33_invert 00883 #define GAN_SQUMAT_INVERT_Q gan_mat33_invert_q 00884 #define GAN_SQUMAT_INVERT_S gan_mat33_invert_s 00885 #define GAN_SQUMAT_INVERT_I gan_mat33_invert_i 00886 #define GAN_SQUMAT_ADJOINT_Q gan_mat33_adjoint_q 00887 #define GAN_SQUMAT_ADJOINT_S gan_mat33_adjoint_s 00888 #define GAN_SQUMAT_ADJOINTT_Q gan_mat33_adjointT_q 00889 #define GAN_SQUMAT_ADJOINTT_S gan_mat33_adjointT_s 00890 #define GAN_SQUMAT_DET_Q gan_mat33_det_q 00891 #define GAN_SQUMAT_DET_S gan_mat33_det_s 00892 #define GAN_SQUMAT_TRACE_Q gan_mat33_trace_q 00893 #define GAN_SQUMAT_TRACE_S gan_mat33_trace_s 00894 00895 #ifndef _GAN_3X3MAT_H 00896 #define _GAN_3X3MAT_H 00897 00898 00899 #endif 00900 00913 00914 00915 00916 00917 00918 00919 00920 00921 00922 00923 00924 00925 00926 00927 00928 00929 00930 00931 00932 00933 00934 00947 Gan_Matrix33 *gan_mat33_ident_q ( Gan_Matrix33 *A ); 00948 00966 Gan_Matrix33 *gan_mat33_tpose_q ( Gan_Matrix33 *A, Gan_Matrix33 *B ); 00967 00985 Gan_SquMatrix33 *gan_mat33_saddT_q ( const Gan_Matrix33 *A, Gan_SquMatrix33 *B ); 00986 01017 Gan_Matrix33 *gan_mat33_invert_q ( Gan_Matrix33 *A, Gan_Matrix33 *B ); 01018 01027 Gan_Matrix33 *gan_mat33_invert_i ( Gan_Matrix33 *A ); 01028 01043 double gan_mat33_det_q ( const Gan_Matrix33 *A ); 01044 01050 double gan_mat33_trace_q ( const Gan_Matrix33 *A ); 01051 01057 #undef GAN_SQUMAT_IDENT_Q 01058 #undef GAN_SQUMAT_IDENT_S 01059 #undef GAN_SQUMAT_TPOSE_Q 01060 #undef GAN_SQUMAT_TPOSE_S 01061 #undef GAN_SQUMAT_TPOSE_I 01062 #undef GAN_MAT_SADDT_Q 01063 #undef GAN_MAT_SADDT_S 01064 #undef GAN_SQUMATI_MULTV_Q 01065 #undef GAN_SQUMATI_MULTV_S 01066 #undef GAN_SQUMATI_MULTV_I 01067 #undef GAN_SQUMATIT_MULTV_Q 01068 #undef GAN_SQUMATIT_MULTV_S 01069 #undef GAN_SQUMATIT_MULTV_I 01070 #undef GAN_SQUMAT_INVERT 01071 #undef GAN_SQUMAT_INVERT_Q 01072 #undef GAN_SQUMAT_INVERT_S 01073 #undef GAN_SQUMAT_INVERT_I 01074 #undef GAN_SQUMAT_ADJOINT_Q 01075 #undef GAN_SQUMAT_ADJOINT_S 01076 #undef GAN_SQUMAT_ADJOINTT_Q 01077 #undef GAN_SQUMAT_ADJOINTT_S 01078 #undef GAN_SQUMAT_DET_Q 01079 #undef GAN_SQUMAT_DET_S 01080 #undef GAN_SQUMAT_TRACE_Q 01081 #undef GAN_SQUMAT_TRACE_S 01082 01095 01096 01097 01098 01099 01100 01101 01102 01103 01104 01105 01106 01107 01108 01109 01110 01111 01112 01113 01114 01115 01126 Gan_Matrix33 *gan_mat33_zero_q ( const Gan_Matrix33 *A ); 01127 01144 Gan_Matrix33 *gan_mat33_copy_q ( Gan_Matrix33 *A, Gan_Matrix33 *B ); 01145 01163 Gan_Matrix33 *gan_mat33_scale_q ( Gan_Matrix33 *A, double a, 01164 Gan_Matrix33 *B ); 01165 01173 Gan_Matrix33 *gan_mat33_scale_i ( Gan_Matrix33 *A, double a ); 01174 01183 Gan_Matrix33 *gan_mat33_divide_q ( Gan_Matrix33 *A, double a, 01184 Gan_Matrix33 *B ); 01185 01193 Gan_Matrix33 *gan_mat33_divide_i ( Gan_Matrix33 *A, double a ); 01194 01202 Gan_Matrix33 *gan_mat33_negate_q ( Gan_Matrix33 *A, Gan_Matrix33 *B ); 01203 01211 Gan_Matrix33 *gan_mat33_negate_i ( Gan_Matrix33 *A ); 01212 01220 Gan_Matrix33 *gan_mat33_unit_i ( Gan_Matrix33 *A ); 01221 01239 Gan_Matrix33 *gan_mat33_add_q ( Gan_Matrix33 *A, Gan_Matrix33 *B, Gan_Matrix33 *C ); 01240 01249 Gan_Matrix33 *gan_mat33_add_i1 ( Gan_Matrix33 *A, Gan_Matrix33 *B ); 01250 01259 Gan_Matrix33 *gan_mat33_add_i2 ( Gan_Matrix33 *A, Gan_Matrix33 *B ); 01260 01269 Gan_Matrix33 *gan_mat33_increment ( Gan_Matrix33 *A, Gan_Matrix33 *B ); 01270 01288 Gan_Matrix33 *gan_mat33_sub_q ( Gan_Matrix33 *A, Gan_Matrix33 *B, Gan_Matrix33 *C ); 01289 01298 Gan_Matrix33 *gan_mat33_sub_i1 ( Gan_Matrix33 *A, Gan_Matrix33 *B ); 01299 01308 Gan_Matrix33 *gan_mat33_sub_i2 ( Gan_Matrix33 *A, Gan_Matrix33 *B ); 01309 01318 Gan_Matrix33 *gan_mat33_decrement ( Gan_Matrix33 *A, Gan_Matrix33 *B ); 01319 01337 Gan_Matrix33 *gan_vec33_outer_q ( const Gan_Vector3 *p, const Gan_Vector3 *q, 01338 Gan_Matrix33 *A ); 01339 01348 Gan_Vector3 *gan_mat33_multv3_q ( const Gan_Matrix33 *A, Gan_Vector3 *p, 01349 Gan_Vector3 *q ); 01350 01351 01360 Gan_Vector3 *gan_mat33T_multv3_q ( const Gan_Matrix33 *A, Gan_Vector3 *p, 01361 Gan_Vector3 *q ); 01362 01363 01383 Gan_Matrix33 *gan_mat33_lmultm33T_q ( Gan_Matrix33 *A, const Gan_Matrix33 *B, 01384 Gan_Matrix33 *C ); 01385 01395 Gan_Matrix33 *gan_mat33_rmultm33_q ( Gan_Matrix33 *A, const Gan_Matrix33 *B, 01396 Gan_Matrix33 *C ); 01397 01407 Gan_Matrix33 *gan_mat33_rmultm33T_q ( Gan_Matrix33 *A, const Gan_Matrix33 *B, 01408 Gan_Matrix33 *C ); 01409 01421 Gan_SquMatrix33 *gan_mat33_lmultm33T_sym_q ( const Gan_Matrix33 *A, const Gan_Matrix33 *B, 01422 Gan_SquMatrix33 *C ); 01423 01435 Gan_SquMatrix33 *gan_mat33_rmultm33T_sym_q ( const Gan_Matrix33 *A, const Gan_Matrix33 *B, 01436 Gan_SquMatrix33 *C ); 01437 01446 Gan_Matrix33 *gan_mat33_lmults33_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B, 01447 Gan_Matrix33 *C ); 01448 01457 Gan_Matrix33 *gan_mat33_rmults33_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B, 01458 Gan_Matrix33 *C ); 01459 01479 Gan_SquMatrix33 *gan_symmat33_lrmultm33T_q ( const Gan_SquMatrix33 *A, const Gan_Matrix33 *B, 01480 const Gan_Matrix33 *C, Gan_SquMatrix33 *D ); 01481 01492 Gan_SquMatrix33 *gan_symmat33_lrmultm33_q ( const Gan_SquMatrix33 *A, const Gan_Matrix33 *B, 01493 const Gan_Matrix33 *C, Gan_SquMatrix33 *D ); 01494 01513 Gan_Matrix33 *gan_mat33_lmultl33_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B, 01514 Gan_Matrix33 *C ); 01515 01525 Gan_Matrix33 *gan_mat33_lmultl33I_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B, 01526 Gan_Matrix33 *C ); 01527 01537 Gan_Matrix33 *gan_mat33_lmultl33T_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B, 01538 Gan_Matrix33 *C ); 01539 01549 Gan_Matrix33 *gan_mat33_lmultl33IT_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B, 01550 Gan_Matrix33 *C ); 01551 01561 Gan_Matrix33 *gan_mat33_rmultl33_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B, 01562 Gan_Matrix33 *C ); 01563 01573 Gan_Matrix33 *gan_mat33_rmultl33I_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B, 01574 Gan_Matrix33 *C ); 01575 01585 Gan_Matrix33 *gan_mat33_rmultl33T_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B, 01586 Gan_Matrix33 *C ); 01587 01597 Gan_Matrix33 *gan_mat33_rmultl33IT_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B, 01598 Gan_Matrix33 *C ); 01599 01609 Gan_Matrix33 *gan_mat33_lmultl33_i ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B ); 01610 01620 Gan_Matrix33 *gan_mat33_lmultl33I_i ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B ); 01621 01631 Gan_Matrix33 *gan_mat33_lmultl33T_i ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B ); 01632 01642 Gan_Matrix33 *gan_mat33_lmultl33IT_i ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B ); 01643 01653 Gan_Matrix33 *gan_mat33_rmultl33_i ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B ); 01654 01664 Gan_Matrix33 *gan_mat33_rmultl33I_i ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B ); 01665 01675 Gan_Matrix33 *gan_mat33_rmultl33T_i ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B ); 01676 01686 Gan_Matrix33 *gan_mat33_rmultl33IT_i ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B ); 01687 01696 Gan_SquMatrix33 *gan_mat33_slmultT_q ( Gan_Matrix33 *A, const Gan_SquMatrix33 *B ); 01697 01698 01707 Gan_SquMatrix33 *gan_mat33_srmultT_q ( const Gan_Matrix33 *A, Gan_SquMatrix33 *B ); 01708 01709 01724 double gan_mat33_sumsqr_q ( const Gan_Matrix33 *A ); 01725 01732 double gan_mat33_Fnorm_q ( const Gan_Matrix33 *A ); 01733 01743 Gan_Matrix33 *gan_mat33_from_mat_q ( const Gan_Matrix *A, Gan_Matrix33 *B ); 01744 01745 Gan_Matrix33 *gan_mat33_from_squmat_q ( const Gan_SquMatrix *A, Gan_Matrix33 *B ); 01746 01747 Gan_SquMatrix33 *gan_squmat33_from_squmat_q ( const Gan_SquMatrix *A, 01748 Gan_SquMatrix33 *B ); 01749 01768 01769 01770 01771 01772 01773 01774 01775 01776 01777 01778 01779 01780 01781 01782 01783 #undef GAN_MATTYPE 01784 #undef GAN_MATRIX_TYPE 01785 #undef GAN_SQUMATRIX_TYPE 01786 #undef GAN_VECTOR_TYPE 01787 #undef GAN_MAT_ELEMENT_TYPE 01788 #undef GAN_REALTYPE 01789 #undef GAN_FWRITE_LENDIAN 01790 #undef GAN_FREAD_LENDIAN 01791 #undef GAN_VECTYPE1 01792 #undef GAN_VECTYPE2 01793 #undef GAN_MATTYPEL 01794 #undef GAN_MATTYPER 01795 #undef GAN_SQUMATTYPEL 01796 #undef GAN_SQUMATTYPER 01797 #undef GAN_FIXED_MATRIX_TYPE 01798 #undef GAN_MAT_FPRINT 01799 #undef GAN_MAT_PRINT 01800 #undef GAN_MAT_FSCANF 01801 #undef GAN_MAT_FWRITE 01802 #undef GAN_MAT_FREAD 01803 #undef GAN_MAT_ZERO_Q 01804 #undef GAN_MAT_ZERO_S 01805 #undef GAN_MAT_COPY_Q 01806 #undef GAN_MAT_COPY_S 01807 #undef GAN_MAT_SCALE_Q 01808 #undef GAN_MAT_SCALE_S 01809 #undef GAN_MAT_SCALE_I 01810 #undef GAN_MAT_DIVIDE_Q 01811 #undef GAN_MAT_DIVIDE_S 01812 #undef GAN_MAT_DIVIDE_I 01813 #undef GAN_MAT_NEGATE_Q 01814 #undef GAN_MAT_NEGATE_S 01815 #undef GAN_MAT_NEGATE_I 01816 #undef GAN_MAT_UNIT_Q 01817 #undef GAN_MAT_UNIT_S 01818 #undef GAN_MAT_UNIT_I 01819 #undef GAN_MAT_ADD_Q 01820 #undef GAN_MAT_ADD_I1 01821 #undef GAN_MAT_ADD_I2 01822 #undef GAN_MAT_INCREMENT 01823 #undef GAN_MAT_ADD_S 01824 #undef GAN_MAT_SUB_Q 01825 #undef GAN_MAT_SUB_I1 01826 #undef GAN_MAT_SUB_I2 01827 #undef GAN_MAT_DECREMENT 01828 #undef GAN_MAT_SUB_S 01829 #undef GAN_VEC_OUTER_Q 01830 #undef GAN_VEC_OUTER_S 01831 #undef GAN_MAT_MULTV_Q 01832 #undef GAN_MAT_MULTV_S 01833 #undef GAN_MAT_MULTV_I 01834 #undef GAN_MATT_MULTV_Q 01835 #undef GAN_MATT_MULTV_S 01836 #undef GAN_MATT_MULTV_I 01837 #undef GAN_MAT_LMULTM_Q 01838 #undef GAN_MAT_LMULTM_S 01839 #undef GAN_MAT_LMULTMT_Q 01840 #undef GAN_MAT_LMULTMT_S 01841 #undef GAN_MAT_RMULTM_Q 01842 #undef GAN_MAT_RMULTM_S 01843 #undef GAN_MAT_RMULTMT_Q 01844 #undef GAN_MAT_RMULTMT_S 01845 #undef GAN_MAT_LMULTMT_SYM_Q 01846 #undef GAN_MAT_LMULTMT_SYM_S 01847 #undef GAN_MAT_RMULTMT_SYM_Q 01848 #undef GAN_MAT_RMULTMT_SYM_S 01849 #undef GAN_MAT_LMULTS_Q 01850 #undef GAN_MAT_LMULTS_S 01851 #undef GAN_MAT_RMULTS_Q 01852 #undef GAN_MAT_RMULTS_S 01853 #undef GAN_SYMMATL_LRMULT_Q 01854 #undef GAN_SYMMATL_LRMULT_S 01855 #undef GAN_SYMMATR_LRMULT_Q 01856 #undef GAN_SYMMATR_LRMULT_S 01857 #undef GAN_MAT_LMULTL_Q 01858 #undef GAN_MAT_LMULTL_S 01859 #undef GAN_MAT_LMULTL_I 01860 #undef GAN_MAT_LMULTLI_Q 01861 #undef GAN_MAT_LMULTLI_S 01862 #undef GAN_MAT_LMULTLI_I 01863 #undef GAN_MAT_LMULTLT_Q 01864 #undef GAN_MAT_LMULTLT_S 01865 #undef GAN_MAT_LMULTLT_I 01866 #undef GAN_MAT_LMULTLIT_Q 01867 #undef GAN_MAT_LMULTLIT_S 01868 #undef GAN_MAT_LMULTLIT_I 01869 #undef GAN_MAT_RMULTL_Q 01870 #undef GAN_MAT_RMULTL_S 01871 #undef GAN_MAT_RMULTL_I 01872 #undef GAN_MAT_RMULTLI_Q 01873 #undef GAN_MAT_RMULTLI_S 01874 #undef GAN_MAT_RMULTLI_I 01875 #undef GAN_MAT_RMULTLT_Q 01876 #undef GAN_MAT_RMULTLT_S 01877 #undef GAN_MAT_RMULTLT_I 01878 #undef GAN_MAT_RMULTLIT_Q 01879 #undef GAN_MAT_RMULTLIT_S 01880 #undef GAN_MAT_RMULTLIT_I 01881 #undef GAN_MAT_SRMULTT_Q 01882 #undef GAN_MAT_SRMULTT_S 01883 #undef GAN_MAT_SRMULTT_I 01884 #undef GAN_MAT_SLMULTT_Q 01885 #undef GAN_MAT_SLMULTT_S 01886 #undef GAN_MAT_SLMULTT_I 01887 #undef GAN_MAT_RMULTLIT_S 01888 #undef GAN_MAT_SUMSQR_Q 01889 #undef GAN_MAT_SUMSQR_S 01890 #undef GAN_MAT_FNORM_Q 01891 #undef GAN_MAT_FNORM_S 01892 #undef GAN_MAT_FROM_MAT_Q 01893 #undef GAN_MAT_FROM_MAT_S 01894 #undef GAN_MAT_FROM_SQUMAT_Q 01895 #undef GAN_MAT_FROM_SQUMAT_S 01896 #undef GAN_SQUMAT_FROM_SQUMAT_Q 01897 #undef GAN_SQUMAT_FROM_SQUMAT_S 01898 01899 01913 01914 01915 01916 01917 01918 01919 01920 01921 01922 01923 01924 01925 01926 01927 01928 #ifndef _GAN_3X3SYMMAT_H 01929 01943 Gan_SquMatrix33 *gan_symmat33_fill_q ( Gan_SquMatrix33 *A, 01944 double XX, 01945 double YX, double YY, 01946 double ZX, double ZY, double ZZ ); 01947 01969 void gan_symmat33_get_parts_q ( const Gan_SquMatrix33 *A, 01970 Gan_SquMatrix22 *B, Gan_Vector2 *p, double *s); 01971 01994 Gan_SquMatrix33 *gan_symmat33_set_parts_q ( Gan_SquMatrix33 *A, 01995 const Gan_SquMatrix22 *B, 01996 const Gan_Vector2 *p, double s ); 01997 02003 #endif 02004 02005 #define GAN_MATTYPE Gan_SquMatrix33 02006 #define GAN_MATRIX_TYPE Gan_SquMatrix 02007 #define GAN_SQUMATRIX_TYPE Gan_SquMatrix 02008 #define GAN_VECTOR_TYPE Gan_Vector 02009 #define GAN_MAT_ELEMENT_TYPE GAN_DOUBLE 02010 #define GAN_REALTYPE double 02011 #define GAN_FWRITE_LENDIAN gan_fwrite_lendian_f64 02012 #define GAN_FREAD_LENDIAN gan_fread_lendian_f64 02013 #define GAN_VECTYPE1 Gan_Vector3 02014 #define GAN_VECTYPE2 Gan_Vector3 02015 #define GAN_FIXED_MATRIX_TYPE GAN_SYMMETRIC_MATRIX33 02016 #define GAN_MAT_FPRINT gan_symmat33_fprint 02017 #define GAN_MAT_PRINT gan_symmat33_print 02018 #define GAN_MAT_FSCANF gan_symmat33_fscanf 02019 #define GAN_MAT_FWRITE gan_symmat33_fwrite 02020 #define GAN_MAT_FREAD gan_symmat33_fread 02021 #define GAN_MAT_ZERO_Q gan_symmat33_zero_q 02022 #define GAN_MAT_ZERO_S gan_symmat33_zero_s 02023 #define GAN_MAT_COPY_Q gan_symmat33_copy_q 02024 #define GAN_MAT_COPY_S gan_symmat33_copy_s 02025 #define GAN_MAT_SCALE_Q gan_symmat33_scale_q 02026 #define GAN_MAT_SCALE_S gan_symmat33_scale_s 02027 #define GAN_MAT_SCALE_I gan_symmat33_scale_i 02028 #define GAN_MAT_DIVIDE_Q gan_symmat33_divide_q 02029 #define GAN_MAT_DIVIDE_S gan_symmat33_divide_s 02030 #define GAN_MAT_DIVIDE_I gan_symmat33_divide_i 02031 #define GAN_MAT_NEGATE_Q gan_symmat33_negate_q 02032 #define GAN_MAT_NEGATE_S gan_symmat33_negate_s 02033 #define GAN_MAT_NEGATE_I gan_symmat33_negate_i 02034 #define GAN_MAT_UNIT_Q gan_symmat33_unit_q 02035 #define GAN_MAT_UNIT_S gan_symmat33_unit_s 02036 #define GAN_MAT_UNIT_I gan_symmat33_unit_i 02037 #define GAN_MAT_ADD_Q gan_symmat33_add_q 02038 #define GAN_MAT_ADD_I1 gan_symmat33_add_i1 02039 #define GAN_MAT_ADD_I2 gan_symmat33_add_i2 02040 #define GAN_MAT_INCREMENT gan_symmat33_increment 02041 #define GAN_MAT_ADD_S gan_symmat33_add_s 02042 #define GAN_MAT_SUB_Q gan_symmat33_sub_q 02043 #define GAN_MAT_SUB_I1 gan_symmat33_sub_i1 02044 #define GAN_MAT_SUB_I2 gan_symmat33_sub_i2 02045 #define GAN_MAT_DECREMENT gan_symmat33_decrement 02046 #define GAN_MAT_SUB_S gan_symmat33_sub_s 02047 #define GAN_MAT_MULTV_Q gan_symmat33_multv3_q 02048 #define GAN_MAT_MULTV_S gan_symmat33_multv3_s 02049 #define GAN_MAT_SUMSQR_Q gan_symmat33_sumsqr_q 02050 #define GAN_MAT_SUMSQR_S gan_symmat33_sumsqr_s 02051 #define GAN_MAT_FNORM_Q gan_symmat33_Fnorm_q 02052 #define GAN_MAT_FNORM_S gan_symmat33_Fnorm_s 02053 02054 #define GAN_SQUMAT_IDENT_Q gan_symmat33_ident_q 02055 #define GAN_SQUMAT_IDENT_S gan_symmat33_ident_s 02056 #define GAN_SQUMAT_INVERT gan_symmat33_invert 02057 #define GAN_SQUMAT_INVERT_Q gan_symmat33_invert_q 02058 #define GAN_SQUMAT_INVERT_S gan_symmat33_invert_s 02059 #define GAN_SQUMAT_INVERT_I gan_symmat33_invert_i 02060 #define GAN_SQUMAT_DET_Q gan_symmat33_det_q 02061 #define GAN_SQUMAT_DET_S gan_symmat33_det_s 02062 #define GAN_SQUMAT_TRACE_Q gan_symmat33_trace_q 02063 #define GAN_SQUMAT_TRACE_S gan_symmat33_trace_s 02064 02065 #define GAN_VEC_OUTER_SYM_Q gan_vec33_outer_sym_q 02066 #define GAN_VEC_OUTER_SYM_S gan_vec33_outer_sym_s 02067 #define GAN_SYMMAT_CHOLESKY gan_symmat33_cholesky 02068 #define GAN_SYMMAT_CHOLESKY_Q gan_symmat33_cholesky_q 02069 #define GAN_SYMMAT_CHOLESKY_S gan_symmat33_cholesky_s 02070 #define GAN_SYMMAT_CHOLESKY_I gan_symmat33_cholesky_i 02071 02072 #ifndef _GAN_3X3SYMMAT_H 02073 #define _GAN_3X3SYMMAT_H 02074 02075 02076 #endif 02077 02090 02091 02092 02093 02094 02095 02096 02097 02098 02099 02100 02101 02102 02103 02104 02105 02106 02107 02108 02109 02110 02111 02122 Gan_SquMatrix33 *gan_vec33_outer_sym_q ( const Gan_Vector3 *p, Gan_SquMatrix33 *A ); 02123 02145 Gan_SquMatrix33 *gan_symmat33_cholesky_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 02146 02155 Gan_SquMatrix33 *gan_symmat33_cholesky_i ( Gan_SquMatrix33 *A ); 02156 02162 #undef GAN_VEC_OUTER_SYM_Q 02163 #undef GAN_VEC_OUTER_SYM_S 02164 #undef GAN_SYMMAT_CHOLESKY 02165 #undef GAN_SYMMAT_CHOLESKY_Q 02166 #undef GAN_SYMMAT_CHOLESKY_S 02167 #undef GAN_SYMMAT_CHOLESKY_I 02168 02181 02182 02183 02184 02185 02186 02187 02188 02189 02190 02191 02192 02193 02194 02195 02196 02197 02198 02199 02200 02201 02202 02215 Gan_SquMatrix33 *gan_symmat33_ident_q ( Gan_SquMatrix33 *A ); 02216 02267 Gan_SquMatrix33 *gan_symmat33_invert_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 02268 02277 Gan_SquMatrix33 *gan_symmat33_invert_i ( Gan_SquMatrix33 *A ); 02278 02293 double gan_symmat33_det_q ( const Gan_SquMatrix33 *A ); 02294 02300 double gan_symmat33_trace_q ( const Gan_SquMatrix33 *A ); 02301 02307 #undef GAN_SQUMAT_IDENT_Q 02308 #undef GAN_SQUMAT_IDENT_S 02309 #undef GAN_SQUMAT_TPOSE_Q 02310 #undef GAN_SQUMAT_TPOSE_S 02311 #undef GAN_SQUMAT_TPOSE_I 02312 #undef GAN_MAT_SADDT_Q 02313 #undef GAN_MAT_SADDT_S 02314 #undef GAN_SQUMATI_MULTV_Q 02315 #undef GAN_SQUMATI_MULTV_S 02316 #undef GAN_SQUMATI_MULTV_I 02317 #undef GAN_SQUMATIT_MULTV_Q 02318 #undef GAN_SQUMATIT_MULTV_S 02319 #undef GAN_SQUMATIT_MULTV_I 02320 #undef GAN_SQUMAT_INVERT 02321 #undef GAN_SQUMAT_INVERT_Q 02322 #undef GAN_SQUMAT_INVERT_S 02323 #undef GAN_SQUMAT_INVERT_I 02324 #undef GAN_SQUMAT_ADJOINT_Q 02325 #undef GAN_SQUMAT_ADJOINT_S 02326 #undef GAN_SQUMAT_ADJOINTT_Q 02327 #undef GAN_SQUMAT_ADJOINTT_S 02328 #undef GAN_SQUMAT_DET_Q 02329 #undef GAN_SQUMAT_DET_S 02330 #undef GAN_SQUMAT_TRACE_Q 02331 #undef GAN_SQUMAT_TRACE_S 02332 02345 02346 02347 02348 02349 02350 02351 02352 02353 02354 02355 02356 02357 02358 02359 02360 02361 02362 02363 02364 02365 02376 Gan_SquMatrix33 *gan_symmat33_zero_q ( const Gan_SquMatrix33 *A ); 02377 02394 Gan_SquMatrix33 *gan_symmat33_copy_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 02395 02413 Gan_SquMatrix33 *gan_symmat33_scale_q ( Gan_SquMatrix33 *A, double a, 02414 Gan_SquMatrix33 *B ); 02415 02423 Gan_SquMatrix33 *gan_symmat33_scale_i ( Gan_SquMatrix33 *A, double a ); 02424 02433 Gan_SquMatrix33 *gan_symmat33_divide_q ( Gan_SquMatrix33 *A, double a, 02434 Gan_SquMatrix33 *B ); 02435 02443 Gan_SquMatrix33 *gan_symmat33_divide_i ( Gan_SquMatrix33 *A, double a ); 02444 02452 Gan_SquMatrix33 *gan_symmat33_negate_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 02453 02461 Gan_SquMatrix33 *gan_symmat33_negate_i ( Gan_SquMatrix33 *A ); 02462 02470 Gan_SquMatrix33 *gan_symmat33_unit_i ( Gan_SquMatrix33 *A ); 02471 02489 Gan_SquMatrix33 *gan_symmat33_add_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B, Gan_SquMatrix33 *C ); 02490 02499 Gan_SquMatrix33 *gan_symmat33_add_i1 ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 02500 02509 Gan_SquMatrix33 *gan_symmat33_add_i2 ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 02510 02519 Gan_SquMatrix33 *gan_symmat33_increment ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 02520 02538 Gan_SquMatrix33 *gan_symmat33_sub_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B, Gan_SquMatrix33 *C ); 02539 02548 Gan_SquMatrix33 *gan_symmat33_sub_i1 ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 02549 02558 Gan_SquMatrix33 *gan_symmat33_sub_i2 ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 02559 02568 Gan_SquMatrix33 *gan_symmat33_decrement ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 02569 02588 Gan_Vector3 *gan_symmat33_multv3_q ( const Gan_SquMatrix33 *A, Gan_Vector3 *p, 02589 Gan_Vector3 *q ); 02590 02591 02592 02593 02665 double gan_symmat33_sumsqr_q ( const Gan_SquMatrix33 *A ); 02666 02673 double gan_symmat33_Fnorm_q ( const Gan_SquMatrix33 *A ); 02674 02705 02706 02707 02708 02709 02710 02711 02712 02713 02714 02715 02716 02717 02718 02719 02720 #undef GAN_MATTYPE 02721 #undef GAN_MATRIX_TYPE 02722 #undef GAN_SQUMATRIX_TYPE 02723 #undef GAN_VECTOR_TYPE 02724 #undef GAN_MAT_ELEMENT_TYPE 02725 #undef GAN_REALTYPE 02726 #undef GAN_FWRITE_LENDIAN 02727 #undef GAN_FREAD_LENDIAN 02728 #undef GAN_VECTYPE1 02729 #undef GAN_VECTYPE2 02730 #undef GAN_MATTYPEL 02731 #undef GAN_MATTYPER 02732 #undef GAN_SQUMATTYPEL 02733 #undef GAN_SQUMATTYPER 02734 #undef GAN_FIXED_MATRIX_TYPE 02735 #undef GAN_MAT_FPRINT 02736 #undef GAN_MAT_PRINT 02737 #undef GAN_MAT_FSCANF 02738 #undef GAN_MAT_FWRITE 02739 #undef GAN_MAT_FREAD 02740 #undef GAN_MAT_ZERO_Q 02741 #undef GAN_MAT_ZERO_S 02742 #undef GAN_MAT_COPY_Q 02743 #undef GAN_MAT_COPY_S 02744 #undef GAN_MAT_SCALE_Q 02745 #undef GAN_MAT_SCALE_S 02746 #undef GAN_MAT_SCALE_I 02747 #undef GAN_MAT_DIVIDE_Q 02748 #undef GAN_MAT_DIVIDE_S 02749 #undef GAN_MAT_DIVIDE_I 02750 #undef GAN_MAT_NEGATE_Q 02751 #undef GAN_MAT_NEGATE_S 02752 #undef GAN_MAT_NEGATE_I 02753 #undef GAN_MAT_UNIT_Q 02754 #undef GAN_MAT_UNIT_S 02755 #undef GAN_MAT_UNIT_I 02756 #undef GAN_MAT_ADD_Q 02757 #undef GAN_MAT_ADD_I1 02758 #undef GAN_MAT_ADD_I2 02759 #undef GAN_MAT_INCREMENT 02760 #undef GAN_MAT_ADD_S 02761 #undef GAN_MAT_SUB_Q 02762 #undef GAN_MAT_SUB_I1 02763 #undef GAN_MAT_SUB_I2 02764 #undef GAN_MAT_DECREMENT 02765 #undef GAN_MAT_SUB_S 02766 #undef GAN_VEC_OUTER_Q 02767 #undef GAN_VEC_OUTER_S 02768 #undef GAN_MAT_MULTV_Q 02769 #undef GAN_MAT_MULTV_S 02770 #undef GAN_MAT_MULTV_I 02771 #undef GAN_MATT_MULTV_Q 02772 #undef GAN_MATT_MULTV_S 02773 #undef GAN_MATT_MULTV_I 02774 #undef GAN_MAT_LMULTM_Q 02775 #undef GAN_MAT_LMULTM_S 02776 #undef GAN_MAT_LMULTMT_Q 02777 #undef GAN_MAT_LMULTMT_S 02778 #undef GAN_MAT_RMULTM_Q 02779 #undef GAN_MAT_RMULTM_S 02780 #undef GAN_MAT_RMULTMT_Q 02781 #undef GAN_MAT_RMULTMT_S 02782 #undef GAN_MAT_LMULTMT_SYM_Q 02783 #undef GAN_MAT_LMULTMT_SYM_S 02784 #undef GAN_MAT_RMULTMT_SYM_Q 02785 #undef GAN_MAT_RMULTMT_SYM_S 02786 #undef GAN_MAT_LMULTS_Q 02787 #undef GAN_MAT_LMULTS_S 02788 #undef GAN_MAT_RMULTS_Q 02789 #undef GAN_MAT_RMULTS_S 02790 #undef GAN_SYMMATL_LRMULT_Q 02791 #undef GAN_SYMMATL_LRMULT_S 02792 #undef GAN_SYMMATR_LRMULT_Q 02793 #undef GAN_SYMMATR_LRMULT_S 02794 #undef GAN_MAT_LMULTL_Q 02795 #undef GAN_MAT_LMULTL_S 02796 #undef GAN_MAT_LMULTL_I 02797 #undef GAN_MAT_LMULTLI_Q 02798 #undef GAN_MAT_LMULTLI_S 02799 #undef GAN_MAT_LMULTLI_I 02800 #undef GAN_MAT_LMULTLT_Q 02801 #undef GAN_MAT_LMULTLT_S 02802 #undef GAN_MAT_LMULTLT_I 02803 #undef GAN_MAT_LMULTLIT_Q 02804 #undef GAN_MAT_LMULTLIT_S 02805 #undef GAN_MAT_LMULTLIT_I 02806 #undef GAN_MAT_RMULTL_Q 02807 #undef GAN_MAT_RMULTL_S 02808 #undef GAN_MAT_RMULTL_I 02809 #undef GAN_MAT_RMULTLI_Q 02810 #undef GAN_MAT_RMULTLI_S 02811 #undef GAN_MAT_RMULTLI_I 02812 #undef GAN_MAT_RMULTLT_Q 02813 #undef GAN_MAT_RMULTLT_S 02814 #undef GAN_MAT_RMULTLT_I 02815 #undef GAN_MAT_RMULTLIT_Q 02816 #undef GAN_MAT_RMULTLIT_S 02817 #undef GAN_MAT_RMULTLIT_I 02818 #undef GAN_MAT_SRMULTT_Q 02819 #undef GAN_MAT_SRMULTT_S 02820 #undef GAN_MAT_SRMULTT_I 02821 #undef GAN_MAT_SLMULTT_Q 02822 #undef GAN_MAT_SLMULTT_S 02823 #undef GAN_MAT_SLMULTT_I 02824 #undef GAN_MAT_RMULTLIT_S 02825 #undef GAN_MAT_SUMSQR_Q 02826 #undef GAN_MAT_SUMSQR_S 02827 #undef GAN_MAT_FNORM_Q 02828 #undef GAN_MAT_FNORM_S 02829 #undef GAN_MAT_FROM_MAT_Q 02830 #undef GAN_MAT_FROM_MAT_S 02831 #undef GAN_MAT_FROM_SQUMAT_Q 02832 #undef GAN_MAT_FROM_SQUMAT_S 02833 #undef GAN_SQUMAT_FROM_SQUMAT_Q 02834 #undef GAN_SQUMAT_FROM_SQUMAT_S 02835 02836 02850 02851 02852 02853 02854 02855 02856 02857 02858 02859 02860 02861 02862 02863 02864 02865 #ifndef _GAN_3X3LTMAT_H 02866 02882 Gan_SquMatrix33 *gan_ltmat33_fill_q ( Gan_SquMatrix33 *A, 02883 double XX, 02884 double YX, double YY, 02885 double ZX, double ZY, double ZZ ); 02886 02906 void gan_ltmat33_get_parts_q ( const Gan_SquMatrix33 *A, 02907 Gan_SquMatrix22 *B, Gan_Vector2 *p, double *s ); 02908 02931 Gan_SquMatrix33 * gan_ltmat33_set_parts_q ( Gan_SquMatrix33 *A, 02932 const Gan_SquMatrix22 *B, 02933 const Gan_Vector2 *p, double s ); 02934 02940 #endif 02941 02942 #define GAN_MATTYPE Gan_SquMatrix33 02943 #define GAN_MATRIX_TYPE Gan_SquMatrix 02944 #define GAN_SQUMATRIX_TYPE Gan_SquMatrix 02945 #define GAN_VECTOR_TYPE Gan_Vector 02946 #define GAN_MAT_ELEMENT_TYPE GAN_DOUBLE 02947 #define GAN_REALTYPE double 02948 #define GAN_FWRITE_LENDIAN gan_fwrite_lendian_f64 02949 #define GAN_FREAD_LENDIAN gan_fread_lendian_f64 02950 #define GAN_VECTYPE1 Gan_Vector3 02951 #define GAN_VECTYPE2 Gan_Vector3 02952 #define GAN_SQUMATTYPEL Gan_SquMatrix33 02953 #define GAN_SQUMATTYPER Gan_SquMatrix33 02954 #define GAN_FIXED_MATRIX_TYPE GAN_LOWER_TRI_MATRIX33 02955 #define GAN_MAT_FPRINT gan_ltmat33_fprint 02956 #define GAN_MAT_PRINT gan_ltmat33_print 02957 #define GAN_MAT_FSCANF gan_ltmat33_fscanf 02958 #define GAN_MAT_FWRITE gan_ltmat33_fwrite 02959 #define GAN_MAT_FREAD gan_ltmat33_fread 02960 #define GAN_MAT_ZERO_Q gan_ltmat33_zero_q 02961 #define GAN_MAT_ZERO_S gan_ltmat33_zero_s 02962 #define GAN_MAT_COPY_Q gan_ltmat33_copy_q 02963 #define GAN_MAT_COPY_S gan_ltmat33_copy_s 02964 #define GAN_MAT_SCALE_Q gan_ltmat33_scale_q 02965 #define GAN_MAT_SCALE_S gan_ltmat33_scale_s 02966 #define GAN_MAT_SCALE_I gan_ltmat33_scale_i 02967 #define GAN_MAT_DIVIDE_Q gan_ltmat33_divide_q 02968 #define GAN_MAT_DIVIDE_S gan_ltmat33_divide_s 02969 #define GAN_MAT_DIVIDE_I gan_ltmat33_divide_i 02970 #define GAN_MAT_NEGATE_Q gan_ltmat33_negate_q 02971 #define GAN_MAT_NEGATE_S gan_ltmat33_negate_s 02972 #define GAN_MAT_NEGATE_I gan_ltmat33_negate_i 02973 #define GAN_MAT_UNIT_Q gan_ltmat33_unit_q 02974 #define GAN_MAT_UNIT_S gan_ltmat33_unit_s 02975 #define GAN_MAT_UNIT_I gan_ltmat33_unit_i 02976 #define GAN_MAT_ADD_Q gan_ltmat33_add_q 02977 #define GAN_MAT_ADD_I1 gan_ltmat33_add_i1 02978 #define GAN_MAT_ADD_I2 gan_ltmat33_add_i2 02979 #define GAN_MAT_INCREMENT gan_ltmat33_increment 02980 #define GAN_MAT_ADD_S gan_ltmat33_add_s 02981 #define GAN_MAT_SUB_Q gan_ltmat33_sub_q 02982 #define GAN_MAT_SUB_I1 gan_ltmat33_sub_i1 02983 #define GAN_MAT_SUB_I2 gan_ltmat33_sub_i2 02984 #define GAN_MAT_DECREMENT gan_ltmat33_decrement 02985 #define GAN_MAT_SUB_S gan_ltmat33_sub_s 02986 #define GAN_MAT_MULTV_Q gan_ltmat33_multv3_q 02987 #define GAN_MAT_MULTV_S gan_ltmat33_multv3_s 02988 #define GAN_MAT_MULTV_I gan_ltmat33_multv3_i 02989 #define GAN_MATT_MULTV_Q gan_ltmat33T_multv3_q 02990 #define GAN_MATT_MULTV_S gan_ltmat33T_multv3_s 02991 #define GAN_MATT_MULTV_I gan_ltmat33T_multv3_i 02992 #define GAN_MAT_SRMULTT_Q gan_ltmat33_srmultT_q 02993 #define GAN_MAT_SRMULTT_S gan_ltmat33_srmultT_s 02994 #define GAN_MAT_SRMULTT_I gan_ltmat33_srmultT_i 02995 #define GAN_MAT_SLMULTT_Q gan_ltmat33_slmultT_q 02996 #define GAN_MAT_SLMULTT_S gan_ltmat33_slmultT_s 02997 #define GAN_MAT_SLMULTT_I gan_ltmat33_slmultT_i 02998 #define GAN_MAT_SUMSQR_Q gan_ltmat33_sumsqr_q 02999 #define GAN_MAT_SUMSQR_S gan_ltmat33_sumsqr_s 03000 #define GAN_MAT_FNORM_Q gan_ltmat33_Fnorm_q 03001 #define GAN_MAT_FNORM_S gan_ltmat33_Fnorm_s 03002 03003 #define GAN_SQUMAT_IDENT_Q gan_ltmat33_ident_q 03004 #define GAN_SQUMAT_IDENT_S gan_ltmat33_ident_s 03005 #define GAN_SQUMATI_MULTV_Q gan_ltmat33I_multv3_q 03006 #define GAN_SQUMATI_MULTV_S gan_ltmat33I_multv3_s 03007 #define GAN_SQUMATI_MULTV_I gan_ltmat33I_multv3_i 03008 #define GAN_SQUMATIT_MULTV_Q gan_ltmat33IT_multv3_q 03009 #define GAN_SQUMATIT_MULTV_S gan_ltmat33IT_multv3_s 03010 #define GAN_SQUMATIT_MULTV_I gan_ltmat33IT_multv3_i 03011 #define GAN_SQUMAT_INVERT gan_ltmat33_invert 03012 #define GAN_SQUMAT_INVERT_Q gan_ltmat33_invert_q 03013 #define GAN_SQUMAT_INVERT_S gan_ltmat33_invert_s 03014 #define GAN_SQUMAT_INVERT_I gan_ltmat33_invert_i 03015 #define GAN_SQUMAT_DET_Q gan_ltmat33_det_q 03016 #define GAN_SQUMAT_DET_S gan_ltmat33_det_s 03017 #define GAN_SQUMAT_TRACE_Q gan_ltmat33_trace_q 03018 #define GAN_SQUMAT_TRACE_S gan_ltmat33_trace_s 03019 03020 #ifndef _GAN_3X3LTMAT_H 03021 #define _GAN_3X3LTMAT_H 03022 03023 03024 #endif 03025 03038 03039 03040 03041 03042 03043 03044 03045 03046 03047 03048 03049 03050 03051 03052 03053 03054 03055 03056 03057 03058 03059 03072 Gan_SquMatrix33 *gan_ltmat33_ident_q ( Gan_SquMatrix33 *A ); 03073 03111 Gan_Vector3 *gan_ltmat33I_multv3_q ( const Gan_SquMatrix33 *A, Gan_Vector3 *p, 03112 Gan_Vector3 *q ); 03113 03122 Gan_Vector3 *gan_ltmat33I_multv3_i ( const Gan_SquMatrix33 *A, Gan_Vector3 *p ); 03123 03132 Gan_Vector3 *gan_ltmat33IT_multv3_q ( const Gan_SquMatrix33 *A, Gan_Vector3 *p, 03133 Gan_Vector3 *q ); 03134 03143 Gan_Vector3 *gan_ltmat33IT_multv3_i ( const Gan_SquMatrix33 *A, Gan_Vector3 *p ); 03144 03162 Gan_SquMatrix33 *gan_ltmat33_invert_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 03163 03172 Gan_SquMatrix33 *gan_ltmat33_invert_i ( Gan_SquMatrix33 *A ); 03173 03188 double gan_ltmat33_det_q ( const Gan_SquMatrix33 *A ); 03189 03195 double gan_ltmat33_trace_q ( const Gan_SquMatrix33 *A ); 03196 03202 #undef GAN_SQUMAT_IDENT_Q 03203 #undef GAN_SQUMAT_IDENT_S 03204 #undef GAN_SQUMAT_TPOSE_Q 03205 #undef GAN_SQUMAT_TPOSE_S 03206 #undef GAN_SQUMAT_TPOSE_I 03207 #undef GAN_MAT_SADDT_Q 03208 #undef GAN_MAT_SADDT_S 03209 #undef GAN_SQUMATI_MULTV_Q 03210 #undef GAN_SQUMATI_MULTV_S 03211 #undef GAN_SQUMATI_MULTV_I 03212 #undef GAN_SQUMATIT_MULTV_Q 03213 #undef GAN_SQUMATIT_MULTV_S 03214 #undef GAN_SQUMATIT_MULTV_I 03215 #undef GAN_SQUMAT_INVERT 03216 #undef GAN_SQUMAT_INVERT_Q 03217 #undef GAN_SQUMAT_INVERT_S 03218 #undef GAN_SQUMAT_INVERT_I 03219 #undef GAN_SQUMAT_ADJOINT_Q 03220 #undef GAN_SQUMAT_ADJOINT_S 03221 #undef GAN_SQUMAT_ADJOINTT_Q 03222 #undef GAN_SQUMAT_ADJOINTT_S 03223 #undef GAN_SQUMAT_DET_Q 03224 #undef GAN_SQUMAT_DET_S 03225 #undef GAN_SQUMAT_TRACE_Q 03226 #undef GAN_SQUMAT_TRACE_S 03227 03240 03241 03242 03243 03244 03245 03246 03247 03248 03249 03250 03251 03252 03253 03254 03255 03256 03257 03258 03259 03260 03271 Gan_SquMatrix33 *gan_ltmat33_zero_q ( const Gan_SquMatrix33 *A ); 03272 03289 Gan_SquMatrix33 *gan_ltmat33_copy_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 03290 03308 Gan_SquMatrix33 *gan_ltmat33_scale_q ( Gan_SquMatrix33 *A, double a, 03309 Gan_SquMatrix33 *B ); 03310 03318 Gan_SquMatrix33 *gan_ltmat33_scale_i ( Gan_SquMatrix33 *A, double a ); 03319 03328 Gan_SquMatrix33 *gan_ltmat33_divide_q ( Gan_SquMatrix33 *A, double a, 03329 Gan_SquMatrix33 *B ); 03330 03338 Gan_SquMatrix33 *gan_ltmat33_divide_i ( Gan_SquMatrix33 *A, double a ); 03339 03347 Gan_SquMatrix33 *gan_ltmat33_negate_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 03348 03356 Gan_SquMatrix33 *gan_ltmat33_negate_i ( Gan_SquMatrix33 *A ); 03357 03365 Gan_SquMatrix33 *gan_ltmat33_unit_i ( Gan_SquMatrix33 *A ); 03366 03384 Gan_SquMatrix33 *gan_ltmat33_add_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B, Gan_SquMatrix33 *C ); 03385 03394 Gan_SquMatrix33 *gan_ltmat33_add_i1 ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 03395 03404 Gan_SquMatrix33 *gan_ltmat33_add_i2 ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 03405 03414 Gan_SquMatrix33 *gan_ltmat33_increment ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 03415 03433 Gan_SquMatrix33 *gan_ltmat33_sub_q ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B, Gan_SquMatrix33 *C ); 03434 03443 Gan_SquMatrix33 *gan_ltmat33_sub_i1 ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 03444 03453 Gan_SquMatrix33 *gan_ltmat33_sub_i2 ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 03454 03463 Gan_SquMatrix33 *gan_ltmat33_decrement ( Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 03464 03483 Gan_Vector3 *gan_ltmat33_multv3_q ( const Gan_SquMatrix33 *A, Gan_Vector3 *p, 03484 Gan_Vector3 *q ); 03485 03494 Gan_Vector3 *gan_ltmat33_multv3_i ( const Gan_SquMatrix33 *A, Gan_Vector3 *p ); 03495 03504 Gan_Vector3 *gan_ltmat33T_multv3_q ( const Gan_SquMatrix33 *A, Gan_Vector3 *p, 03505 Gan_Vector3 *q ); 03506 03515 Gan_Vector3 *gan_ltmat33T_multv3_i ( const Gan_SquMatrix33 *A, Gan_Vector3 *p ); 03516 03578 Gan_SquMatrix33 *gan_ltmat33_slmultT_q ( Gan_SquMatrix33 *A, const Gan_SquMatrix33 *B ); 03579 03589 Gan_SquMatrix33 *gan_ltmat33_slmultT_i ( Gan_SquMatrix33 *A ); 03590 03599 Gan_SquMatrix33 *gan_ltmat33_srmultT_q ( const Gan_SquMatrix33 *A, Gan_SquMatrix33 *B ); 03600 03610 Gan_SquMatrix33 *gan_ltmat33_srmultT_i ( Gan_SquMatrix33 *A ); 03611 03626 double gan_ltmat33_sumsqr_q ( const Gan_SquMatrix33 *A ); 03627 03634 double gan_ltmat33_Fnorm_q ( const Gan_SquMatrix33 *A ); 03635 03666 03667 03668 03669 03670 03671 03672 03673 03674 03675 03676 03677 03678 03679 03680 03681 #undef GAN_MATTYPE 03682 #undef GAN_MATRIX_TYPE 03683 #undef GAN_SQUMATRIX_TYPE 03684 #undef GAN_VECTOR_TYPE 03685 #undef GAN_MAT_ELEMENT_TYPE 03686 #undef GAN_REALTYPE 03687 #undef GAN_FWRITE_LENDIAN 03688 #undef GAN_FREAD_LENDIAN 03689 #undef GAN_VECTYPE1 03690 #undef GAN_VECTYPE2 03691 #undef GAN_MATTYPEL 03692 #undef GAN_MATTYPER 03693 #undef GAN_SQUMATTYPEL 03694 #undef GAN_SQUMATTYPER 03695 #undef GAN_FIXED_MATRIX_TYPE 03696 #undef GAN_MAT_FPRINT 03697 #undef GAN_MAT_PRINT 03698 #undef GAN_MAT_FSCANF 03699 #undef GAN_MAT_FWRITE 03700 #undef GAN_MAT_FREAD 03701 #undef GAN_MAT_ZERO_Q 03702 #undef GAN_MAT_ZERO_S 03703 #undef GAN_MAT_COPY_Q 03704 #undef GAN_MAT_COPY_S 03705 #undef GAN_MAT_SCALE_Q 03706 #undef GAN_MAT_SCALE_S 03707 #undef GAN_MAT_SCALE_I 03708 #undef GAN_MAT_DIVIDE_Q 03709 #undef GAN_MAT_DIVIDE_S 03710 #undef GAN_MAT_DIVIDE_I 03711 #undef GAN_MAT_NEGATE_Q 03712 #undef GAN_MAT_NEGATE_S 03713 #undef GAN_MAT_NEGATE_I 03714 #undef GAN_MAT_UNIT_Q 03715 #undef GAN_MAT_UNIT_S 03716 #undef GAN_MAT_UNIT_I 03717 #undef GAN_MAT_ADD_Q 03718 #undef GAN_MAT_ADD_I1 03719 #undef GAN_MAT_ADD_I2 03720 #undef GAN_MAT_INCREMENT 03721 #undef GAN_MAT_ADD_S 03722 #undef GAN_MAT_SUB_Q 03723 #undef GAN_MAT_SUB_I1 03724 #undef GAN_MAT_SUB_I2 03725 #undef GAN_MAT_DECREMENT 03726 #undef GAN_MAT_SUB_S 03727 #undef GAN_VEC_OUTER_Q 03728 #undef GAN_VEC_OUTER_S 03729 #undef GAN_MAT_MULTV_Q 03730 #undef GAN_MAT_MULTV_S 03731 #undef GAN_MAT_MULTV_I 03732 #undef GAN_MATT_MULTV_Q 03733 #undef GAN_MATT_MULTV_S 03734 #undef GAN_MATT_MULTV_I 03735 #undef GAN_MAT_LMULTM_Q 03736 #undef GAN_MAT_LMULTM_S 03737 #undef GAN_MAT_LMULTMT_Q 03738 #undef GAN_MAT_LMULTMT_S 03739 #undef GAN_MAT_RMULTM_Q 03740 #undef GAN_MAT_RMULTM_S 03741 #undef GAN_MAT_RMULTMT_Q 03742 #undef GAN_MAT_RMULTMT_S 03743 #undef GAN_MAT_LMULTMT_SYM_Q 03744 #undef GAN_MAT_LMULTMT_SYM_S 03745 #undef GAN_MAT_RMULTMT_SYM_Q 03746 #undef GAN_MAT_RMULTMT_SYM_S 03747 #undef GAN_MAT_LMULTS_Q 03748 #undef GAN_MAT_LMULTS_S 03749 #undef GAN_MAT_RMULTS_Q 03750 #undef GAN_MAT_RMULTS_S 03751 #undef GAN_SYMMATL_LRMULT_Q 03752 #undef GAN_SYMMATL_LRMULT_S 03753 #undef GAN_SYMMATR_LRMULT_Q 03754 #undef GAN_SYMMATR_LRMULT_S 03755 #undef GAN_MAT_LMULTL_Q 03756 #undef GAN_MAT_LMULTL_S 03757 #undef GAN_MAT_LMULTL_I 03758 #undef GAN_MAT_LMULTLI_Q 03759 #undef GAN_MAT_LMULTLI_S 03760 #undef GAN_MAT_LMULTLI_I 03761 #undef GAN_MAT_LMULTLT_Q 03762 #undef GAN_MAT_LMULTLT_S 03763 #undef GAN_MAT_LMULTLT_I 03764 #undef GAN_MAT_LMULTLIT_Q 03765 #undef GAN_MAT_LMULTLIT_S 03766 #undef GAN_MAT_LMULTLIT_I 03767 #undef GAN_MAT_RMULTL_Q 03768 #undef GAN_MAT_RMULTL_S 03769 #undef GAN_MAT_RMULTL_I 03770 #undef GAN_MAT_RMULTLI_Q 03771 #undef GAN_MAT_RMULTLI_S 03772 #undef GAN_MAT_RMULTLI_I 03773 #undef GAN_MAT_RMULTLT_Q 03774 #undef GAN_MAT_RMULTLT_S 03775 #undef GAN_MAT_RMULTLT_I 03776 #undef GAN_MAT_RMULTLIT_Q 03777 #undef GAN_MAT_RMULTLIT_S 03778 #undef GAN_MAT_RMULTLIT_I 03779 #undef GAN_MAT_SRMULTT_Q 03780 #undef GAN_MAT_SRMULTT_S 03781 #undef GAN_MAT_SRMULTT_I 03782 #undef GAN_MAT_SLMULTT_Q 03783 #undef GAN_MAT_SLMULTT_S 03784 #undef GAN_MAT_SLMULTT_I 03785 #undef GAN_MAT_RMULTLIT_S 03786 #undef GAN_MAT_SUMSQR_Q 03787 #undef GAN_MAT_SUMSQR_S 03788 #undef GAN_MAT_FNORM_Q 03789 #undef GAN_MAT_FNORM_S 03790 #undef GAN_MAT_FROM_MAT_Q 03791 #undef GAN_MAT_FROM_MAT_S 03792 #undef GAN_MAT_FROM_SQUMAT_Q 03793 #undef GAN_MAT_FROM_SQUMAT_S 03794 #undef GAN_SQUMAT_FROM_SQUMAT_Q 03795 #undef GAN_SQUMAT_FROM_SQUMAT_S 03796 03797 03811 03812 03813 03814 03815 03816 03817 03818 03819 03820 03821 03822 03823 03824 03825 03826 #define GAN_MATTYPE Gan_SquMatrix33 03827 #define GAN_MATRIX_TYPE Gan_SquMatrix 03828 #define GAN_SQUMATRIX_TYPE Gan_SquMatrix 03829 #define GAN_VECTOR_TYPE Gan_Vector 03830 #define GAN_MAT_ELEMENT_TYPE GAN_DOUBLE 03831 #define GAN_REALTYPE double 03832 #define GAN_MAT_FPRINT gan_ltmat33T_fprint 03833 #define GAN_MAT_PRINT gan_ltmat33T_print 03834 #define GAN_MAT_FSCANF gan_ltmat33T_fscanf 03835 #define GAN_FIXED_MATRIX_TYPE GAN_LOWER_TRI_MATRIX33 03836 03837 #define gan_ltmat33T_fwrite gan_ltmat33_fwrite 03838 #define gan_ltmat33T_fread gan_ltmat33_fread 03839 03852 03853 03854 03855 03856 03857 03858 03859 03860 03861 03862 03863 03864 03865 03866 03867 03868 03869 03870 03871 03872 03873 03940 #undef GAN_SQUMAT_IDENT_Q 03941 #undef GAN_SQUMAT_IDENT_S 03942 #undef GAN_SQUMAT_TPOSE_Q 03943 #undef GAN_SQUMAT_TPOSE_S 03944 #undef GAN_SQUMAT_TPOSE_I 03945 #undef GAN_MAT_SADDT_Q 03946 #undef GAN_MAT_SADDT_S 03947 #undef GAN_SQUMATI_MULTV_Q 03948 #undef GAN_SQUMATI_MULTV_S 03949 #undef GAN_SQUMATI_MULTV_I 03950 #undef GAN_SQUMATIT_MULTV_Q 03951 #undef GAN_SQUMATIT_MULTV_S 03952 #undef GAN_SQUMATIT_MULTV_I 03953 #undef GAN_SQUMAT_INVERT 03954 #undef GAN_SQUMAT_INVERT_Q 03955 #undef GAN_SQUMAT_INVERT_S 03956 #undef GAN_SQUMAT_INVERT_I 03957 #undef GAN_SQUMAT_ADJOINT_Q 03958 #undef GAN_SQUMAT_ADJOINT_S 03959 #undef GAN_SQUMAT_ADJOINTT_Q 03960 #undef GAN_SQUMAT_ADJOINTT_S 03961 #undef GAN_SQUMAT_DET_Q 03962 #undef GAN_SQUMAT_DET_S 03963 #undef GAN_SQUMAT_TRACE_Q 03964 #undef GAN_SQUMAT_TRACE_S 03965 03978 03979 03980 03981 03982 03983 03984 03985 03986 03987 03988 03989 03990 03991 03992 03993 03994 03995 03996 03997 03998 04169 04170 04171 04172 04173 04174 04175 04176 04177 04178 04179 04180 04181 04182 04183 04184 #undef GAN_MATTYPE 04185 #undef GAN_MATRIX_TYPE 04186 #undef GAN_SQUMATRIX_TYPE 04187 #undef GAN_VECTOR_TYPE 04188 #undef GAN_MAT_ELEMENT_TYPE 04189 #undef GAN_REALTYPE 04190 #undef GAN_FWRITE_LENDIAN 04191 #undef GAN_FREAD_LENDIAN 04192 #undef GAN_VECTYPE1 04193 #undef GAN_VECTYPE2 04194 #undef GAN_MATTYPEL 04195 #undef GAN_MATTYPER 04196 #undef GAN_SQUMATTYPEL 04197 #undef GAN_SQUMATTYPER 04198 #undef GAN_FIXED_MATRIX_TYPE 04199 #undef GAN_MAT_FPRINT 04200 #undef GAN_MAT_PRINT 04201 #undef GAN_MAT_FSCANF 04202 #undef GAN_MAT_FWRITE 04203 #undef GAN_MAT_FREAD 04204 #undef GAN_MAT_ZERO_Q 04205 #undef GAN_MAT_ZERO_S 04206 #undef GAN_MAT_COPY_Q 04207 #undef GAN_MAT_COPY_S 04208 #undef GAN_MAT_SCALE_Q 04209 #undef GAN_MAT_SCALE_S 04210 #undef GAN_MAT_SCALE_I 04211 #undef GAN_MAT_DIVIDE_Q 04212 #undef GAN_MAT_DIVIDE_S 04213 #undef GAN_MAT_DIVIDE_I 04214 #undef GAN_MAT_NEGATE_Q 04215 #undef GAN_MAT_NEGATE_S 04216 #undef GAN_MAT_NEGATE_I 04217 #undef GAN_MAT_UNIT_Q 04218 #undef GAN_MAT_UNIT_S 04219 #undef GAN_MAT_UNIT_I 04220 #undef GAN_MAT_ADD_Q 04221 #undef GAN_MAT_ADD_I1 04222 #undef GAN_MAT_ADD_I2 04223 #undef GAN_MAT_INCREMENT 04224 #undef GAN_MAT_ADD_S 04225 #undef GAN_MAT_SUB_Q 04226 #undef GAN_MAT_SUB_I1 04227 #undef GAN_MAT_SUB_I2 04228 #undef GAN_MAT_DECREMENT 04229 #undef GAN_MAT_SUB_S 04230 #undef GAN_VEC_OUTER_Q 04231 #undef GAN_VEC_OUTER_S 04232 #undef GAN_MAT_MULTV_Q 04233 #undef GAN_MAT_MULTV_S 04234 #undef GAN_MAT_MULTV_I 04235 #undef GAN_MATT_MULTV_Q 04236 #undef GAN_MATT_MULTV_S 04237 #undef GAN_MATT_MULTV_I 04238 #undef GAN_MAT_LMULTM_Q 04239 #undef GAN_MAT_LMULTM_S 04240 #undef GAN_MAT_LMULTMT_Q 04241 #undef GAN_MAT_LMULTMT_S 04242 #undef GAN_MAT_RMULTM_Q 04243 #undef GAN_MAT_RMULTM_S 04244 #undef GAN_MAT_RMULTMT_Q 04245 #undef GAN_MAT_RMULTMT_S 04246 #undef GAN_MAT_LMULTMT_SYM_Q 04247 #undef GAN_MAT_LMULTMT_SYM_S 04248 #undef GAN_MAT_RMULTMT_SYM_Q 04249 #undef GAN_MAT_RMULTMT_SYM_S 04250 #undef GAN_MAT_LMULTS_Q 04251 #undef GAN_MAT_LMULTS_S 04252 #undef GAN_MAT_RMULTS_Q 04253 #undef GAN_MAT_RMULTS_S 04254 #undef GAN_SYMMATL_LRMULT_Q 04255 #undef GAN_SYMMATL_LRMULT_S 04256 #undef GAN_SYMMATR_LRMULT_Q 04257 #undef GAN_SYMMATR_LRMULT_S 04258 #undef GAN_MAT_LMULTL_Q 04259 #undef GAN_MAT_LMULTL_S 04260 #undef GAN_MAT_LMULTL_I 04261 #undef GAN_MAT_LMULTLI_Q 04262 #undef GAN_MAT_LMULTLI_S 04263 #undef GAN_MAT_LMULTLI_I 04264 #undef GAN_MAT_LMULTLT_Q 04265 #undef GAN_MAT_LMULTLT_S 04266 #undef GAN_MAT_LMULTLT_I 04267 #undef GAN_MAT_LMULTLIT_Q 04268 #undef GAN_MAT_LMULTLIT_S 04269 #undef GAN_MAT_LMULTLIT_I 04270 #undef GAN_MAT_RMULTL_Q 04271 #undef GAN_MAT_RMULTL_S 04272 #undef GAN_MAT_RMULTL_I 04273 #undef GAN_MAT_RMULTLI_Q 04274 #undef GAN_MAT_RMULTLI_S 04275 #undef GAN_MAT_RMULTLI_I 04276 #undef GAN_MAT_RMULTLT_Q 04277 #undef GAN_MAT_RMULTLT_S 04278 #undef GAN_MAT_RMULTLT_I 04279 #undef GAN_MAT_RMULTLIT_Q 04280 #undef GAN_MAT_RMULTLIT_S 04281 #undef GAN_MAT_RMULTLIT_I 04282 #undef GAN_MAT_SRMULTT_Q 04283 #undef GAN_MAT_SRMULTT_S 04284 #undef GAN_MAT_SRMULTT_I 04285 #undef GAN_MAT_SLMULTT_Q 04286 #undef GAN_MAT_SLMULTT_S 04287 #undef GAN_MAT_SLMULTT_I 04288 #undef GAN_MAT_RMULTLIT_S 04289 #undef GAN_MAT_SUMSQR_Q 04290 #undef GAN_MAT_SUMSQR_S 04291 #undef GAN_MAT_FNORM_Q 04292 #undef GAN_MAT_FNORM_S 04293 #undef GAN_MAT_FROM_MAT_Q 04294 #undef GAN_MAT_FROM_MAT_S 04295 #undef GAN_MAT_FROM_SQUMAT_Q 04296 #undef GAN_MAT_FROM_SQUMAT_S 04297 #undef GAN_SQUMAT_FROM_SQUMAT_Q 04298 #undef GAN_SQUMAT_FROM_SQUMAT_S 04299 04312 #ifdef __cplusplus 04313 } 04314 #endif 04315 04316 #endif