Main Page | Modules | Class List | File List | Class Members | File Members

4x4matrixf.h File Reference

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <gandalf/common/misc_defs.h>
#include <gandalf/linalg/4vectorf.h>
#include <gandalf/linalg/3x3matrixf.h>
#include <gandalf/linalg/matf_gen.h>
#include <gandalf/linalg/matf_square.h>

Go to the source code of this file.

Classes

struct  Gan_Matrix44_f
 Structure definition for single precision 4x4 matrix. More...
struct  Gan_SquMatrix44_f
 Structure definition for square single precision 4x4 matrix. More...

Defines

#define GAN_REP1_AS(a, b, p1)   (a p1 b)
#define GAN_REP1_A(a, p1)   (a p1)
#define GAN_REP1_A_C(a, b)   GAN_REP1_A(a,b,x)
#define GAN_FREP1_A(a, b, p1, q1)   (a p1 b q1)
#define GAN_FREP1_A_C(a, b, p1)   GAN_FREP1_A(a,b,x,p1)
#define GAN_REP1_ABS(a, b, c, p1, q1)   (a p1 b q1 c)
#define GAN_REP1_AAS(a, b, c, p1)   GAN_REP1_ABS(a,b,c,p1,p1)
#define GAN_REP1_AAS_C(a, b, c)   GAN_REP1_AAS(a,b,c,x)
#define GAN_REP1_AB(a, b, p1, q1)   (a p1 b q1)
#define GAN_REP1_AA(a, b, p1)   GAN_REP1_AB(a,b,p1,p1)
#define GAN_REP1_AA_C(a, b)   GAN_REP1_AA(a,b,x)
#define GAN_REP1_ABCS(a, b, c, d, p1, q1, r1)   (a p1 b q1 c r1 d)
#define GAN_REP1_ABC(a, b, c, p1, q1, r1)   (a p1 b q1 c r1)
#define GAN_REP1_AAA(a, b, c, p1)   GAN_REP1_ABC(a,b,c,p1,p1,p1)
#define GAN_REP1_AAA_C(a, b, c)   GAN_REP1_AAA(a,b,c,x)
#define GAN_REP1_OP_AB(a, b, p1, q1, op)   (a p1 b q1)
#define GAN_REP1_OP_AA(a, b, p1, op)   GAN_REP1_OP_AB(a,b,p1,p1,op)
#define GAN_REP1_OP_AA_C(a, b, op)   GAN_REP1_OP_AA(a,b,x,op)
#define GAN_REP2_AS(a, b, p1, p2)   (a p1 b, a p2 b)
#define GAN_REP2_A(a, p1, p2)   (a p1, a p2)
#define GAN_REP2_AS_C(a, b)   GAN_REP2_AS(a,b,x,y)
#define GAN_REP2_A_C(a)   GAN_REP2_A(a,x,y)
#define GAN_FREP2_A(a, b, p1, p2, q1, q2)   (a p1 b q1, a p2 b q2)
#define GAN_FREP2_A_C(a, b, p1, p2)   GAN_FREP2_A(a,b,x,y,p1,p2)
#define GAN_REP2_AB(a, b, p1, p2, q1, q2)   (a p1 b q1, a p2 b q2)
#define GAN_REP2_AA(a, b, p1, p2)   GAN_REP2_AB(a,b,p1,p2,p1,p2)
#define GAN_REP2_AA_C(a, b)   GAN_REP2_AA(a,b,x,y)
#define GAN_REP2_ABS(a, b, c, p1, p2, q1, q2)   (a p1 b q1 c, a p2 b q2 c)
#define GAN_REP2_AAS(a, b, c, p1, p2)   GAN_REP2_ABS(a,b,c,p1,p2,p1,p2)
#define GAN_REP2_AAS_C(a, b, c)   GAN_REP2_AAS(a,b,c,x,y)
#define GAN_REP2_AB(a, b, p1, p2, q1, q2)   (a p1 b q1, a p2 b q2)
#define GAN_REP2_AA(a, b, p1, p2)   GAN_REP2_AB(a,b,p1,p2,p1,p2)
#define GAN_REP2_AA_C(a, b)   GAN_REP2_AA(a,b,x,y)
#define GAN_REP2_ABCS(a, b, c, d, p1, p2, q1, q2, r1, r2)   (a p1 b q1 c r1 d, a p2 b q2 c r2 d)
#define GAN_REP2_ABC(a, b, c, p1, p2, q1, q2, r1, r2)   (a p1 b q1 c r1, a p2 b q2 c r2)
#define GAN_REP2_AAA(a, b, c, p1, p2)   GAN_REP2_ABC(a,b,c,p1,p2,p1,p2,p1,p2)
#define GAN_REP2_AAA_C(a, b, c)   GAN_REP2_AAA(a,b,c,x,y)
#define GAN_REP2_OP_AB(a, b, p1, p2, q1, q2, op)   (a p1 b q1 op a p2 b q2)
#define GAN_REP2_OP_AA(a, b, p1, p2, op)   GAN_REP2_OP_AB(a,b,p1,p2,p1,p2,op)
#define GAN_REP2_OP_AA_C(a, b, op)   GAN_REP2_OP_AA(a,b,x,y,op)
#define GAN_REP3_AS(a, b, p1, p2, p3)   (a p1 b, a p2 b, a p3 b)
#define GAN_REP3_AS_C(a, b)   GAN_REP3_AS(a,b,x,y,z)
#define GAN_REP3_A(a, p1, p2, p3)   (a p1, a p2, a p3)
#define GAN_REP3_A_C(a)   GAN_REP3_A(a,x,y,z)
#define GAN_FREP3_A(a, b, p1, p2, p3, q1, q2, q3)   (a p1 b q1, a p2 b q2, a p3 b q3)
#define GAN_FREP3_A_C(a, b, p1, p2, p3)   GAN_FREP3_A(a,b,x,y,z,p1,p2,p3)
#define GAN_REP3_ABS(a, b, c, p1, p2, p3, q1, q2, q3)   (a p1 b q1 c, a p2 b q2 c, a p3 b q3 c)
#define GAN_REP3_AAS(a, b, c, p1, p2, p3)   GAN_REP3_ABS(a,b,c,p1,p2,p3,p1,p2,p3)
#define GAN_REP3_AAS_C(a, b, c)   GAN_REP3_AAS(a,b,c,x,y,z)
#define GAN_REP3_AB(a, b, p1, p2, p3, q1, q2, q3)   (a p1 b q1, a p2 b q2, a p3 b q3)
#define GAN_REP3_AA(a, b, p1, p2, p3)   GAN_REP3_AB(a,b,p1,p2,p3,p1,p2,p3)
#define GAN_REP3_AA_C(a, b)   GAN_REP3_AA(a,b,x,y,z)
#define GAN_REP3_ABCS(a, b, c, d, p1, p2, p3, q1, q2, q3, r1, r2, r3)   (a p1 b q1 c r1 d, a p2 b q2 c r2 d, a p3 b q3 c r3 d)
#define GAN_REP3_ABC(a, b, c, p1, p2, p3, q1, q2, q3, r1, r2, r3)   (a p1 b q1 c r1, a p2 b q2 c r2, a p3 b q3 c r3)
#define GAN_REP3_AAA(a, b, c, p1, p2, p3)   GAN_REP3_ABC(a,b,c,p1,p2,p3,p1,p2,p3,p1,p2,p3)
#define GAN_REP3_AAA_C(a, b, c)   GAN_REP3_AAA(a,b,c,x,y,z)
#define GAN_REP3_OP_AB(a, b, p1, p2, p3, q1, q2, q3, op)   (a p1 b q1 op a p2 b q2 op a p3 b q3)
#define GAN_REP3_OP_AA(a, b, p1, p2, p3, op)   GAN_REP3_OP_AB(a,b,p1,p2,p3,p1,p2,p3,op)
#define GAN_REP3_OP_AA_C(a, b, op)   GAN_REP3_OP_AA(a,b,x,y,z,op)
#define GAN_REP4_AS(a, b, p1, p2, p3, p4)   (a p1 b, a p2 b, a p3 b, a p4 b)
#define GAN_REP4_AS_C(a, b)   GAN_REP4_AS(a,b,x,y,z,w)
#define GAN_REP4_A(a, p1, p2, p3, p4)   (a p1, a p2, a p3, a p4)
#define GAN_REP4_A_C(a)   GAN_REP4_A(a,x,y,z,w)
#define GAN_FREP4_A(a, b, p1, p2, p3, p4, q1, q2, q3, q4)
#define GAN_FREP4_A_C(a, b, p1, p2, p3, p4)   GAN_FREP4_A(a,b,x,y,z,w,p1,p2,p3,p4)
#define GAN_REP4_ABS(a, b, c, p1, p2, p3, p4, q1, q2, q3, q4)   (a p1 b q1 c, a p2 b q2 c, a p3 b q3 c, a p4 b q4 c)
#define GAN_REP4_AAS(a, b, c, p1, p2, p3, p4)   GAN_REP4_ABS(a,b,c,p1,p2,p3,p4,p1,p2,p3,p4)
#define GAN_REP4_AAS_C(a, b, c)   GAN_REP4_AAS(a,b,c,x,y,z,w)
#define GAN_REP4_AB(a, b, p1, p2, p3, p4, q1, q2, q3, q4)   (a p1 b q1, a p2 b q2, a p3 b q3, a p4 b q4)
#define GAN_REP4_AA(a, b, p1, p2, p3, p4)   GAN_REP4_AB(a,b,p1,p2,p3,p4,p1,p2,p3,p4)
#define GAN_REP4_AA_C(a, b)   GAN_REP4_AA(a,b,x,y,z,w)
#define GAN_REP4_ABCS(a, b, c, d, p1, p2, p3, p4, q1, q2, q3, q4, r1, r2, r3, r4)   (a p1 b q1 c r1 d, a p2 b q2 c r2 d, a p3 b q3 c r3 d, a p4 b q4 c r4 d)
#define GAN_REP4_ABC(a, b, c, p1, p2, p3, p4, q1, q2, q3, q4, r1, r2, r3, r4)   (a p1 b q1 c r1, a p2 b q2 c r2, a p3 b q3 c r3, a p4 b q4 c r4)
#define GAN_REP4_AAA(a, b, c, p1, p2, p3, p4)   GAN_REP4_ABC(a,b,c,p1,p2,p3,p4,p1,p2,p3,p4,p1,p2,p3,p4)
#define GAN_REP4_AAA_C(a, b, c)   GAN_REP4_AAA(a,b,c,x,y,z,w)
#define GAN_REP4_OP_AB(a, b, p1, p2, p3, p4, q1, q2, q3, q4, op)   (a p1 b q1 op a p2 b q2 op a p3 b q3 op a p4 b q4)
#define GAN_REP4_OP_AA(a, b, p1, p2, p3, p4, op)   GAN_REP4_OP_AB(a,b,p1,p2,p3,p4,p1,p2,p3,p4,op)
#define GAN_REP4_OP_AA_C(a, b, op)   GAN_REP4_OP_AA(a,b,x,y,z,w,op)
#define GAN_FREP44_A(a, b, p1, p2, p3, p4, q1, q2, q3, q4, r11, r12, r13, r14, r21, r22, r23, r24, r31, r32, r33, r34, r41, r42, r43, r44)
#define GAN_FREP44_A_C(a, b, r11, r12, r13, r14, r21, r22, r23, r24, r31, r32, r33, r34, r41, r42, r43, r44)   GAN_FREP44_A(a,b,x,y,z,w,x,y,z,w,r11,r12,r13,r14,r21,r22,r23,r24,r31,r32,r33,r34,r41,r42,r43,r44)
#define GAN_REP44_ABCS(a, b, c, d, p1, p2, p3, p4, q1, q2, q3, q4, r1, r2, r3, r4, s1, s2, s3, s4, t1, t2, t3, t4, u1, u2, u3, u4)
#define GAN_REP44_ABC(a, b, c, p1, p2, p3, p4, q1, q2, q3, q4, r1, r2, r3, r4, s1, s2, s3, s4, t1, t2, t3, t4, u1, u2, u3, u4)
#define GAN_REP44_AAAS(a, b, c, d, p1, p2, p3, p4, q1, q2, q3, q4)   GAN_REP44_ABCS(a,b,c,d,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4)
#define GAN_REP44_AAA(a, b, c, p1, p2, p3, p4, q1, q2, q3, q4)   GAN_REP44_ABC(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4)
#define GAN_REP44_ABS(a, b, c, p1, p2, p3, p4, q1, q2, q3, q4, r1, r2, r3, r4, s1, s2, s3, s4)
#define GAN_REP44_AB(a, b, p1, p2, p3, p4, q1, q2, q3, q4, r1, r2, r3, r4, s1, s2, s3, s4)
#define GAN_REP44_AAS(a, b, c, p1, p2, p3, p4, q1, q2, q3, q4)   GAN_REP44_ABS(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4)
#define GAN_REP44_AA(a, b, p1, p2, p3, p4, q1, q2, q3, q4)   GAN_REP44_AB(a,b,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4)
#define GAN_REP44_AS(a, b, p1, p2, p3, p4, q1, q2, q3, q4)
#define GAN_REP44_A(a, p1, p2, p3, p4, q1, q2, q3, q4)
#define GAN_REP44_AS_C(a, b)   GAN_REP44_AS(a,b,x,y,z,w,x,y,z,w)
#define GAN_REP44_AAS_C(a, b, c)   GAN_REP44_AAS(a,b,c,x,y,z,w,x,y,z,w)
#define GAN_REP44_AAAS_C(a, b, c, d)   GAN_REP44_AAAS(a,b,c,d,x,y,z,w,x,y,z,w)
#define GAN_REP44_A_C(a)   GAN_REP44_A(a,x,y,z,w,x,y,z,w)
#define GAN_REP44_AA_C(a, b)   GAN_REP44_AA(a,b,x,y,z,w,x,y,z,w)
#define GAN_REP44_AAA_C(a, b, c)   GAN_REP44_AAA(a,b,c,x,y,z,w,x,y,z,w)
#define GAN_REP44_AAT(a, b, p1, p2, p3, p4, q1, q2, q3, q4)
#define GAN_REP44_AAT_C(a, b)   GAN_REP44_AAT(a,b,x,y,z,w,x,y,z,w)
#define GAN_FREP44L_A(a, b, p1, p2, p3, p4, q1, q2, q3, q4, r11, r21, r22, r31, r32, r33, r41, r42, r43, r44)
#define GAN_FREP44L_A_C(a, b, r11, r21, r22, r31, r32, r33, r41, r42, r43, r44)   GAN_FREP44L_A(a,b,x,y,z,w,x,y,z,w,r11,r21,r22,r31,r32,r33,r41,r42,r43,r44)
#define GAN_REP44L_ABCS(a, b, c, d, p1, p2, p3, p4, q1, q2, q3, q4, r1, r2, r3, r4, s1, s2, s3, s4, t1, t2, t3, t4, u1, u2, u3, u4)
#define GAN_REP44L_ABC(a, b, c, p1, p2, p3, p4, q1, q2, q3, q4, r1, r2, r3, r4, s1, s2, s3, s4, t1, t2, t3, t4, u1, u2, u3, u4)
#define GAN_REP44L_AAAS(a, b, c, d, p1, p2, p3, p4, q1, q2, q3, q4)   GAN_REP44L_ABCS(a,b,c,d,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4)
#define GAN_REP44L_AAA(a, b, c, p1, p2, p3, p4, q1, q2, q3, q4)   GAN_REP44L_ABC(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4)
#define GAN_REP44L_ABS(a, b, c, p1, p2, p3, p4, q1, q2, q3, q4, r1, r2, r3, r4, s1, s2, s3, s4)
#define GAN_REP44L_AB(a, b, p1, p2, p3, p4, q1, q2, q3, q4, r1, r2, r3, r4, s1, s2, s3, s4)
#define GAN_REP44L_AAS(a, b, c, p1, p2, p3, p4, q1, q2, q3, q4)   GAN_REP44L_ABS(a,b,c,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4)
#define GAN_REP44L_AA(a, b, p1, p2, p3, p4, q1, q2, q3, q4)   GAN_REP44L_AB(a,b,p1,p2,p3,p4,q1,q2,q3,q4,p1,p2,p3,p4,q1,q2,q3,q4)
#define GAN_REP44L_AS(a, b, p1, p2, p3, p4, q1, q2, q3, q4)
#define GAN_REP44L_A(a, p1, p2, p3, p4, q1, q2, q3, q4)
#define GAN_REP44L_AS_C(a, b)   GAN_REP44L_AS(a,b,x,y,z,w,x,y,z,w)
#define GAN_REP44L_AAS_C(a, b, c)   GAN_REP44L_AAS(a,b,c,x,y,z,w,x,y,z,w)
#define GAN_REP44L_AAAS_C(a, b, c, d)   GAN_REP44L_AAAS(a,b,c,d,x,y,z,w,x,y,z,w)
#define GAN_REP44L_A_C(a)   GAN_REP44L_A(a,x,y,z,w,x,y,z,w)
#define GAN_REP44L_AA_C(a, b)   GAN_REP44L_AA(a,b,x,y,z,w,x,y,z,w)
#define GAN_REP44L_AAA_C(a, b, c)   GAN_REP44L_AAA(a,b,c,x,y,z,w,x,y,z,w)
#define GAN_FREP44L_A_C(a, b, r11, r21, r22, r31, r32, r33, r41, r42, r43, r44)   GAN_FREP44L_A(a,b,x,y,z,w,x,y,z,w,r11,r21,r22,r31,r32,r33,r41,r42,r43,r44)
#define GAN_ST44F_FILL(A, t, XX, YX, YY, ZX, ZY, ZZ, WX, WY, WZ, WW)
#define GAN_ST44F_IDENT(A, t)
#define GAN_MAT44F_MULT1D(a, b, c, p1, p2, p3, p4, q1, q2, q3, q4)
#define GAN_MAT44TF_MULT1D(a, b, c, p1, p2, p3, p4, q1, q2, q3, q4)
#define GAN_SYM44F_MULT1D(a, b, c, p1, p2, p3, p4, q1, q2, q3, q4)
#define GAN_LOW44F_MULT1D(a, b, c, p1, p2, p3, p4, q1, q2, q3, q4)
#define GAN_LOW44IF_MULT1D(a, b, c, p1, p2, p3, p4, q1, q2, q3, q4)
#define GAN_UPP44F_MULT1D(a, b, c, p1, p2, p3, p4, q1, q2, q3, q4)
#define GAN_UPP44IF_MULT1D(a, b, c, p1, p2, p3, p4, q1, q2, q3, q4)
#define GAN_ST44F_ZERO(A, t)
#define GAN_ST44F_COPY(A, B, t)
#define GAN_ST44F_SCALE(A, a, B, t)
#define GAN_ST44F_DIVIDE(A, a, B, t)
#define GAN_ST44F_NEGATE(A, B, t)
#define GAN_ST44F_ADD(A, B, C, t)
#define GAN_ST44F_SUB(A, B, C, t)
#define GAN_MATTYPE   Gan_Matrix44_f
#define GAN_MATRIX_TYPE   Gan_Matrix_f
#define GAN_SQUMATRIX_TYPE   Gan_SquMatrix_f
#define GAN_VECTOR_TYPE   Gan_Vector_f
#define GAN_MAT_ELEMENT_TYPE   GAN_FLOAT
#define GAN_REALTYPE   float
#define GAN_FWRITE_LENDIAN   gan_fwrite_lendian_f32
#define GAN_FREAD_LENDIAN   gan_fread_lendian_f32
#define GAN_VECTYPE1   Gan_Vector4_f
#define GAN_VECTYPE2   Gan_Vector4_f
#define GAN_MATTYPEL   Gan_Matrix44_f
#define GAN_MATTYPER   Gan_Matrix44_f
#define GAN_SQUMATTYPEL   Gan_SquMatrix44_f
#define GAN_SQUMATTYPER   Gan_SquMatrix44_f
#define GAN_MAT_FPRINT   gan_mat44f_fprint
#define GAN_MAT_PRINT   gan_mat44f_print
#define GAN_MAT_FSCANF   gan_mat44f_fscanf
#define GAN_MAT_FWRITE   gan_mat44f_fwrite
#define GAN_MAT_FREAD   gan_mat44f_fread
#define GAN_MAT_ZERO_Q   gan_mat44f_zero_q
#define GAN_MAT_ZERO_S   gan_mat44f_zero_s
#define GAN_MAT_COPY_Q   gan_mat44f_copy_q
#define GAN_MAT_COPY_S   gan_mat44f_copy_s
#define GAN_MAT_SCALE_Q   gan_mat44f_scale_q
#define GAN_MAT_SCALE_I   gan_mat44f_scale_i
#define GAN_MAT_SCALE_S   gan_mat44f_scale_s
#define GAN_MAT_DIVIDE_Q   gan_mat44f_divide_q
#define GAN_MAT_DIVIDE_I   gan_mat44f_divide_i
#define GAN_MAT_DIVIDE_S   gan_mat44f_divide_s
#define GAN_MAT_NEGATE_Q   gan_mat44f_negate_q
#define GAN_MAT_NEGATE_I   gan_mat44f_negate_i
#define GAN_MAT_NEGATE_S   gan_mat44f_negate_s
#define GAN_MAT_UNIT_Q   gan_mat44f_unit_q
#define GAN_MAT_UNIT_I   gan_mat44f_unit_i
#define GAN_MAT_UNIT_S   gan_mat44f_unit_s
#define GAN_MAT_ADD_Q   gan_mat44f_add_q
#define GAN_MAT_ADD_I1   gan_mat44f_add_i1
#define GAN_MAT_ADD_I2   gan_mat44f_add_i2
#define GAN_MAT_INCREMENT   gan_mat44f_increment
#define GAN_MAT_ADD_S   gan_mat44f_add_s
#define GAN_MAT_SUB_Q   gan_mat44f_sub_q
#define GAN_MAT_SUB_I1   gan_mat44f_sub_i1
#define GAN_MAT_SUB_I2   gan_mat44f_sub_i2
#define GAN_MAT_DECREMENT   gan_mat44f_decrement
#define GAN_MAT_SUB_S   gan_mat44f_sub_s
#define GAN_VEC_OUTER_Q   gan_vec44f_outer_q
#define GAN_VEC_OUTER_S   gan_vec44f_outer_s
#define GAN_MAT_MULTV_Q   gan_mat44f_multv4_q
#define GAN_MAT_MULTV_S   gan_mat44f_multv4_s
#define GAN_MATT_MULTV_Q   gan_mat44Tf_multv4_q
#define GAN_MATT_MULTV_S   gan_mat44Tf_multv4_s
#define GAN_MAT_LMULTMT_Q   gan_mat44f_lmultm44T_q
#define GAN_MAT_LMULTMT_S   gan_mat44f_lmultm44T_s
#define GAN_MAT_RMULTM_Q   gan_mat44f_rmultm44_q
#define GAN_MAT_RMULTM_S   gan_mat44f_rmultm44_s
#define GAN_MAT_RMULTMT_Q   gan_mat44f_rmultm44T_q
#define GAN_MAT_RMULTMT_S   gan_mat44f_rmultm44T_s
#define GAN_MAT_LMULTMT_SYM_Q   gan_mat44f_lmultm44T_sym_q
#define GAN_MAT_LMULTMT_SYM_S   gan_mat44f_lmultm44T_sym_s
#define GAN_MAT_RMULTMT_SYM_Q   gan_mat44f_rmultm44T_sym_q
#define GAN_MAT_RMULTMT_SYM_S   gan_mat44f_rmultm44T_sym_s
#define GAN_MAT_SLMULTT_Q   gan_mat44f_slmultT_q
#define GAN_MAT_SLMULTT_S   gan_mat44f_slmultT_s
#define GAN_MAT_SRMULTT_Q   gan_mat44f_srmultT_q
#define GAN_MAT_SRMULTT_S   gan_mat44f_srmultT_s
#define GAN_MAT_LMULTS_Q   gan_mat44f_lmults44_q
#define GAN_MAT_LMULTS_S   gan_mat44f_lmults44_s
#define GAN_MAT_RMULTS_Q   gan_mat44f_rmults44_q
#define GAN_MAT_RMULTS_S   gan_mat44f_rmults44_s
#define GAN_SYMMATL_LRMULT_Q   gan_symmat44f_lrmultm44T_q
#define GAN_SYMMATL_LRMULT_S   gan_symmat44f_lrmultm44T_s
#define GAN_SYMMATR_LRMULT_Q   gan_symmat44f_lrmultm44_q
#define GAN_SYMMATR_LRMULT_S   gan_symmat44f_lrmultm44_s
#define GAN_MAT_LMULTL_Q   gan_mat44f_lmultl44_q
#define GAN_MAT_LMULTL_S   gan_mat44f_lmultl44_s
#define GAN_MAT_LMULTL_I   gan_mat44f_lmultl44_i
#define GAN_MAT_LMULTLI_Q   gan_mat44f_lmultl44I_q
#define GAN_MAT_LMULTLI_S   gan_mat44f_lmultl44I_s
#define GAN_MAT_LMULTLI_I   gan_mat44f_lmultl44I_i
#define GAN_MAT_LMULTLT_Q   gan_mat44f_lmultl44T_q
#define GAN_MAT_LMULTLT_S   gan_mat44f_lmultl44T_s
#define GAN_MAT_LMULTLT_I   gan_mat44f_lmultl44T_i
#define GAN_MAT_LMULTLIT_Q   gan_mat44f_lmultl44IT_q
#define GAN_MAT_LMULTLIT_S   gan_mat44f_lmultl44IT_s
#define GAN_MAT_LMULTLIT_I   gan_mat44f_lmultl44IT_i
#define GAN_MAT_RMULTL_Q   gan_mat44f_rmultl44_q
#define GAN_MAT_RMULTL_S   gan_mat44f_rmultl44_s
#define GAN_MAT_RMULTL_I   gan_mat44f_rmultl44_i
#define GAN_MAT_RMULTLI_Q   gan_mat44f_rmultl44I_q
#define GAN_MAT_RMULTLI_S   gan_mat44f_rmultl44I_s
#define GAN_MAT_RMULTLI_I   gan_mat44f_rmultl44I_i
#define GAN_MAT_RMULTLT_Q   gan_mat44f_rmultl44T_q
#define GAN_MAT_RMULTLT_S   gan_mat44f_rmultl44T_s
#define GAN_MAT_RMULTLT_I   gan_mat44f_rmultl44T_i
#define GAN_MAT_RMULTLIT_Q   gan_mat44f_rmultl44IT_q
#define GAN_MAT_RMULTLIT_S   gan_mat44f_rmultl44IT_s
#define GAN_MAT_RMULTLIT_I   gan_mat44f_rmultl44IT_i
#define GAN_MAT_SUMSQR_Q   gan_mat44f_sumsqr_q
#define GAN_MAT_SUMSQR_S   gan_mat44f_sumsqr_s
#define GAN_MAT_FNORM_Q   gan_mat44f_Fnorm_q
#define GAN_MAT_FNORM_S   gan_mat44f_Fnorm_s
#define GAN_MAT_FROM_MAT_Q   gan_mat44f_from_matf_q
#define GAN_MAT_FROM_MAT_S   gan_mat44f_from_matf_s
#define GAN_MAT_FROM_SQUMAT_Q   gan_mat44f_from_squmatf_q
#define GAN_MAT_FROM_SQUMAT_S   gan_mat44f_from_squmatf_s
#define GAN_SQUMAT_FROM_SQUMAT_Q   gan_squmat44f_from_squmatf_q
#define GAN_SQUMAT_FROM_SQUMAT_S   gan_squmat44f_from_squmatf_s
#define GAN_SQUMAT_IDENT_Q   gan_mat44f_ident_q
#define GAN_SQUMAT_IDENT_S   gan_mat44f_ident_s
#define GAN_SQUMAT_TPOSE_Q   gan_mat44f_tpose_q
#define GAN_SQUMAT_TPOSE_S   gan_mat44f_tpose_s
#define GAN_SQUMAT_TPOSE_I   gan_mat44f_tpose_i
#define GAN_MAT_SADDT_Q   gan_mat44f_saddT_q
#define GAN_MAT_SADDT_S   gan_mat44f_saddT_s
#define GAN_SQUMAT_INVERT   gan_mat44f_invert
#define GAN_SQUMAT_INVERT_Q   gan_mat44f_invert_q
#define GAN_SQUMAT_INVERT_S   gan_mat44f_invert_s
#define GAN_SQUMAT_INVERT_I   gan_mat44f_invert_i
#define GAN_SQUMAT_ADJOINT_Q   gan_mat44f_adjoint_q
#define GAN_SQUMAT_ADJOINT_S   gan_mat44f_adjoint_s
#define GAN_SQUMAT_ADJOINTT_Q   gan_mat44f_adjointT_q
#define GAN_SQUMAT_ADJOINTT_S   gan_mat44f_adjointT_s
#define GAN_SQUMAT_DET_Q   gan_mat44f_det_q
#define GAN_SQUMAT_DET_S   gan_mat44f_det_s
#define GAN_SQUMAT_TRACE_Q   gan_mat44f_trace_q
#define GAN_SQUMAT_TRACE_S   gan_mat44f_trace_s
#define GAN_MATTYPE   Gan_SquMatrix44_f
#define GAN_MATRIX_TYPE   Gan_SquMatrix_f
#define GAN_SQUMATRIX_TYPE   Gan_SquMatrix_f
#define GAN_VECTOR_TYPE   Gan_Vector_f
#define GAN_MAT_ELEMENT_TYPE   GAN_FLOAT
#define GAN_REALTYPE   float
#define GAN_FWRITE_LENDIAN   gan_fwrite_lendian_f32
#define GAN_FREAD_LENDIAN   gan_fread_lendian_f32
#define GAN_VECTYPE1   Gan_Vector4_f
#define GAN_VECTYPE2   Gan_Vector4_f
#define GAN_FIXED_MATRIX_TYPE   GAN_SYMMETRIC_MATRIX44_F
#define GAN_MAT_FPRINT   gan_symmat44f_fprint
#define GAN_MAT_PRINT   gan_symmat44f_print
#define GAN_MAT_FSCANF   gan_symmat44f_fscanf
#define GAN_MAT_FWRITE   gan_symmat44f_fwrite
#define GAN_MAT_FREAD   gan_symmat44f_fread
#define GAN_MAT_ZERO_Q   gan_symmat44f_zero_q
#define GAN_MAT_ZERO_S   gan_symmat44f_zero_s
#define GAN_MAT_COPY_Q   gan_symmat44f_copy_q
#define GAN_MAT_COPY_S   gan_symmat44f_copy_s
#define GAN_MAT_SCALE_Q   gan_symmat44f_scale_q
#define GAN_MAT_SCALE_S   gan_symmat44f_scale_s
#define GAN_MAT_SCALE_I   gan_symmat44f_scale_i
#define GAN_MAT_DIVIDE_Q   gan_symmat44f_divide_q
#define GAN_MAT_DIVIDE_S   gan_symmat44f_divide_s
#define GAN_MAT_DIVIDE_I   gan_symmat44f_divide_i
#define GAN_MAT_NEGATE_Q   gan_symmat44f_negate_q
#define GAN_MAT_NEGATE_S   gan_symmat44f_negate_s
#define GAN_MAT_NEGATE_I   gan_symmat44f_negate_i
#define GAN_MAT_UNIT_Q   gan_symmat44f_unit_q
#define GAN_MAT_UNIT_S   gan_symmat44f_unit_s
#define GAN_MAT_UNIT_I   gan_symmat44f_unit_i
#define GAN_MAT_ADD_Q   gan_symmat44f_add_q
#define GAN_MAT_ADD_I1   gan_symmat44f_add_i1
#define GAN_MAT_ADD_I2   gan_symmat44f_add_i2
#define GAN_MAT_INCREMENT   gan_symmat44f_increment
#define GAN_MAT_ADD_S   gan_symmat44f_add_s
#define GAN_MAT_SUB_Q   gan_symmat44f_sub_q
#define GAN_MAT_SUB_I1   gan_symmat44f_sub_i1
#define GAN_MAT_SUB_I2   gan_symmat44f_sub_i2
#define GAN_MAT_DECREMENT   gan_symmat44f_decrement
#define GAN_MAT_SUB_S   gan_symmat44f_sub_s
#define GAN_MAT_MULTV_Q   gan_symmat44f_multv4_q
#define GAN_MAT_MULTV_S   gan_symmat44f_multv4_s
#define GAN_MAT_SUMSQR_Q   gan_symmat44f_sumsqr_q
#define GAN_MAT_SUMSQR_S   gan_symmat44f_sumsqr_s
#define GAN_MAT_FNORM_Q   gan_symmat44f_Fnorm_q
#define GAN_MAT_FNORM_S   gan_symmat44f_Fnorm_s
#define GAN_SQUMAT_IDENT_Q   gan_symmat44f_ident_q
#define GAN_SQUMAT_IDENT_S   gan_symmat44f_ident_s
#define GAN_SQUMAT_INVERT   gan_symmat44f_invert
#define GAN_SQUMAT_INVERT_Q   gan_symmat44f_invert_q
#define GAN_SQUMAT_INVERT_S   gan_symmat44f_invert_s
#define GAN_SQUMAT_INVERT_I   gan_symmat44f_invert_i
#define GAN_SQUMAT_DET_Q   gan_symmat44f_det_q
#define GAN_SQUMAT_DET_S   gan_symmat44f_det_s
#define GAN_SQUMAT_TRACE_Q   gan_symmat44f_trace_q
#define GAN_SQUMAT_TRACE_S   gan_symmat44f_trace_s
#define GAN_VEC_OUTER_SYM_Q   gan_vec44f_outer_sym_q
#define GAN_VEC_OUTER_SYM_S   gan_vec44f_outer_sym_s
#define GAN_SYMMAT_CHOLESKY   gan_symmat44f_cholesky
#define GAN_SYMMAT_CHOLESKY_Q   gan_symmat44f_cholesky_q
#define GAN_SYMMAT_CHOLESKY_S   gan_symmat44f_cholesky_s
#define GAN_SYMMAT_CHOLESKY_I   gan_symmat44f_cholesky_i
#define GAN_MATTYPE   Gan_SquMatrix44_f
#define GAN_MATRIX_TYPE   Gan_SquMatrix_f
#define GAN_SQUMATRIX_TYPE   Gan_SquMatrix_f
#define GAN_VECTOR_TYPE   Gan_Vector_f
#define GAN_MAT_ELEMENT_TYPE   GAN_FLOAT
#define GAN_REALTYPE   float
#define GAN_FWRITE_LENDIAN   gan_fwrite_lendian_f32
#define GAN_FREAD_LENDIAN   gan_fread_lendian_f32
#define GAN_VECTYPE1   Gan_Vector4_f
#define GAN_VECTYPE2   Gan_Vector4_f
#define GAN_SQUMATTYPEL   Gan_SquMatrix44_f
#define GAN_SQUMATTYPER   Gan_SquMatrix44_f
#define GAN_FIXED_MATRIX_TYPE   GAN_LOWER_TRI_MATRIX44_F
#define GAN_MAT_FPRINT   gan_ltmat44f_fprint
#define GAN_MAT_PRINT   gan_ltmat44f_print
#define GAN_MAT_FSCANF   gan_ltmat44f_fscanf
#define GAN_MAT_FWRITE   gan_ltmat44f_fwrite
#define GAN_MAT_FREAD   gan_ltmat44f_fread
#define GAN_MAT_ZERO_Q   gan_ltmat44f_zero_q
#define GAN_MAT_ZERO_S   gan_ltmat44f_zero_s
#define GAN_MAT_COPY_Q   gan_ltmat44f_copy_q
#define GAN_MAT_COPY_S   gan_ltmat44f_copy_s
#define GAN_MAT_SCALE_Q   gan_ltmat44f_scale_q
#define GAN_MAT_SCALE_S   gan_ltmat44f_scale_s
#define GAN_MAT_SCALE_I   gan_ltmat44f_scale_i
#define GAN_MAT_DIVIDE_Q   gan_ltmat44f_divide_q
#define GAN_MAT_DIVIDE_S   gan_ltmat44f_divide_s
#define GAN_MAT_DIVIDE_I   gan_ltmat44f_divide_i
#define GAN_MAT_NEGATE_Q   gan_ltmat44f_negate_q
#define GAN_MAT_NEGATE_S   gan_ltmat44f_negate_s
#define GAN_MAT_NEGATE_I   gan_ltmat44f_negate_i
#define GAN_MAT_UNIT_Q   gan_ltmat44f_unit_q
#define GAN_MAT_UNIT_S   gan_ltmat44f_unit_s
#define GAN_MAT_UNIT_I   gan_ltmat44f_unit_i
#define GAN_MAT_ADD_Q   gan_ltmat44f_add_q
#define GAN_MAT_ADD_I1   gan_ltmat44f_add_i1
#define GAN_MAT_ADD_I2   gan_ltmat44f_add_i2
#define GAN_MAT_INCREMENT   gan_ltmat44f_increment
#define GAN_MAT_ADD_S   gan_ltmat44f_add_s
#define GAN_MAT_SUB_Q   gan_ltmat44f_sub_q
#define GAN_MAT_SUB_I1   gan_ltmat44f_sub_i1
#define GAN_MAT_SUB_I2   gan_ltmat44f_sub_i2
#define GAN_MAT_DECREMENT   gan_ltmat44f_decrement
#define GAN_MAT_SUB_S   gan_ltmat44f_sub_s
#define GAN_MAT_MULTV_Q   gan_ltmat44f_multv4_q
#define GAN_MAT_MULTV_S   gan_ltmat44f_multv4_s
#define GAN_MAT_MULTV_I   gan_ltmat44f_multv4_i
#define GAN_MATT_MULTV_Q   gan_ltmat44Tf_multv4_q
#define GAN_MATT_MULTV_S   gan_ltmat44Tf_multv4_s
#define GAN_MATT_MULTV_I   gan_ltmat44Tf_multv4_i
#define GAN_MAT_SRMULTT_Q   gan_ltmat44f_srmultT_q
#define GAN_MAT_SRMULTT_S   gan_ltmat44f_srmultT_s
#define GAN_MAT_SRMULTT_I   gan_ltmat44f_srmultT_i
#define GAN_MAT_SLMULTT_Q   gan_ltmat44f_slmultT_q
#define GAN_MAT_SLMULTT_S   gan_ltmat44f_slmultT_s
#define GAN_MAT_SLMULTT_I   gan_ltmat44f_slmultT_i
#define GAN_MAT_SUMSQR_Q   gan_ltmat44f_sumsqr_q
#define GAN_MAT_SUMSQR_S   gan_ltmat44f_sumsqr_s
#define GAN_MAT_FNORM_Q   gan_ltmat44f_Fnorm_q
#define GAN_MAT_FNORM_S   gan_ltmat44f_Fnorm_s
#define GAN_SQUMAT_IDENT_Q   gan_ltmat44f_ident_q
#define GAN_SQUMAT_IDENT_S   gan_ltmat44f_ident_s
#define GAN_SQUMATI_MULTV_Q   gan_ltmat44If_multv4_q
#define GAN_SQUMATI_MULTV_S   gan_ltmat44If_multv4_s
#define GAN_SQUMATI_MULTV_I   gan_ltmat44If_multv4_i
#define GAN_SQUMATIT_MULTV_Q   gan_ltmat44ITf_multv4_q
#define GAN_SQUMATIT_MULTV_S   gan_ltmat44ITf_multv4_s
#define GAN_SQUMATIT_MULTV_I   gan_ltmat44ITf_multv4_i
#define GAN_SQUMAT_INVERT   gan_ltmat44f_invert
#define GAN_SQUMAT_INVERT_Q   gan_ltmat44f_invert_q
#define GAN_SQUMAT_INVERT_S   gan_ltmat44f_invert_s
#define GAN_SQUMAT_INVERT_I   gan_ltmat44f_invert_i
#define GAN_SQUMAT_DET_Q   gan_ltmat44f_det_q
#define GAN_SQUMAT_DET_S   gan_ltmat44f_det_s
#define GAN_SQUMAT_TRACE_Q   gan_ltmat44f_trace_q
#define GAN_SQUMAT_TRACE_S   gan_ltmat44f_trace_s
#define GAN_MATTYPE   Gan_SquMatrix44_f
#define GAN_MATRIX_TYPE   Gan_SquMatrix_f
#define GAN_SQUMATRIX_TYPE   Gan_SquMatrix_f
#define GAN_VECTOR_TYPE   Gan_Vector_f
#define GAN_MAT_ELEMENT_TYPE   GAN_FLOAT
#define GAN_REALTYPE   float
#define GAN_MAT_FPRINT   gan_ltmat44Tf_fprint
#define GAN_MAT_PRINT   gan_ltmat44Tf_print
#define GAN_MAT_FSCANF   gan_ltmat44Tf_fscanf
#define GAN_FIXED_MATRIX_TYPE   GAN_LOWER_TRI_MATRIX44_F
#define gan_ltmat44Tf_fwrite   gan_ltmat44f_fwrite
#define gan_ltmat44Tf_fread   gan_ltmat44f_fread

