23 #ifndef _ODE_ODEMATH_LEGACY_H_
24 #define _ODE_ODEMATH_LEGACY_H_
37 #define dOP(a,op,b,c) do { \
38 (a)[0] = ((b)[0]) op ((c)[0]); \
39 (a)[1] = ((b)[1]) op ((c)[1]); \
40 (a)[2] = ((b)[2]) op ((c)[2]); \
42 #define dOPC(a,op,b,c) do { \
43 (a)[0] = ((b)[0]) op (c); \
44 (a)[1] = ((b)[1]) op (c); \
45 (a)[2] = ((b)[2]) op (c); \
47 #define dOPE(a,op,b) do {\
52 #define dOPEC(a,op,c) do { \
65 #define dOPE2(a,op1,b,op2,c) do { \
66 (a)[0] op1 ((b)[0]) op2 ((c)[0]); \
67 (a)[1] op1 ((b)[1]) op2 ((c)[1]); \
68 (a)[2] op1 ((b)[2]) op2 ((c)[2]); \
72 #define dLENGTHSQUARED(a) dCalcVectorLengthSquare3(a)
73 #define dLENGTH(a) dCalcVectorLength3(a)
74 #define dDISTANCE(a, b) dCalcPointsDistance3(a, b)
77 #define dDOT(a, b) dCalcVectorDot3(a, b)
78 #define dDOT13(a, b) dCalcVectorDot3_13(a, b)
79 #define dDOT31(a, b) dCalcVectorDot3_31(a, b)
80 #define dDOT33(a, b) dCalcVectorDot3_33(a, b)
81 #define dDOT14(a, b) dCalcVectorDot3_14(a, b)
82 #define dDOT41(a, b) dCalcVectorDot3_41(a, b)
83 #define dDOT44(a, b) dCalcVectorDot3_44(a, b)
93 #define dCROSS(a,op,b,c) \
95 (a)[0] op ((b)[1]*(c)[2] - (b)[2]*(c)[1]); \
96 (a)[1] op ((b)[2]*(c)[0] - (b)[0]*(c)[2]); \
97 (a)[2] op ((b)[0]*(c)[1] - (b)[1]*(c)[0]); \
99 #define dCROSSpqr(a,op,b,c,p,q,r) \
101 (a)[ 0] op ((b)[ q]*(c)[2*r] - (b)[2*q]*(c)[ r]); \
102 (a)[ p] op ((b)[2*q]*(c)[ 0] - (b)[ 0]*(c)[2*r]); \
103 (a)[2*p] op ((b)[ 0]*(c)[ r] - (b)[ q]*(c)[ 0]); \
105 #define dCROSS114(a,op,b,c) dCROSSpqr(a,op,b,c,1,1,4)
106 #define dCROSS141(a,op,b,c) dCROSSpqr(a,op,b,c,1,4,1)
107 #define dCROSS144(a,op,b,c) dCROSSpqr(a,op,b,c,1,4,4)
108 #define dCROSS411(a,op,b,c) dCROSSpqr(a,op,b,c,4,1,1)
109 #define dCROSS414(a,op,b,c) dCROSSpqr(a,op,b,c,4,1,4)
110 #define dCROSS441(a,op,b,c) dCROSSpqr(a,op,b,c,4,4,1)
111 #define dCROSS444(a,op,b,c) dCROSSpqr(a,op,b,c,4,4,4)
122 #define dCROSSMAT(A,a,skip,plus,minus) \
124 (A)[1] = minus (a)[2]; \
125 (A)[2] = plus (a)[1]; \
126 (A)[(skip)+0] = plus (a)[2]; \
127 (A)[(skip)+2] = minus (a)[0]; \
128 (A)[2*(skip)+0] = minus (a)[1]; \
129 (A)[2*(skip)+1] = plus (a)[0]; \
140 #define dMULTIPLY0_331(A, B, C) dMultiply0_331(A, B, C)
141 #define dMULTIPLY1_331(A, B, C) dMultiply1_331(A, B, C)
142 #define dMULTIPLY0_133(A, B, C) dMultiply0_133(A, B, C)
143 #define dMULTIPLY0_333(A, B, C) dMultiply0_333(A, B, C)
144 #define dMULTIPLY1_333(A, B, C) dMultiply1_333(A, B, C)
145 #define dMULTIPLY2_333(A, B, C) dMultiply2_333(A, B, C)
147 #define dMULTIPLYADD0_331(A, B, C) dMultiplyAdd0_331(A, B, C)
148 #define dMULTIPLYADD1_331(A, B, C) dMultiplyAdd1_331(A, B, C)
149 #define dMULTIPLYADD0_133(A, B, C) dMultiplyAdd0_133(A, B, C)
150 #define dMULTIPLYADD0_333(A, B, C) dMultiplyAdd0_333(A, B, C)
151 #define dMULTIPLYADD1_333(A, B, C) dMultiplyAdd1_333(A, B, C)
152 #define dMULTIPLYADD2_333(A, B, C) dMultiplyAdd2_333(A, B, C)