Typedefs

typedef Gan_Matrix44_f Gan_Matrix44_f
 Structure definition for single precision 4x4 matrix.
typedef Gan_SquMatrix44_f Gan_SquMatrix44_f
 Structure definition for square single precision 4x4 matrix.

Enumerations

enum  Gan_SquMatrix44Type_f { GAN_SYMMETRIC_MATRIX44_F, GAN_LOWER_TRI_MATRIX44_F }
 Square matrix type, for setting and checking in debug mode.

Functions

Gan_Matrix44_fgan_mat44f_fill_q (Gan_Matrix44_f *A, float XX, float XY, float XZ, float XW, float YX, float YY, float YZ, float YW, float ZX, float ZY, float ZZ, float ZW, float WX, float WY, float WZ, float WW)
 Macro: Fill 4x4 matrix with values.
void gan_mat44f_get_rows_q (const Gan_Matrix44_f *A, Gan_Vector4_f *p, Gan_Vector4_f *q, Gan_Vector4_f *r, Gan_Vector4_f *s)
 Macro: Extract rows of 4x4 matrix.
void gan_mat44f_get_cols_q (const Gan_Matrix44_f *A, Gan_Vector4_f *p, Gan_Vector4_f *q, Gan_Vector4_f *r, Gan_Vector4_f *s)
 Macro: Extract columns of 4x4 matrix.
Gan_Matrix33_fgan_mat44f_get_m33tl_q (const Gan_Matrix44_f *A, Gan_Matrix33_f *B)
 Macro: Extract top-left 3x3 part of 4x4 matrix.
Gan_Vector3_fgan_mat44f_get_v3tr_q (const Gan_Matrix44_f *A, Gan_Vector3_f *p)
 Macro: Extract top part of right hand column of 4x4 matrix.
void gan_mat44f_get_parts_q (const Gan_Matrix44_f *A, Gan_Matrix33_f *B, Gan_Vector3_f *p, Gan_Vector3_f *q, float *s)
 Macro: Extract parts of 4x4 matrix.
void gan_mat44f_get_blocks_q (const Gan_Matrix44_f *M, Gan_Matrix22_f *A, Gan_Matrix22_f *B, Gan_Matrix22_f *C, Gan_Matrix22_f *D)
 Macro: Extract 2x2 block parts of 4x4 matrix.
Gan_Matrix44_fgan_mat44f_set_parts_q (Gan_Matrix44_f *A, const Gan_Matrix33_f *B, const Gan_Vector3_f *p, const Gan_Vector3_f *q, float s)
 Macro: Build a 4x4 matrix from parts.
Gan_Matrix44_fgan_mat44f_set_blocks_q (Gan_Matrix44_f *M, const Gan_Matrix22_f *A, const Gan_Matrix22_f *B, const Gan_Matrix22_f *C, const Gan_Matrix22_f *D)
 Macro: Build a 4x4 matrix from 2x2 blocks.
Gan_Matrix44_fgan_mat44f_ident_q (Gan_Matrix44_f *A)
 Macro: Fill fixed size square matrix with identity.
Gan_Matrix44_fgan_mat44f_tpose_q (Gan_Matrix44_f *A, Gan_Matrix44_f *B)
 Macro: Transpose fixed size square matrix.
Gan_SquMatrix44_fgan_mat44f_saddT_q (const Gan_Matrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Add matrix to its own transpose.
Gan_Matrix44_fgan_mat44f_invert_q (Gan_Matrix44_f *A, Gan_Matrix44_f *B)
 Macro: Invert fixed size square matrix.
Gan_Matrix44_fgan_mat44f_invert_i (Gan_Matrix44_f *A)
 Macro: Invert fixed size square matrix in-place.
float gan_mat44f_det_q (const Gan_Matrix44_f *A)
 Macro: Determinant of square matrix.
float gan_mat44f_trace_q (const Gan_Matrix44_f *A)
 Macro: Trace of square matrix.
Gan_Matrix44_fgan_mat44f_zero_q (const Gan_Matrix44_f *A)
 Macro: Fill fixed size matrix with zero.
Gan_Matrix44_fgan_mat44f_copy_q (Gan_Matrix44_f *A, Gan_Matrix44_f *B)
 Macro: Copy fixed size matrix.
Gan_Matrix44_fgan_mat44f_scale_q (Gan_Matrix44_f *A, float a, Gan_Matrix44_f *B)
 Macro: Scale fixed size matrix.
Gan_Matrix44_fgan_mat44f_scale_i (Gan_Matrix44_f *A, float a)
 Macro: Scale fixed size matrix.
Gan_Matrix44_fgan_mat44f_divide_q (Gan_Matrix44_f *A, float a, Gan_Matrix44_f *B)
 Macro: Divide fixed size matrix by scalar.
Gan_Matrix44_fgan_mat44f_divide_i (Gan_Matrix44_f *A, float a)
 Macro: Divide fixed size matrix by scalar.
Gan_Matrix44_fgan_mat44f_negate_q (Gan_Matrix44_f *A, Gan_Matrix44_f *B)
 Macro: Negate fixed size matrix.
Gan_Matrix44_fgan_mat44f_negate_i (Gan_Matrix44_f *A)
 Macro: Negate fixed size matrix.
Gan_Matrix44_fgan_mat44f_unit_i (Gan_Matrix44_f *A)
 Macro: Scale matrix to unit norm.
Gan_Matrix44_fgan_mat44f_add_q (Gan_Matrix44_f *A, Gan_Matrix44_f *B, Gan_Matrix44_f *C)
 Macro: Add two fixed size matrices.
Gan_Matrix44_fgan_mat44f_add_i1 (Gan_Matrix44_f *A, Gan_Matrix44_f *B)
 Macro: Add two fixed size matrices.
Gan_Matrix44_fgan_mat44f_add_i2 (Gan_Matrix44_f *A, Gan_Matrix44_f *B)
 Macro: Add two fixed size matrices.
Gan_Matrix44_fgan_mat44f_increment (Gan_Matrix44_f *A, Gan_Matrix44_f *B)
 Macro: Increment a fixed size vector by another.
Gan_Matrix44_fgan_mat44f_sub_q (Gan_Matrix44_f *A, Gan_Matrix44_f *B, Gan_Matrix44_f *C)
 Macro: Subtract two fixed size matrices.
Gan_Matrix44_fgan_mat44f_sub_i1 (Gan_Matrix44_f *A, Gan_Matrix44_f *B)
 Macro: Subtract two fixed size matrices.
Gan_Matrix44_fgan_mat44f_sub_i2 (Gan_Matrix44_f *A, Gan_Matrix44_f *B)
 Macro: Subtract two fixed size matrices.
Gan_Matrix44_fgan_mat44f_decrement (Gan_Matrix44_f *A, Gan_Matrix44_f *B)
 Macro: Decrement a fixed size vector by another.
Gan_Matrix44_fgan_vec44f_outer_q (const Gan_Vector4_f *p, const Gan_Vector4_f *q, Gan_Matrix44_f *A)
 Macro: Compute the outer product of two fixed size vectors.
Gan_Vector4_fgan_mat44f_multv4_q (const Gan_Matrix44_f *A, Gan_Vector4_f *p, Gan_Vector4_f *q)
 Macro: Matrix/vector product.
Gan_Vector4_fgan_mat44Tf_multv4_q (const Gan_Matrix44_f *A, Gan_Vector4_f *p, Gan_Vector4_f *q)
 Macro: Matrix/vector product with the matrix transposed.
Gan_Matrix44_fgan_mat44f_lmultm44T_q (Gan_Matrix44_f *A, const Gan_Matrix44_f *B, Gan_Matrix44_f *C)
 Macro: Left-multiply a matrix by the transpose of another matrix.
Gan_Matrix44_fgan_mat44f_rmultm44_q (Gan_Matrix44_f *A, const Gan_Matrix44_f *B, Gan_Matrix44_f *C)
 Macro: Right-multiply a matrix by another matrix.
Gan_Matrix44_fgan_mat44f_rmultm44T_q (Gan_Matrix44_f *A, const Gan_Matrix44_f *B, Gan_Matrix44_f *C)
 Macro: Right-multiply a matrix by the transpose of another matrix.
Gan_SquMatrix44_fgan_mat44f_lmultm44T_sym_q (const Gan_Matrix44_f *A, const Gan_Matrix44_f *B, Gan_SquMatrix44_f *C)
 Macro: Matrix product producing a symmetric matrix.
Gan_SquMatrix44_fgan_mat44f_rmultm44T_sym_q (const Gan_Matrix44_f *A, const Gan_Matrix44_f *B, Gan_SquMatrix44_f *C)
 Macro: Matrix product producing a symmetric matrix.
Gan_Matrix44_fgan_mat44f_lmults44_q (Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B, Gan_Matrix44_f *C)
 Macro: Left-multiply a matrix by a symmetric matrix.
Gan_Matrix44_fgan_mat44f_rmults44_q (Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B, Gan_Matrix44_f *C)
 Macro: Right-multiply a matrix by a symmetric matrix.
Gan_SquMatrix44_fgan_symmat44f_lrmultm44T_q (const Gan_SquMatrix44_f *A, const Gan_Matrix44_f *B, const Gan_Matrix44_f *C, Gan_SquMatrix44_f *D)
 Macro: Matrix triple product involving symmetric matrices.
Gan_SquMatrix44_fgan_symmat44f_lrmultm44_q (const Gan_SquMatrix44_f *A, const Gan_Matrix44_f *B, const Gan_Matrix44_f *C, Gan_SquMatrix44_f *D)
 Macro: Matrix triple product involving symmetric matrices.
Gan_Matrix44_fgan_mat44f_lmultl44_q (Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B, Gan_Matrix44_f *C)
 Macro: Left-multiply a matrix by a lower-triangular matrix.
Gan_Matrix44_fgan_mat44f_lmultl44I_q (Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B, Gan_Matrix44_f *C)
 Macro: Left-multiply a matrix by the inverse of a lower-triangular matrix.
Gan_Matrix44_fgan_mat44f_lmultl44T_q (Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B, Gan_Matrix44_f *C)
 Macro: Left-multiply a matrix by the transpose of a lower-triangular matrix.
Gan_Matrix44_fgan_mat44f_lmultl44IT_q (Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B, Gan_Matrix44_f *C)
 Macro: Left-multiply a matrix by the inverse transpose of a lower-triangular matrix.
Gan_Matrix44_fgan_mat44f_rmultl44_q (Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B, Gan_Matrix44_f *C)
 Macro: Right-multiply a matrix by a lower-triangular matrix.
Gan_Matrix44_fgan_mat44f_rmultl44I_q (Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B, Gan_Matrix44_f *C)
 Macro: Right-multiply a matrix by the inverse of a lower-triangular matrix.
Gan_Matrix44_fgan_mat44f_rmultl44T_q (Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B, Gan_Matrix44_f *C)
 Macro: Right-multiply a matrix by the transpose of a lower-triangular matrix.
Gan_Matrix44_fgan_mat44f_rmultl44IT_q (Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B, Gan_Matrix44_f *C)
 Macro: Right-multiply a matrix by the inverse transpose of a lower-triangular matrix.
Gan_Matrix44_fgan_mat44f_lmultl44_i (Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B)
 Macro: Left-multiply a matrix by a lower-triangular matrix.
Gan_Matrix44_fgan_mat44f_lmultl44I_i (Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B)
 Macro: Left-multiply a matrix by the inverse of a lower-triangular matrix.
Gan_Matrix44_fgan_mat44f_lmultl44T_i (Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B)
 Macro: Left-multiply a matrix by the transpose of a lower-triangular matrix.
Gan_Matrix44_fgan_mat44f_lmultl44IT_i (Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B)
 Macro: Left-multiply a matrix by the inverse transpose of a lower-triangular matrix.
Gan_Matrix44_fgan_mat44f_rmultl44_i (Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B)
 Macro: Right-multiply a matrix by a lower-triangular matrix.
Gan_Matrix44_fgan_mat44f_rmultl44I_i (Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B)
 Macro: Right-multiply a matrix by the inverse of a lower-triangular matrix.
Gan_Matrix44_fgan_mat44f_rmultl44T_i (Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B)
 Macro: Right-multiply a matrix by the transpose of a lower-triangular matrix.
Gan_Matrix44_fgan_mat44f_rmultl44IT_i (Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B)
 Macro: Right-multiply a matrix by the inverse transpose of a lower-triangular matrix.
Gan_SquMatrix44_fgan_mat44f_slmultT_q (Gan_Matrix44_f *A, const Gan_SquMatrix44_f *B)
 Macro: Left-multiply a matrix by its own transpose, producing a symmetric matrix.
Gan_SquMatrix44_fgan_mat44f_srmultT_q (const Gan_Matrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Right-multiply a matrix by its own transpose, producing a symmetric matrix.
float gan_mat44f_sumsqr_q (const Gan_Matrix44_f *A)
 Macro: Returns sum of squares of matrix elements.
float gan_mat44f_Fnorm_q (const Gan_Matrix44_f *A)
 Macro: Frobenius norm of matrix.
Gan_SquMatrix44_fgan_symmat44f_fill_q (Gan_SquMatrix44_f *A, float XX, float YX, float YY, float ZX, float ZY, float ZZ, float WX, float WY, float WZ, float WW)
 Macro: Fill 4x4 symmetric matrix with values.
void gan_symmat44f_get_parts_q (const Gan_SquMatrix44_f *A, Gan_SquMatrix33_f *B, Gan_Vector3_f *p, float *s)
 Macro: Extract parts of 4x4 symmetric matrix.
void gan_symmat44f_get_blocks_q (const Gan_SquMatrix44_f *A, Gan_SquMatrix22_f *B, Gan_Matrix22_f *C, Gan_SquMatrix22_f *D)
 Macro: Extract 2x2 block parts of 4x4 symmetric matrix.
Gan_SquMatrix44_fgan_symmat44f_set_parts_q (Gan_SquMatrix44_f *A, const Gan_SquMatrix33_f *B, const Gan_Vector3_f *p, float s)
 Macro: Build a 4x4 symmetric matrix from parts.
Gan_SquMatrix44_fgan_symmat44f_set_blocks_q (Gan_SquMatrix44_f *A, const Gan_SquMatrix22_f *B, const Gan_Matrix22_f *C, const Gan_SquMatrix22_f *D)
 Macro: Build a 4x4 symmetric matrix from 2x2 blocks.
Gan_SquMatrix44_fgan_vec44f_outer_sym_q (const Gan_Vector4_f *p, Gan_SquMatrix44_f *A)
 Macro: Computes the outer product of vector with itself.
Gan_SquMatrix44_fgan_symmat44f_cholesky_q (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Compute Cholesky factorisation of fixed size symmetric matrix.
Gan_SquMatrix44_fgan_symmat44f_cholesky_i (Gan_SquMatrix44_f *A)
 Macro: Compute Cholesky factorisation of fixed size symmetric matrix.
Gan_SquMatrix44_fgan_symmat44f_ident_q (Gan_SquMatrix44_f *A)
 Macro: Fill fixed size square matrix with identity.
Gan_SquMatrix44_fgan_symmat44f_invert_q (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Invert fixed size square matrix.
Gan_SquMatrix44_fgan_symmat44f_invert_i (Gan_SquMatrix44_f *A)
 Macro: Invert fixed size square matrix in-place.
float gan_symmat44f_det_q (const Gan_SquMatrix44_f *A)
 Macro: Determinant of square matrix.
float gan_symmat44f_trace_q (const Gan_SquMatrix44_f *A)
 Macro: Trace of square matrix.
Gan_SquMatrix44_fgan_symmat44f_zero_q (const Gan_SquMatrix44_f *A)
 Macro: Fill fixed size matrix with zero.
Gan_SquMatrix44_fgan_symmat44f_copy_q (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Copy fixed size matrix.
Gan_SquMatrix44_fgan_symmat44f_scale_q (Gan_SquMatrix44_f *A, float a, Gan_SquMatrix44_f *B)
 Macro: Scale fixed size matrix.
Gan_SquMatrix44_fgan_symmat44f_scale_i (Gan_SquMatrix44_f *A, float a)
 Macro: Scale fixed size matrix.
Gan_SquMatrix44_fgan_symmat44f_divide_q (Gan_SquMatrix44_f *A, float a, Gan_SquMatrix44_f *B)
 Macro: Divide fixed size matrix by scalar.
Gan_SquMatrix44_fgan_symmat44f_divide_i (Gan_SquMatrix44_f *A, float a)
 Macro: Divide fixed size matrix by scalar.
Gan_SquMatrix44_fgan_symmat44f_negate_q (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Negate fixed size matrix.
Gan_SquMatrix44_fgan_symmat44f_negate_i (Gan_SquMatrix44_f *A)
 Macro: Negate fixed size matrix.
Gan_SquMatrix44_fgan_symmat44f_unit_i (Gan_SquMatrix44_f *A)
 Macro: Scale matrix to unit norm.
Gan_SquMatrix44_fgan_symmat44f_add_q (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B, Gan_SquMatrix44_f *C)
 Macro: Add two fixed size matrices.
Gan_SquMatrix44_fgan_symmat44f_add_i1 (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Add two fixed size matrices.
Gan_SquMatrix44_fgan_symmat44f_add_i2 (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Add two fixed size matrices.
Gan_SquMatrix44_fgan_symmat44f_increment (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Increment a fixed size vector by another.
Gan_SquMatrix44_fgan_symmat44f_sub_q (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B, Gan_SquMatrix44_f *C)
 Macro: Subtract two fixed size matrices.
Gan_SquMatrix44_fgan_symmat44f_sub_i1 (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Subtract two fixed size matrices.
Gan_SquMatrix44_fgan_symmat44f_sub_i2 (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Subtract two fixed size matrices.
Gan_SquMatrix44_fgan_symmat44f_decrement (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Decrement a fixed size vector by another.
Gan_Vector4_fgan_symmat44f_multv4_q (const Gan_SquMatrix44_f *A, Gan_Vector4_f *p, Gan_Vector4_f *q)
 Macro: Matrix/vector product.
float gan_symmat44f_sumsqr_q (const Gan_SquMatrix44_f *A)
 Macro: Returns sum of squares of matrix elements.
float gan_symmat44f_Fnorm_q (const Gan_SquMatrix44_f *A)
 Macro: Frobenius norm of matrix.
Gan_SquMatrix44_fgan_ltmat44f_fill_q (Gan_SquMatrix44_f *A, float XX, float YX, float YY, float ZX, float ZY, float ZZ, float WX, float WY, float WZ, float WW)
 Macro: Fill 4x4 lower triangular matrix with values.
void gan_ltmat44f_get_parts_q (const Gan_SquMatrix44_f *A, Gan_SquMatrix33_f *B, Gan_Vector3_f *p, float *s)
 Macro: Extract parts of 4x4 lower triangular matrix.
Gan_SquMatrix44_fgan_ltmat44f_set_parts_q (Gan_SquMatrix44_f *A, const Gan_SquMatrix33_f *B, const Gan_Vector3_f *p, float s)
 Macro: Build a 4x4 lower triangular matrix from parts.
Gan_SquMatrix44_fgan_ltmat44f_ident_q (Gan_SquMatrix44_f *A)
 Macro: Fill fixed size square matrix with identity.
Gan_Vector4_fgan_ltmat44If_multv4_q (const Gan_SquMatrix44_f *A, Gan_Vector4_f *p, Gan_Vector4_f *q)
 Macro: Computes the product of the inverse of a matrix and a vector.
Gan_Vector4_fgan_ltmat44If_multv4_i (const Gan_SquMatrix44_f *A, Gan_Vector4_f *p)
 Macro: Computes the product of the inverse of matrix and a vector in-place.
Gan_Vector4_fgan_ltmat44ITf_multv4_q (const Gan_SquMatrix44_f *A, Gan_Vector4_f *p, Gan_Vector4_f *q)
 Macro: Computes the product of an inverted transposed matrix and a vector.
Gan_Vector4_fgan_ltmat44ITf_multv4_i (const Gan_SquMatrix44_f *A, Gan_Vector4_f *p)
 Macro: Computes the product of an inverted transposed matrix and a vector in-place.
Gan_SquMatrix44_fgan_ltmat44f_invert_q (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Invert fixed size square matrix.
Gan_SquMatrix44_fgan_ltmat44f_invert_i (Gan_SquMatrix44_f *A)
 Macro: Invert fixed size square matrix in-place.
float gan_ltmat44f_det_q (const Gan_SquMatrix44_f *A)
 Macro: Determinant of square matrix.
float gan_ltmat44f_trace_q (const Gan_SquMatrix44_f *A)
 Macro: Trace of square matrix.
Gan_SquMatrix44_fgan_ltmat44f_zero_q (const Gan_SquMatrix44_f *A)
 Macro: Fill fixed size matrix with zero.
Gan_SquMatrix44_fgan_ltmat44f_copy_q (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Copy fixed size matrix.
Gan_SquMatrix44_fgan_ltmat44f_scale_q (Gan_SquMatrix44_f *A, float a, Gan_SquMatrix44_f *B)
 Macro: Scale fixed size matrix.
Gan_SquMatrix44_fgan_ltmat44f_scale_i (Gan_SquMatrix44_f *A, float a)
 Macro: Scale fixed size matrix.
Gan_SquMatrix44_fgan_ltmat44f_divide_q (Gan_SquMatrix44_f *A, float a, Gan_SquMatrix44_f *B)
 Macro: Divide fixed size matrix by scalar.
Gan_SquMatrix44_fgan_ltmat44f_divide_i (Gan_SquMatrix44_f *A, float a)
 Macro: Divide fixed size matrix by scalar.
Gan_SquMatrix44_fgan_ltmat44f_negate_q (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Negate fixed size matrix.
Gan_SquMatrix44_fgan_ltmat44f_negate_i (Gan_SquMatrix44_f *A)
 Macro: Negate fixed size matrix.
Gan_SquMatrix44_fgan_ltmat44f_unit_i (Gan_SquMatrix44_f *A)
 Macro: Scale matrix to unit norm.
Gan_SquMatrix44_fgan_ltmat44f_add_q (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B, Gan_SquMatrix44_f *C)
 Macro: Add two fixed size matrices.
Gan_SquMatrix44_fgan_ltmat44f_add_i1 (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Add two fixed size matrices.
Gan_SquMatrix44_fgan_ltmat44f_add_i2 (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Add two fixed size matrices.
Gan_SquMatrix44_fgan_ltmat44f_increment (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Increment a fixed size vector by another.
Gan_SquMatrix44_fgan_ltmat44f_sub_q (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B, Gan_SquMatrix44_f *C)
 Macro: Subtract two fixed size matrices.
Gan_SquMatrix44_fgan_ltmat44f_sub_i1 (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Subtract two fixed size matrices.
Gan_SquMatrix44_fgan_ltmat44f_sub_i2 (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Subtract two fixed size matrices.
Gan_SquMatrix44_fgan_ltmat44f_decrement (Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Decrement a fixed size vector by another.
Gan_Vector4_fgan_ltmat44f_multv4_q (const Gan_SquMatrix44_f *A, Gan_Vector4_f *p, Gan_Vector4_f *q)
 Macro: Matrix/vector product.
Gan_Vector4_fgan_ltmat44f_multv4_i (const Gan_SquMatrix44_f *A, Gan_Vector4_f *p)
 Macro: Matrix/vector product.
Gan_Vector4_fgan_ltmat44Tf_multv4_q (const Gan_SquMatrix44_f *A, Gan_Vector4_f *p, Gan_Vector4_f *q)
 Macro: Matrix/vector product with the matrix transposed.
Gan_Vector4_fgan_ltmat44Tf_multv4_i (const Gan_SquMatrix44_f *A, Gan_Vector4_f *p)
 Macro: Matrix/vector product with the matrix transposed.
Gan_SquMatrix44_fgan_ltmat44f_slmultT_q (Gan_SquMatrix44_f *A, const Gan_SquMatrix44_f *B)
 Macro: Left-multiply a matrix by its own transpose, producing a symmetric matrix.
Gan_SquMatrix44_fgan_ltmat44f_slmultT_i (Gan_SquMatrix44_f *A)
 Macro: Left-multiply a matrix by its own transpose, producing a symmetric matrix.
Gan_SquMatrix44_fgan_ltmat44f_srmultT_q (const Gan_SquMatrix44_f *A, Gan_SquMatrix44_f *B)
 Macro: Right-multiply a matrix by its own transpose, producing a symmetric matrix.
Gan_SquMatrix44_fgan_ltmat44f_srmultT_i (Gan_SquMatrix44_f *A)
 Macro: Right-multiply a matrix by its own transpose, producing a symmetric matrix.
float gan_ltmat44f_sumsqr_q (const Gan_SquMatrix44_f *A)
 Macro: Returns sum of squares of matrix elements.
float gan_ltmat44f_Fnorm_q (const Gan_SquMatrix44_f *A)
 Macro: Frobenius norm of matrix.


Detailed Description

Module: 4x4 matrices (single precision)

Part of: Gandalf Library

Version:
1.10
Date:
2006/03/15 16:18:23
Author:
pm
Copyright: (c) 2000 Imagineer Software Limited

Define Documentation

#define GAN_FREP44_A a,
b,
p1,
p2,
p3,
p4,
q1,
q2,
q3,
q4,
r11,
r12,
r13,
r14,
r21,
r22,
r23,
r24,
r31,
r32,
r33,
r34,
r41,
r42,
r43,
r44   ) 
 

Value:

(GAN_FREP4_A(a,b,p1##q1,p1##q2,p1##q3,p1##q4,r11,r12,r13,r14),\
 GAN_FREP4_A(a,b,p2##q1,p2##q2,p2##q3,p2##q4,r21,r22,r23,r24),\
 GAN_FREP4_A(a,b,p3##q1,p3##q2,p3##q3,p3##q4,r31,r32,r33,r34),\
 GAN_FREP4_A(a,b,p4##q1,p4##q2,p4##q3,p4##q4,r41,r42,r43,r44))

#define GAN_FREP44L_A a,
b,
p1,
p2,
p3,
p4,
q1,
q2,
q3,
q4,
r11,
r21,
r22,
r31,
r32,
r33,
r41,
r42,
r43,
r44   ) 
 

Value:

(GAN_FREP1_A(a,b,p1##q1,r11),\
  GAN_FREP2_A(a,b,p2##q1,p2##q2,r21,r22),\
  GAN_FREP3_A(a,b,p3##q1,p3##q2,p3##q3,r31,r32,r33),\
  GAN_FREP4_A(a,b,p4##q1,p4##q2,p4##q3,p4##q4,r41,r42,r43,r44))

#define GAN_FREP4_A a,
b,
p1,
p2,
p3,
p4,
q1,
q2,
q3,
q4   ) 
 

Value:

(a p1 b q1, a p2 b q2,\
     a p3 b q3, a p4 b q4)

#define GAN_REP1_AS a,
b,
p1   )     (a p1 b)
 

File:

RCSfile
repeat1_noc.h,v
Module: Macros for 1-fold repetition of vector/matrix operations Part of: Gandalf Library

Revision:

Revision
1.5
Last edited:
Date
2002/04/18 14:56:25
Author:
Author
pm
Copyright: (c) 2000 Imagineer Software Limited

Notes: Not to be compiled separately

#define GAN_REP2_AS a,
b,
p1,
p2   )     (a p1 b, a p2 b)
 

File:

RCSfile
repeat2_noc.h,v
Module: Macros for 2-fold repetition of vector/matrix operations Part of: Gandalf Library

Revision:

Revision
1.5
Last edited:
Date
2002/04/18 14:56:25
Author:
Author
pm
Copyright: (c) 2000 Imagineer Software Limited

Notes: Not to be compiled separately

#define GAN_REP3_AS a,
b,
p1,
p2,
p3   )     (a p1 b, a p2 b, a p3 b)
 

File:

RCSfile
repeat3_noc.h,v
Module: Macros for 3-fold repetition of vector/matrix operations Part of: Gandalf Library

Revision:

Revision
1.5
Last edited:
Date
2002/04/18 14:56:25
Author:
Author
pm
Copyright: (c) 2000 Imagineer Software Limited

Notes: Not to be compiled separately

#define GAN_REP44_A a,
p1,
p2,
p3,
p4,
q1,
q2,
q3,
q4   ) 
 

Value:

(GAN_REP4_A(a,p1##q1,p1##q2,p1##q3,p1##q4),\
  GAN_REP4_A(a,p2##q1,p2##q2,p2##q3,p2##q4),\
  GAN_REP4_A(a,p3##q1,p3##q2,p3##q3,p3##q4),\
  GAN_REP4_A(a,p4##q1,p4##q2,p4##q3,p4##q4))

#define GAN_REP44_AAT a,
b,
p1,
p2,
p3,
p4,
q1,
q2,
q3,
q4   ) 
 

Value:

(GAN_REP4_AB(a,b,p1##q1,p1##q2,p1##q3,p1##q4,p1##q1,p2##q1,p3##q1,p4##q1),\
  GAN_REP4_AB(a,b,p2##q1,p2##q2,p2##q3,p2##q4,p1##q2,p2##q2,p3##q2,p4##q2),\
  GAN_REP4_AB(a,b,p3##q1,p3##q2,p3##q3,p3##q4,p1##q3,p2##q3,p3##q3,p4##q3),\
  GAN_REP4_AB(a,b,p4##q1,p4##q2,p4##q3,p4##q4,p1##q4,p2##q4,p3##q4,p4##q4))

#define GAN_REP44_AB a,
b,
p1,
p2,
p3,
p4,
q1,
q2,
q3,
q4,
r1,
r2,
r3,
r4,
s1,
s2,
s3,
s4   ) 
 

Value:

(GAN_REP4_AB(a,b,p1##q1,p1##q2,p1##q3,p1##q4,\
                  r1##s1,r1##s2,r1##s3,r1##s4),\
  GAN_REP4_AB(a,b,p2##q1,p2##q2,p2##q3,p2##q4,\
                  r2##s1,r2##s2,r2##s3,r2##s4),\
  GAN_REP4_AB(a,b,p3##q1,p3##q2,p3##q3,p3##q4,\
                  r3##s1,r3##s2,r3##s3,r3##s4),\
  GAN_REP4_AB(a,b,p4##q1,p4##q2,p4##q3,p4##q4,\
                  r4##s1,r4##s2,r4##s3,r4##s4))

#define GAN_REP44_ABC a,
b,
c,
p1,
p2,
p3,
p4,
q1,
q2,
q3,
q4,
r1,
r2,
r3,
r4,
s1,
s2,
s3,
s4,
t1,
t2,
t3,
t4,
u1,
u2,
u3,
u4   ) 
 

Value:

(GAN_REP4_ABC(a,b,c,p1##q1,p1##q2,p1##q3,p1##q4,\
                     r1##s1,r1##s2,r1##s3,r1##s4,\
                     t1##u1,t1##u2,t1##u3,t1##u4),\
  GAN_REP4_ABC(a,b,c,p2##q1,p2##q2,p2##q3,p2##q4,\
                     r2##s1,r2##s2,r2##s3,r2##s4,\
                     t2##u1,t2##u2,t2##u3,t2##u4),\
  GAN_REP4_ABC(a,b,c,p3##q1,p3##q2,p3##q3,p3##q4,\
                     r3##s1,r3##s2,r3##s3,r3##s4,\
                     t3##u1,t3##u2,t3##u3,t3##u4),\
  GAN_REP4_ABC(a,b,c,p4##q1,p4##q2,p4##q3,p4##q4,\
                     r4##s1,r4##s2,r4##s3,r4##s4,\
                     t4##u1,t4##u2,t4##u3,t4##u4))

#define GAN_REP44_ABCS a,
b,
c,
d,
p1,
p2,
p3,
p4,
q1,
q2,
q3,
q4,
r1,
r2,
r3,
r4,
s1,
s2,
s3,
s4,
t1,
t2,
t3,
t4,
u1,
u2,
u3,
u4   ) 
 

Value:

(GAN_REP4_ABCS(a,b,c,d,p1##q1,p1##q2,p1##q3,p1##q4,\
                        r1##s1,r1##s2,r1##s3,r1##s4,\
                        t1##u1,t1##u2,t1##u3,t1##u4),\
  GAN_REP4_ABCS(a,b,c,d,p2##q1,p2##q2,p2##q3,p2##q4,\
                        r2##s1,r2##s2,r2##s3,r2##s4,\
                        t2##u1,t2##u2,t2##u3,t2##u4),\
  GAN_REP4_ABCS(a,b,c,d,p3##q1,p3##q2,p3##q3,p3##q4,\
                        r3##s1,r3##s2,r3##s3,r3##s4,\
                        t3##u1,t3##u2,t3##u3,t3##u4),\
  GAN_REP4_ABCS(a,b,c,d,p4##q1,p4##q2,p4##q3,p4##q4,\
                        r4##s1,r4##s2,r4##s3,r4##s4,\
                        t4##u1,t4##u2,t4##u3,t4##u4))

#define GAN_REP44_ABS a,
b,
c,
p1,
p2,
p3,
p4,
q1,
q2,
q3,
q4,
r1,
r2,
r3,
r4,
s1,
s2,
s3,
s4   ) 
 

Value:

(GAN_REP4_ABS(a,b,c,p1##q1,p1##q2,p1##q3,p1##q4,\
                     r1##s1,r1##s2,r1##s3,r1##s4),\
  GAN_REP4_ABS(a,b,c,p2##q1,p2##q2,p2##q3,p2##q4,\
                     r2##s1,r2##s2,r2##s3,r2##s4),\
  GAN_REP4_ABS(a,b,c,p3##q1,p3##q2,p3##q3,p3##q4,\
                     r3##s1,r3##s2,r3##s3,r3##s4),\
  GAN_REP4_ABS(a,b,c,p4##q1,p4##q2,p4##q3,p4##q4,\
                     r4##s1,r4##s2,r4##s3,r4##s4))

#define GAN_REP44_AS a,
b,
p1,
p2,
p3,
p4,
q1,
q2,
q3,
q4   ) 
 

Value:

(GAN_REP4_AS(a,b,p1##q1,p1##q2,p1##q3,p1##q4),\
  GAN_REP4_AS(a,b,p2##q1,p2##q2,p2##q3,p2##q4),\
  GAN_REP4_AS(a,b,p3##q1,p3##q2,p3##q3,p3##q4),\
  GAN_REP4_AS(a,b,p4##q1,p4##q2,p4##q3,p4##q4))

#define GAN_REP44L_A a,
p1,
p2,
p3,
p4,
q1,
q2,
q3,
q4   ) 
 

Value:

(GAN_REP1_A(a,p1##q1),\
  GAN_REP2_A(a,p2##q1,p2##q2),\
  GAN_REP3_A(a,p3##q1,p3##q2,p3##q3),\
  GAN_REP4_A(a,p4##q1,p4##q2,p4##q3,p4##q4))

#define GAN_REP44L_AB a,
b,
p1,
p2,
p3,
p4,
q1,
q2,
q3,
q4,
r1,
r2,
r3,
r4,
s1,
s2,
s3,
s4   ) 
 

Value:

(GAN_REP1_AB(a,b,p1##q1,r1##s1),\
  GAN_REP2_AB(a,b,p2##q1,p2##q2,r2##s1,r2##s2),\
  GAN_REP3_AB(a,b,p3##q1,p3##q2,p3##q3,r3##s1,r3##s2,r3##s3),\
  GAN_REP4_AB(a,b,p4##q1,p4##q2,p4##q3,p4##q4,r4##s1,r4##s2,r4##s3,r4##s4))

#define GAN_REP44L_ABC a,
b,
c,
p1,
p2,
p3,
p4,
q1,
q2,
q3,
q4,
r1,
r2,
r3,
r4,
s1,
s2,
s3,
s4,
t1,
t2,
t3,
t4,
u1,
u2,
u3,
u4   ) 
 

Value:

(GAN_REP1_ABC(a,b,c,p1##q1,r1##s1,t1##u1),\
  GAN_REP2_ABC(a,b,c,p2##q1,p2##q2,r2##s1,r2##s2,t2##u1,t2##u2),\
  GAN_REP3_ABC(a,b,c,p3##q1,p3##q2,p3##q3,r3##s1,r3##s2,r3##s3,t3##u1,t3##u2,t3##u3),\
  GAN_REP4_ABC(a,b,c,p4##q1,p4##q2,p4##q3,p4##q4,r4##s1,r4##s2,r4##s3,r4##s4,t4##u1,t4##u2,t4##u3,t4##u4))

#define GAN_REP44L_ABCS a,
b,
c,
d,
p1,
p2,
p3,
p4,
q1,
q2,
q3,
q4,
r1,
r2,
r3,
r4,
s1,
s2,
s3,
s4,
t1,
t2,
t3,
t4,
u1,
u2,
u3,
u4   ) 
 

Value:

(GAN_REP1_ABCS(a,b,c,d,p1##q1,r1##s1,t1##u1),\
  GAN_REP2_ABCS(a,b,c,d,p2##q1,p2##q2,r2##s1,r2##s2,t2##u1,t2##u2),\
  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),\
  GAN_REP4_ABCS(a,b,c,d,p4##q1,p4##q2,p4##q3,p4##q4,r4##s1,r4##s2,r4##s3,r4##s4,t4##u1,t4##u2,t4##u3,t4##u4))

#define GAN_REP44L_ABS a,
b,
c,
p1,
p2,
p3,
p4,
q1,
q2,
q3,
q4,
r1,
r2,
r3,
r4,
s1,
s2,
s3,
s4   ) 
 

Value:

(GAN_REP1_ABS(a,b,c,p1##q1,r1##s1),\
  GAN_REP2_ABS(a,b,c,p2##q1,p2##q2,r2##s1,r2##s2),\
  GAN_REP3_ABS(a,b,c,p3##q1,p3##q2,p3##q3,r3##s1,r3##s2,r3##s3),\
  GAN_REP4_ABS(a,b,c,p4##q1,p4##q2,p4##q3,p4##q4,r4##s1,r4##s2,r4##s3,r4##s4))

#define GAN_REP44L_AS a,
b,
p1,
p2,
p3,
p4,
q1,
q2,
q3,
q4   ) 
 

Value:

(GAN_REP1_AS(a,b,p1##q1),\
  GAN_REP2_AS(a,b,p2##q1,p2##q2),\
  GAN_REP3_AS(a,b,p3##q1,p3##q2,p3##q3),\
  GAN_REP4_AS(a,b,p4##q1,p4##q2,p4##q3,p4##q4))

#define GAN_REP4_AS a,
b,
p1,
p2,
p3,
p4   )     (a p1 b, a p2 b, a p3 b, a p4 b)
 

File:

RCSfile
repeat4_noc.h,v
Module: Macros for 4-fold repetition of vector/matrix operations Part of: Gandalf Library

Revision:

Revision
1.5
Last edited:
Date
2002/04/18 14:56:25
Author:
Author
pm
Copyright: (c) 2000 Imagineer Software Limited

Notes: Not to be compiled separately


Generated on Fri Mar 17 12:44:50 2006 by  doxygen 1.3.9.1