|
From: <kin...@us...> - 2004-03-01 10:30:42
|
Update of /cvsroot/teem/teem/src/ell In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1922/ell Modified Files: eigen.c ell.h ellMacros.h genmat.c miscEll.c quat.c Log Message: ell's storage of matrices is now row-major instead of column major. Debugging in progress Index: eigen.c =================================================================== RCS file: /cvsroot/teem/teem/src/ell/eigen.c,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** eigen.c 19 Feb 2004 11:10:34 -0000 1.17 --- eigen.c 1 Mar 2004 10:19:44 -0000 1.18 *************** *** 103,108 **** ** ** the given matrix is assumed to have a nullspace of dimension one. ! ** The COLUMNS of the matrix are n+0, n+3, n+6. A normalized vector ! ** which spans the nullspace is put into ans. ** ** The given nullspace matrix is NOT modified. --- 103,107 ---- ** ** the given matrix is assumed to have a nullspace of dimension one. ! ** A normalized vector which spans the nullspace is put into ans. ** ** The given nullspace matrix is NOT modified. *************** *** 111,117 **** */ void ! ell_3m_1d_nullspace_d(double ans[3], double n[9]) { ! double t[9], norm; /* find the three cross-products of pairs of column vectors of n */ ELL_3V_CROSS(t+0, n+0, n+3); --- 110,117 ---- */ void ! ell_3m_1d_nullspace_d(double ans[3], double _n[9]) { ! double t[9], n[9], norm; + ELL_3M_TRANSPOSE(n, _n); /* find the three cross-products of pairs of column vectors of n */ ELL_3V_CROSS(t+0, n+0, n+3); *************** *** 134,138 **** ** ** the given matrix is assumed to have a nullspace of dimension two. - ** The COLUMNS of the matrix are n+0, n+3, n+6 ** ** The given nullspace matrix is NOT modified --- 134,137 ---- *************** *** 144,148 **** double n[9], tmp[3], norm; ! ELL_3M_COPY(n, _n); _ell_align3_d(n); ELL_3V_ADD3(tmp, n+0, n+3, n+6); --- 143,147 ---- double n[9], tmp[3], norm; ! ELL_3M_TRANSPOSE(n, _n); _ell_align3_d(n); ELL_3V_ADD3(tmp, n+0, n+3, n+6); *************** *** 163,168 **** ** finds eigenvalues of given matrix. ** - ** m+0, m+3, m+6, are the COLUMNS of the matrix - ** ** returns information about the roots according to ellCubeRoot enum, ** see header for ellCubic for details. --- 162,165 ---- *************** *** 190,199 **** */ A = -m[0] - m[4] - m[8]; ! B = m[0]*m[4] - m[1]*m[3] ! + m[0]*m[8] - m[2]*m[6] ! + m[4]*m[8] - m[5]*m[7]; ! C = (m[2]*m[4] - m[1]*m[5])*m[6] ! + (m[0]*m[5] - m[2]*m[3])*m[7] ! + (m[1]*m[3] - m[0]*m[4])*m[8]; roots = ell_cubic(eval, A, B, C, newton); if (ell_cubic_root_three == roots --- 187,196 ---- */ A = -m[0] - m[4] - m[8]; ! B = m[0]*m[4] - m[3]*m[1] ! + m[0]*m[8] - m[6]*m[2] ! + m[4]*m[8] - m[7]*m[5]; ! C = (m[6]*m[4] - m[3]*m[7])*m[2] ! + (m[0]*m[7] - m[6]*m[1])*m[5] ! + (m[3]*m[1] - m[0]*m[4])*m[8]; roots = ell_cubic(eval, A, B, C, newton); if (ell_cubic_root_three == roots *************** *** 208,213 **** ******** ell_3m_eigensolve_d() ** ! ** finds eigenvalues and eigenvectors of given matrix m, ! ** m+0, m+3, m+6, are the COLUMNS of the matrix. ** ** returns information about the roots according to ellCubeRoot enum, --- 205,209 ---- ******** ell_3m_eigensolve_d() ** ! ** finds eigenvalues and eigenvectors of given matrix m ** ** returns information about the roots according to ellCubeRoot enum, *************** *** 228,234 **** /* if (ell_debug) { printf("ell_3m_eigensolve: input matrix:\n"); ! printf("{{%20.15f,\t%20.15f,\t%20.15f},\n", m[0], m[3], m[6]); ! printf(" {%20.15f,\t%20.15f,\t%20.15f},\n", m[1], m[4], m[7]); ! printf(" {%20.15f,\t%20.15f,\t%20.15f}};\n",m[2], m[5], m[8]); } */ --- 224,230 ---- /* if (ell_debug) { printf("ell_3m_eigensolve: input matrix:\n"); ! printf("{{%20.15f,\t%20.15f,\t%20.15f},\n", m[0], m[1], m[2]); ! printf(" {%20.15f,\t%20.15f,\t%20.15f},\n", m[3], m[4], m[5]); ! printf(" {%20.15f,\t%20.15f,\t%20.15f}};\n",m[6], m[7], m[8]); } */ Index: ell.h =================================================================== RCS file: /cvsroot/teem/teem/src/ell/ell.h,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** ell.h 19 Feb 2004 03:52:47 -0000 1.27 --- ell.h 1 Mar 2004 10:19:44 -0000 1.28 *************** *** 51,55 **** /* ! ** Note: matrix element ordering is: ** ** 0 3 6 --- 51,55 ---- /* ! ** Note: *** PRE-TEEM 1.7 *** matrix element ordering was: ** ** 0 3 6 *************** *** 62,66 **** ** 3 7 11 15 ** ! ** and all vectors are COLUMN vectors */ --- 62,77 ---- ** 3 7 11 15 ** ! ** as of TEEM 1.7, matrix element ordering is: ! ** ! ** 0 1 2 ! ** 3 4 5 for 3x3 ! ** 6 7 8 ! ** ! ** 0 1 2 3 ! ** 4 5 6 7 for 4x4 ! ** 8 9 10 11 ! ** 12 13 14 15 ! ** ! ** all vectors are still, logically, COLUMN vectors */ *************** *** 164,168 **** /* genmat.c */ ! TEEM_API int ell_Nm_valid(Nrrd *mat); TEEM_API int ell_Nm_tran(Nrrd *dest, Nrrd *src); TEEM_API int ell_Nm_mul(Nrrd *dest, Nrrd *A, Nrrd *B); --- 175,179 ---- /* genmat.c */ ! TEEM_API int ell_Nm_check(Nrrd *mat); TEEM_API int ell_Nm_tran(Nrrd *dest, Nrrd *src); TEEM_API int ell_Nm_mul(Nrrd *dest, Nrrd *A, Nrrd *B); *************** *** 171,181 **** /* cubic.c */ ! TEEM_API int ell_cubic(double root[3], double A, double B, double C, int newton); /* eigen.c */ TEEM_API void ell_3m_1d_nullspace_d(double ans[3], double n[9]); ! TEEM_API void ell_3m_2d_nullspace_d(double ans0[3], double ans1[3], double n[9]); ! TEEM_API int ell_3m_eigenvalues_d(double eval[3], double m[9], ! int newton); TEEM_API int ell_3m_eigensolve_d(double eval[3], double evec[9], double m[9], int newton); --- 182,194 ---- /* cubic.c */ ! TEEM_API int ell_cubic(double root[3], ! double A, double B, double C, int newton); /* eigen.c */ TEEM_API void ell_3m_1d_nullspace_d(double ans[3], double n[9]); ! TEEM_API void ell_3m_2d_nullspace_d(double ans0[3], ! double ans1[3], double n[9]); ! TEEM_API int ell_3m_eigenvalues_d(double eval[3], ! double m[9], int newton); TEEM_API int ell_3m_eigensolve_d(double eval[3], double evec[9], double m[9], int newton); Index: ellMacros.h =================================================================== RCS file: /cvsroot/teem/teem/src/ell/ellMacros.h,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** ellMacros.h 23 Feb 2004 02:54:22 -0000 1.39 --- ellMacros.h 1 Mar 2004 10:19:44 -0000 1.40 *************** *** 87,91 **** : 1)) ! #define _ELL_2M_DET(a,b,c,d) ((a)*(d) - (c)*(b)) #define ELL_2M_DET(m) _ELL_2M_DET((m)[0],(m)[1],(m)[2],(m)[3]) --- 87,91 ---- : 1)) ! #define _ELL_2M_DET(a,b,c,d) ((a)*(d) - (b)*(c)) #define ELL_2M_DET(m) _ELL_2M_DET((m)[0],(m)[1],(m)[2],(m)[3]) *************** *** 93,99 **** /* ** the 3x3 matrix-related macros assume that the matrix indexing is: ! ** 0 3 6 ! ** 1 4 7 ! ** 2 5 8 */ --- 93,99 ---- /* ** the 3x3 matrix-related macros assume that the matrix indexing is: ! ** 0 1 2 ! ** 3 4 5 ! ** 6 7 8 */ *************** *** 298,368 **** #define ELL_3MV_COL0_GET(v, m) \ ! (ELL_3V_SET((v), (m)[0], (m)[1], (m)[2])) #define ELL_3MV_COL1_GET(v, m) \ ! (ELL_3V_SET((v), (m)[3], (m)[4], (m)[5])) #define ELL_3MV_COL2_GET(v, m) \ ! (ELL_3V_SET((v), (m)[6], (m)[7], (m)[8])) #define ELL_3MV_ROW0_GET(v, m) \ ! (ELL_3V_SET((v), (m)[0], (m)[3], (m)[6])) #define ELL_3MV_ROW1_GET(v, m) \ ! (ELL_3V_SET((v), (m)[1], (m)[4], (m)[7])) #define ELL_3MV_ROW2_GET(v, m) \ ! (ELL_3V_SET((v), (m)[2], (m)[5], (m)[8])) #define ELL_3MV_COL0_SET(m, v) \ ! (ELL_3V_GET((m)[0], (m)[1], (m)[2], (v))) #define ELL_3MV_COL1_SET(m, v) \ ! (ELL_3V_GET((m)[3], (m)[4], (m)[5], (v))) #define ELL_3MV_COL2_SET(m, v) \ ! (ELL_3V_GET((m)[6], (m)[7], (m)[8], (v))) #define ELL_3MV_ROW0_SET(m, v) \ ! (ELL_3V_GET((m)[0], (m)[3], (m)[6], (v))) #define ELL_3MV_ROW1_SET(m, v) \ ! (ELL_3V_GET((m)[1], (m)[4], (m)[7], (v))) #define ELL_3MV_ROW2_SET(m, v) \ ! (ELL_3V_GET((m)[2], (m)[5], (m)[8], (v))) #define ELL_3MV_OUTER(m, v1, v2) \ ! (ELL_3V_SCALE((m)+0, (v2)[0], (v1)), \ ! ELL_3V_SCALE((m)+3, (v2)[1], (v1)), \ ! ELL_3V_SCALE((m)+6, (v2)[2], (v1))) #define ELL_3MV_OUTER_ADD(m, v1, v2) \ ! (ELL_3V_SCALE_ADD2((m)+0, 1, (m)+0, (v2)[0], (v1)), \ ! ELL_3V_SCALE_ADD2((m)+3, 1, (m)+3, (v2)[1], (v1)), \ ! ELL_3V_SCALE_ADD2((m)+6, 1, (m)+6, (v2)[2], (v1))) #define ELL_3MV_MUL(v2, m, v1) \ - ((v2)[0] = (m)[0]*(v1)[0] + (m)[3]*(v1)[1] + (m)[6]*(v1)[2], \ - (v2)[1] = (m)[1]*(v1)[0] + (m)[4]*(v1)[1] + (m)[7]*(v1)[2], \ - (v2)[2] = (m)[2]*(v1)[0] + (m)[5]*(v1)[1] + (m)[8]*(v1)[2]) - - #define ELL_3MV_TMUL(v2, m, v1) \ ((v2)[0] = (m)[0]*(v1)[0] + (m)[1]*(v1)[1] + (m)[2]*(v1)[2], \ (v2)[1] = (m)[3]*(v1)[0] + (m)[4]*(v1)[1] + (m)[5]*(v1)[2], \ (v2)[2] = (m)[6]*(v1)[0] + (m)[7]*(v1)[1] + (m)[8]*(v1)[2]) #define ELL_3M_MUL(m3, m1, m2) \ ! ((m3)[0] = (m1)[0]*(m2)[0] + (m1)[3]*(m2)[1] + (m1)[6]*(m2)[2], \ ! (m3)[1] = (m1)[1]*(m2)[0] + (m1)[4]*(m2)[1] + (m1)[7]*(m2)[2], \ ! (m3)[2] = (m1)[2]*(m2)[0] + (m1)[5]*(m2)[1] + (m1)[8]*(m2)[2], \ \ ! (m3)[3] = (m1)[0]*(m2)[3] + (m1)[3]*(m2)[4] + (m1)[6]*(m2)[5], \ ! (m3)[4] = (m1)[1]*(m2)[3] + (m1)[4]*(m2)[4] + (m1)[7]*(m2)[5], \ ! (m3)[5] = (m1)[2]*(m2)[3] + (m1)[5]*(m2)[4] + (m1)[8]*(m2)[5], \ \ ! (m3)[6] = (m1)[0]*(m2)[6] + (m1)[3]*(m2)[7] + (m1)[6]*(m2)[8], \ ! (m3)[7] = (m1)[1]*(m2)[6] + (m1)[4]*(m2)[7] + (m1)[7]*(m2)[8], \ ! (m3)[8] = (m1)[2]*(m2)[6] + (m1)[5]*(m2)[7] + (m1)[8]*(m2)[8]) #define ELL_3M_SCALE_SET(m, x, y, z) \ --- 298,368 ---- #define ELL_3MV_COL0_GET(v, m) \ ! (ELL_3V_SET((v), (m)[0], (m)[3], (m)[6])) #define ELL_3MV_COL1_GET(v, m) \ ! (ELL_3V_SET((v), (m)[1], (m)[4], (m)[7])) #define ELL_3MV_COL2_GET(v, m) \ ! (ELL_3V_SET((v), (m)[2], (m)[5], (m)[8])) #define ELL_3MV_ROW0_GET(v, m) \ ! (ELL_3V_SET((v), (m)[0], (m)[1], (m)[2])) #define ELL_3MV_ROW1_GET(v, m) \ ! (ELL_3V_SET((v), (m)[3], (m)[4], (m)[5])) #define ELL_3MV_ROW2_GET(v, m) \ ! (ELL_3V_SET((v), (m)[6], (m)[7], (m)[8])) #define ELL_3MV_COL0_SET(m, v) \ ! (ELL_3V_GET((m)[0], (m)[3], (m)[6], (v))) #define ELL_3MV_COL1_SET(m, v) \ ! (ELL_3V_GET((m)[1], (m)[4], (m)[7], (v))) #define ELL_3MV_COL2_SET(m, v) \ ! (ELL_3V_GET((m)[2], (m)[5], (m)[8], (v))) #define ELL_3MV_ROW0_SET(m, v) \ ! (ELL_3V_GET((m)[0], (m)[1], (m)[2], (v))) #define ELL_3MV_ROW1_SET(m, v) \ ! (ELL_3V_GET((m)[3], (m)[4], (m)[5], (v))) #define ELL_3MV_ROW2_SET(m, v) \ ! (ELL_3V_GET((m)[6], (m)[7], (m)[8], (v))) #define ELL_3MV_OUTER(m, v1, v2) \ ! (ELL_3V_SCALE((m)+0, (v1)[0], (v2)), \ ! ELL_3V_SCALE((m)+3, (v1)[1], (v2)), \ ! ELL_3V_SCALE((m)+6, (v1)[2], (v2))) #define ELL_3MV_OUTER_ADD(m, v1, v2) \ ! (ELL_3V_SCALE_INCR((m)+0, (v1)[0], (v2)), \ ! ELL_3V_SCALE_INCR((m)+3, (v1)[1], (v2)), \ ! ELL_3V_SCALE_INCR((m)+6, (v1)[2], (v2))) #define ELL_3MV_MUL(v2, m, v1) \ ((v2)[0] = (m)[0]*(v1)[0] + (m)[1]*(v1)[1] + (m)[2]*(v1)[2], \ (v2)[1] = (m)[3]*(v1)[0] + (m)[4]*(v1)[1] + (m)[5]*(v1)[2], \ (v2)[2] = (m)[6]*(v1)[0] + (m)[7]*(v1)[1] + (m)[8]*(v1)[2]) + #define ELL_3MV_TMUL(v2, m, v1) \ + ((v2)[0] = (m)[0]*(v1)[0] + (m)[3]*(v1)[1] + (m)[6]*(v1)[2], \ + (v2)[1] = (m)[1]*(v1)[0] + (m)[4]*(v1)[1] + (m)[7]*(v1)[2], \ + (v2)[2] = (m)[2]*(v1)[0] + (m)[5]*(v1)[1] + (m)[8]*(v1)[2]) + #define ELL_3M_MUL(m3, m1, m2) \ ! ((m3)[0] = (m1)[0]*(m2)[0] + (m1)[1]*(m2)[3] + (m1)[2]*(m2)[6], \ ! (m3)[1] = (m1)[0]*(m2)[1] + (m1)[1]*(m2)[4] + (m1)[2]*(m2)[7], \ ! (m3)[2] = (m1)[0]*(m2)[2] + (m1)[1]*(m2)[5] + (m1)[2]*(m2)[8], \ \ ! (m3)[3] = (m1)[3]*(m2)[0] + (m1)[4]*(m2)[3] + (m1)[5]*(m2)[6], \ ! (m3)[4] = (m1)[3]*(m2)[1] + (m1)[4]*(m2)[4] + (m1)[5]*(m2)[7], \ ! (m3)[5] = (m1)[3]*(m2)[2] + (m1)[4]*(m2)[5] + (m1)[5]*(m2)[8], \ \ ! (m3)[6] = (m1)[6]*(m2)[0] + (m1)[7]*(m2)[3] + (m1)[8]*(m2)[6], \ ! (m3)[7] = (m1)[6]*(m2)[1] + (m1)[7]*(m2)[4] + (m1)[8]*(m2)[7], \ ! (m3)[8] = (m1)[6]*(m2)[2] + (m1)[7]*(m2)[5] + (m1)[8]*(m2)[8]) #define ELL_3M_SCALE_SET(m, x, y, z) \ *************** *** 373,387 **** #define ELL_3M_ROTATE_X_SET(m, th) \ (ELL_3V_SET((m)+ 0, 1 , 0 , 0 ), \ ! ELL_3V_SET((m)+ 3, 0 , cos(th) , +sin(th)), \ ! ELL_3V_SET((m)+ 6, 0 , -sin(th) , cos(th))) #define ELL_3M_ROTATE_Y_SET(m, th) \ ! (ELL_3V_SET((m)+ 0, cos(th) , 0 , -sin(th)), \ ELL_3V_SET((m)+ 3, 0 , 1 , 0 ), \ ! ELL_3V_SET((m)+ 6, +sin(th) , 0 , cos(th))) #define ELL_3M_ROTATE_Z_SET(m, th) \ ! (ELL_3V_SET((m)+ 0, cos(th) , +sin(th) , 0), \ ! ELL_3V_SET((m)+ 3, -sin(th) , cos(th) , 0), \ ELL_3V_SET((m)+ 6, 0 , 0 , 1)) --- 373,387 ---- #define ELL_3M_ROTATE_X_SET(m, th) \ (ELL_3V_SET((m)+ 0, 1 , 0 , 0 ), \ ! ELL_3V_SET((m)+ 3, 0 , cos(th) , -sin(th)), \ ! ELL_3V_SET((m)+ 6, 0 , +sin(th) , cos(th))) #define ELL_3M_ROTATE_Y_SET(m, th) \ ! (ELL_3V_SET((m)+ 0, cos(th) , 0 , +sin(th)), \ ELL_3V_SET((m)+ 3, 0 , 1 , 0 ), \ ! ELL_3V_SET((m)+ 6, -sin(th) , 0 , cos(th))) #define ELL_3M_ROTATE_Z_SET(m, th) \ ! (ELL_3V_SET((m)+ 0, cos(th) , -sin(th) , 0), \ ! ELL_3V_SET((m)+ 3, +sin(th) , cos(th) , 0), \ ELL_3V_SET((m)+ 6, 0 , 0 , 1)) *************** *** 389,396 **** ** the 4x4 matrix-related macros assume that the matrix indexing is: ** ! ** 0 4 8 12 ! ** 1 5 9 13 ! ** 2 6 10 14 ! ** 3 7 11 15 */ --- 389,396 ---- ** the 4x4 matrix-related macros assume that the matrix indexing is: ** ! ** 0 1 2 3 ! ** 4 5 6 7 ! ** 8 9 10 11 ! ** 12 13 14 15 */ *************** *** 505,563 **** ELL_SWAP2((m)[11],(m)[14],(t))) ! #define ELL_4MV_COL0_GET(v, m) \ (ELL_4V_SET((v), (m)[ 0], (m)[ 1], (m)[ 2], (m)[ 3])) ! #define ELL_4MV_COL1_GET(v, m) \ (ELL_4V_SET((v), (m)[ 4], (m)[ 5], (m)[ 6], (m)[ 7])) ! #define ELL_4MV_COL2_GET(v, m) \ ! (ELL_4V_SET((v), (m)[ 8], (m)[ 9], (m)[10], (m)[11]) ! #define ELL_4MV_COL3_GET(v, m) \ (ELL_4V_SET((v), (m)[12], (m)[13], (m)[14], (m)[15])) ! #define ELL_4MV_ROW0_GET(v, m) \ (ELL_4V_SET((v), (m)[ 0], (m)[ 4], (m)[ 8], (m)[12])) ! #define ELL_4MV_ROW1_GET(v, m) \ (ELL_4V_SET((v), (m)[ 1], (m)[ 5], (m)[ 9], (m)[13])) ! #define ELL_4MV_ROW2_GET(v, m) \ (ELL_4V_SET((v), (m)[ 2], (m)[ 6], (m)[10], (m)[14])) ! #define ELL_4MV_ROW3_GET(v, m) \ (ELL_4V_SET((v), (m)[ 3], (m)[ 7], (m)[11], (m)[15])) ! #define ELL_4MV_COL0_SET(m, v) \ (ELL_4V_GET((m)[ 0], (m)[ 1], (m)[ 2], (m)[ 3], (v))) ! #define ELL_4MV_COL1_SET(m, v) \ (ELL_4V_GET((m)[ 4], (m)[ 5], (m)[ 6], (m)[ 7], (v))) ! #define ELL_4MV_COL2_SET(m, v) \ (ELL_4V_GET((m)[ 8], (m)[ 9], (m)[10], (m)[11], (v))) ! #define ELL_4MV_COL3_SET(m, v) \ (ELL_4V_GET((m)[12], (m)[13], (m)[14], (m)[15], (v))) ! #define ELL_4MV_ROW0_SET(m, v) \ (ELL_4V_GET((m)[ 0], (m)[ 4], (m)[ 8], (m)[12], (v))) ! #define ELL_4MV_ROW1_SET(m, v) \ (ELL_4V_GET((m)[ 1], (m)[ 5], (m)[ 9], (m)[13], (v))) ! #define ELL_4MV_ROW2_SET(m, v) \ (ELL_4V_GET((m)[ 2], (m)[ 6], (m)[10], (m)[14], (v))) ! #define ELL_4MV_ROW3_SET(m, v) \ (ELL_4V_GET((m)[ 3], (m)[ 7], (m)[11], (m)[15], (v))) #define ELL_4MV_MUL(v2, m, v1) \ - ((v2)[0]=(m)[ 0]*(v1)[0]+(m)[ 4]*(v1)[1]+(m)[ 8]*(v1)[2]+(m)[12]*(v1)[3], \ - (v2)[1]=(m)[ 1]*(v1)[0]+(m)[ 5]*(v1)[1]+(m)[ 9]*(v1)[2]+(m)[13]*(v1)[3], \ - (v2)[2]=(m)[ 2]*(v1)[0]+(m)[ 6]*(v1)[1]+(m)[10]*(v1)[2]+(m)[14]*(v1)[3], \ - (v2)[3]=(m)[ 3]*(v1)[0]+(m)[ 7]*(v1)[1]+(m)[11]*(v1)[2]+(m)[15]*(v1)[3]) - - #define ELL_4MV_TMUL(v2, m, v1) \ ((v2)[0]=(m)[ 0]*(v1)[0]+(m)[ 1]*(v1)[1]+(m)[ 2]*(v1)[2]+(m)[ 3]*(v1)[3], \ (v2)[1]=(m)[ 4]*(v1)[0]+(m)[ 5]*(v1)[1]+(m)[ 6]*(v1)[2]+(m)[ 7]*(v1)[3], \ --- 505,557 ---- ELL_SWAP2((m)[11],(m)[14],(t))) ! #define ELL_4MV_ROW0_GET(v, m) \ (ELL_4V_SET((v), (m)[ 0], (m)[ 1], (m)[ 2], (m)[ 3])) ! #define ELL_4MV_ROW1_GET(v, m) \ (ELL_4V_SET((v), (m)[ 4], (m)[ 5], (m)[ 6], (m)[ 7])) ! #define ELL_4MV_ROW2_GET(v, m) \ ! (ELL_4V_SET((v), (m)[ 8], (m)[ 9], (m)[10], (m)[11])) ! #define ELL_4MV_ROW3_GET(v, m) \ (ELL_4V_SET((v), (m)[12], (m)[13], (m)[14], (m)[15])) ! #define ELL_4MV_COL0_GET(v, m) \ (ELL_4V_SET((v), (m)[ 0], (m)[ 4], (m)[ 8], (m)[12])) ! #define ELL_4MV_COL1_GET(v, m) \ (ELL_4V_SET((v), (m)[ 1], (m)[ 5], (m)[ 9], (m)[13])) ! #define ELL_4MV_COL2_GET(v, m) \ (ELL_4V_SET((v), (m)[ 2], (m)[ 6], (m)[10], (m)[14])) ! #define ELL_4MV_COL3_GET(v, m) \ (ELL_4V_SET((v), (m)[ 3], (m)[ 7], (m)[11], (m)[15])) ! #define ELL_4MV_ROW0_SET(m, v) \ (ELL_4V_GET((m)[ 0], (m)[ 1], (m)[ 2], (m)[ 3], (v))) ! #define ELL_4MV_ROW1_SET(m, v) \ (ELL_4V_GET((m)[ 4], (m)[ 5], (m)[ 6], (m)[ 7], (v))) ! #define ELL_4MV_ROW2_SET(m, v) \ (ELL_4V_GET((m)[ 8], (m)[ 9], (m)[10], (m)[11], (v))) ! #define ELL_4MV_ROW3_SET(m, v) \ (ELL_4V_GET((m)[12], (m)[13], (m)[14], (m)[15], (v))) ! #define ELL_4MV_COL0_SET(m, v) \ (ELL_4V_GET((m)[ 0], (m)[ 4], (m)[ 8], (m)[12], (v))) ! #define ELL_4MV_COL1_SET(m, v) \ (ELL_4V_GET((m)[ 1], (m)[ 5], (m)[ 9], (m)[13], (v))) ! #define ELL_4MV_COL2_SET(m, v) \ (ELL_4V_GET((m)[ 2], (m)[ 6], (m)[10], (m)[14], (v))) ! #define ELL_4MV_COL3_SET(m, v) \ (ELL_4V_GET((m)[ 3], (m)[ 7], (m)[11], (m)[15], (v))) #define ELL_4MV_MUL(v2, m, v1) \ ((v2)[0]=(m)[ 0]*(v1)[0]+(m)[ 1]*(v1)[1]+(m)[ 2]*(v1)[2]+(m)[ 3]*(v1)[3], \ (v2)[1]=(m)[ 4]*(v1)[0]+(m)[ 5]*(v1)[1]+(m)[ 6]*(v1)[2]+(m)[ 7]*(v1)[3], \ *************** *** 565,568 **** --- 559,568 ---- (v2)[3]=(m)[12]*(v1)[0]+(m)[13]*(v1)[1]+(m)[14]*(v1)[2]+(m)[15]*(v1)[3]) + #define ELL_4MV_TMUL(v2, m, v1) \ + ((v2)[0]=(m)[ 0]*(v1)[0]+(m)[ 4]*(v1)[1]+(m)[ 8]*(v1)[2]+(m)[12]*(v1)[3], \ + (v2)[1]=(m)[ 1]*(v1)[0]+(m)[ 5]*(v1)[1]+(m)[ 9]*(v1)[2]+(m)[13]*(v1)[3], \ + (v2)[2]=(m)[ 2]*(v1)[0]+(m)[ 6]*(v1)[1]+(m)[10]*(v1)[2]+(m)[14]*(v1)[3], \ + (v2)[3]=(m)[ 3]*(v1)[0]+(m)[ 7]*(v1)[1]+(m)[11]*(v1)[2]+(m)[15]*(v1)[3]) + #define ELL_34V_HOMOG(v2, v1) \ ((v2)[0] = (v1)[0]/(v1)[3], \ *************** *** 577,593 **** /* - ** the ELL_4M_SET... macros are setting the matrix one _column_ - ** at a time- so the matrix components appear below in transpose - ** ** These macros are intended to be used as aids with homogeneous transforms */ ! #define ELL_4M_COLS_SET(m, a, b, c, d) \ ! (ELL_4V_COPY((m)+ 0, a), \ ! ELL_4V_COPY((m)+ 4, b), \ ! ELL_4V_COPY((m)+ 8, c), \ ! ELL_4V_COPY((m)+12, d)) ! ! #define ELL_4M_ROWS_SET(m, a, b, c, d) \ (ELL_4V_SET((m)+ 0, (a)[0], (b)[0], (c)[0], (d)[0]), \ ELL_4V_SET((m)+ 4, (a)[1], (b)[1], (c)[1], (d)[1]), \ --- 577,584 ---- /* ** These macros are intended to be used as aids with homogeneous transforms */ ! #define ELL_4M_COLS_SET(m, a, b, c, d) \ (ELL_4V_SET((m)+ 0, (a)[0], (b)[0], (c)[0], (d)[0]), \ ELL_4V_SET((m)+ 4, (a)[1], (b)[1], (c)[1], (d)[1]), \ *************** *** 595,598 **** --- 586,595 ---- ELL_4V_SET((m)+12, (a)[3], (b)[3], (c)[3], (d)[3])) + #define ELL_4M_ROWS_SET(m, a, b, c, d) \ + (ELL_4V_COPY((m)+ 0, a), \ + ELL_4V_COPY((m)+ 4, b), \ + ELL_4V_COPY((m)+ 8, c), \ + ELL_4V_COPY((m)+12, d)) + #define ELL_4M_IDENTITY_SET(m) \ (ELL_4V_SET((m)+ 0, 1 , 0 , 0 , 0), \ *************** *** 614,660 **** #define ELL_4M_TRANSLATE_SET(m, x, y, z) \ ! (ELL_4V_SET((m)+ 0, 1 , 0 , 0 , 0), \ ! ELL_4V_SET((m)+ 4, 0 , 1 , 0 , 0), \ ! ELL_4V_SET((m)+ 8, 0 , 0 , 1 , 0), \ ! ELL_4V_SET((m)+12, (x), (y), (z), 1)) #define ELL_4M_ROTATE_X_SET(m, th) \ (ELL_4V_SET((m)+ 0, 1 , 0 , 0 , 0), \ ! ELL_4V_SET((m)+ 4, 0 , cos(th) , +sin(th) , 0), \ ! ELL_4V_SET((m)+ 8, 0 , -sin(th) , cos(th) , 0), \ ELL_4V_SET((m)+12, 0 , 0 , 0 , 1)) #define ELL_4M_ROTATE_Y_SET(m, th) \ ! (ELL_4V_SET((m)+ 0, cos(th) , 0 , -sin(th) , 0), \ ELL_4V_SET((m)+ 4, 0 , 1 , 0 , 0), \ ! ELL_4V_SET((m)+ 8, +sin(th) , 0 , cos(th) , 0), \ ELL_4V_SET((m)+12, 0 , 0 , 0 , 1)) #define ELL_4M_ROTATE_Z_SET(m, th) \ ! (ELL_4V_SET((m)+ 0, cos(th) , +sin(th) , 0 , 0), \ ! ELL_4V_SET((m)+ 4, -sin(th) , cos(th) , 0 , 0), \ ELL_4V_SET((m)+ 8, 0 , 0 , 1 , 0), \ ELL_4V_SET((m)+12, 0 , 0 , 0 , 1)) #define ELL_4M_MUL(n, l, m) \ ! ((n)[ 0]=(l)[ 0]*(m)[ 0]+(l)[ 4]*(m)[ 1]+(l)[ 8]*(m)[ 2]+(l)[12]*(m)[ 3], \ ! (n)[ 1]=(l)[ 1]*(m)[ 0]+(l)[ 5]*(m)[ 1]+(l)[ 9]*(m)[ 2]+(l)[13]*(m)[ 3], \ ! (n)[ 2]=(l)[ 2]*(m)[ 0]+(l)[ 6]*(m)[ 1]+(l)[10]*(m)[ 2]+(l)[14]*(m)[ 3], \ ! (n)[ 3]=(l)[ 3]*(m)[ 0]+(l)[ 7]*(m)[ 1]+(l)[11]*(m)[ 2]+(l)[15]*(m)[ 3], \ \ ! (n)[ 4]=(l)[ 0]*(m)[ 4]+(l)[ 4]*(m)[ 5]+(l)[ 8]*(m)[ 6]+(l)[12]*(m)[ 7], \ ! (n)[ 5]=(l)[ 1]*(m)[ 4]+(l)[ 5]*(m)[ 5]+(l)[ 9]*(m)[ 6]+(l)[13]*(m)[ 7], \ ! (n)[ 6]=(l)[ 2]*(m)[ 4]+(l)[ 6]*(m)[ 5]+(l)[10]*(m)[ 6]+(l)[14]*(m)[ 7], \ ! (n)[ 7]=(l)[ 3]*(m)[ 4]+(l)[ 7]*(m)[ 5]+(l)[11]*(m)[ 6]+(l)[15]*(m)[ 7], \ \ ! (n)[ 8]=(l)[ 0]*(m)[ 8]+(l)[ 4]*(m)[ 9]+(l)[ 8]*(m)[10]+(l)[12]*(m)[11], \ ! (n)[ 9]=(l)[ 1]*(m)[ 8]+(l)[ 5]*(m)[ 9]+(l)[ 9]*(m)[10]+(l)[13]*(m)[11], \ ! (n)[10]=(l)[ 2]*(m)[ 8]+(l)[ 6]*(m)[ 9]+(l)[10]*(m)[10]+(l)[14]*(m)[11], \ ! (n)[11]=(l)[ 3]*(m)[ 8]+(l)[ 7]*(m)[ 9]+(l)[11]*(m)[10]+(l)[15]*(m)[11], \ \ ! (n)[12]=(l)[ 0]*(m)[12]+(l)[ 4]*(m)[13]+(l)[ 8]*(m)[14]+(l)[12]*(m)[15], \ ! (n)[13]=(l)[ 1]*(m)[12]+(l)[ 5]*(m)[13]+(l)[ 9]*(m)[14]+(l)[13]*(m)[15], \ ! (n)[14]=(l)[ 2]*(m)[12]+(l)[ 6]*(m)[13]+(l)[10]*(m)[14]+(l)[14]*(m)[15], \ ! (n)[15]=(l)[ 3]*(m)[12]+(l)[ 7]*(m)[13]+(l)[11]*(m)[14]+(l)[15]*(m)[15]) #define ELL_34M_EXTRACT(m, l) \ --- 611,657 ---- #define ELL_4M_TRANSLATE_SET(m, x, y, z) \ ! (ELL_4V_SET((m)+ 0, 1 , 0 , 0 , (x)), \ ! ELL_4V_SET((m)+ 4, 0 , 1 , 0 , (y)), \ ! ELL_4V_SET((m)+ 8, 0 , 0 , 1 , (z)), \ ! ELL_4V_SET((m)+12, 0 , 0 , 0 , 1)) #define ELL_4M_ROTATE_X_SET(m, th) \ (ELL_4V_SET((m)+ 0, 1 , 0 , 0 , 0), \ ! ELL_4V_SET((m)+ 4, 0 , cos(th) , -sin(th) , 0), \ ! ELL_4V_SET((m)+ 8, 0 , +sin(th) , cos(th) , 0), \ ELL_4V_SET((m)+12, 0 , 0 , 0 , 1)) #define ELL_4M_ROTATE_Y_SET(m, th) \ ! (ELL_4V_SET((m)+ 0, cos(th) , 0 , +sin(th) , 0), \ ELL_4V_SET((m)+ 4, 0 , 1 , 0 , 0), \ ! ELL_4V_SET((m)+ 8, -sin(th) , 0 , cos(th) , 0), \ ELL_4V_SET((m)+12, 0 , 0 , 0 , 1)) #define ELL_4M_ROTATE_Z_SET(m, th) \ ! (ELL_4V_SET((m)+ 0, cos(th) , -sin(th) , 0 , 0), \ ! ELL_4V_SET((m)+ 4, +sin(th) , cos(th) , 0 , 0), \ ELL_4V_SET((m)+ 8, 0 , 0 , 1 , 0), \ ELL_4V_SET((m)+12, 0 , 0 , 0 , 1)) #define ELL_4M_MUL(n, l, m) \ ! ((n)[ 0]=(l)[ 0]*(m)[ 0]+(l)[ 1]*(m)[ 4]+(l)[ 2]*(m)[ 8]+(l)[ 3]*(m)[12], \ ! (n)[ 1]=(l)[ 0]*(m)[ 1]+(l)[ 1]*(m)[ 5]+(l)[ 2]*(m)[ 9]+(l)[ 3]*(m)[13], \ ! (n)[ 2]=(l)[ 0]*(m)[ 2]+(l)[ 1]*(m)[ 6]+(l)[ 2]*(m)[10]+(l)[ 3]*(m)[14], \ ! (n)[ 3]=(l)[ 0]*(m)[ 3]+(l)[ 1]*(m)[ 7]+(l)[ 2]*(m)[11]+(l)[ 3]*(m)[15], \ \ ! (n)[ 4]=(l)[ 4]*(m)[ 0]+(l)[ 5]*(m)[ 4]+(l)[ 6]*(m)[ 8]+(l)[ 7]*(m)[12], \ ! (n)[ 5]=(l)[ 4]*(m)[ 1]+(l)[ 5]*(m)[ 5]+(l)[ 6]*(m)[ 9]+(l)[ 7]*(m)[13], \ ! (n)[ 6]=(l)[ 4]*(m)[ 2]+(l)[ 5]*(m)[ 6]+(l)[ 6]*(m)[10]+(l)[ 7]*(m)[14], \ ! (n)[ 7]=(l)[ 4]*(m)[ 3]+(l)[ 5]*(m)[ 7]+(l)[ 6]*(m)[11]+(l)[ 7]*(m)[15], \ \ ! (n)[ 8]=(l)[ 8]*(m)[ 0]+(l)[ 9]*(m)[ 4]+(l)[10]*(m)[ 8]+(l)[11]*(m)[12], \ ! (n)[ 9]=(l)[ 8]*(m)[ 1]+(l)[ 9]*(m)[ 5]+(l)[10]*(m)[ 9]+(l)[11]*(m)[13], \ ! (n)[10]=(l)[ 8]*(m)[ 2]+(l)[ 9]*(m)[ 6]+(l)[10]*(m)[10]+(l)[11]*(m)[14], \ ! (n)[11]=(l)[ 8]*(m)[ 3]+(l)[ 9]*(m)[ 7]+(l)[10]*(m)[11]+(l)[11]*(m)[15], \ \ ! (n)[12]=(l)[12]*(m)[ 0]+(l)[13]*(m)[ 4]+(l)[14]*(m)[ 8]+(l)[15]*(m)[12], \ ! (n)[13]=(l)[12]*(m)[ 1]+(l)[13]*(m)[ 5]+(l)[14]*(m)[ 9]+(l)[15]*(m)[13], \ ! (n)[14]=(l)[12]*(m)[ 2]+(l)[13]*(m)[ 6]+(l)[14]*(m)[10]+(l)[15]*(m)[14], \ ! (n)[15]=(l)[12]*(m)[ 3]+(l)[13]*(m)[ 7]+(l)[14]*(m)[11]+(l)[15]*(m)[15]) #define ELL_34M_EXTRACT(m, l) \ *************** *** 679,691 **** (m)[ 9], (m)[10], (m)[11], \ (m)[13], (m)[14], (m)[15]) \ ! - (m)[ 4] * _ELL_3M_DET((m)[ 1], (m)[ 2], (m)[ 3], \ ! (m)[ 9], (m)[10], (m)[11], \ ! (m)[13], (m)[14], (m)[15]) \ ! + (m)[ 8] * _ELL_3M_DET((m)[ 1], (m)[ 2], (m)[ 3], \ ! (m)[ 5], (m)[ 6], (m)[ 7], \ ! (m)[13], (m)[14], (m)[15]) \ ! - (m)[12] * _ELL_3M_DET((m)[ 1], (m)[ 2], (m)[ 3], \ ! (m)[ 5], (m)[ 6], (m)[ 7], \ ! (m)[ 9], (m)[10], (m)[11])) #define ELL_Q_MUL(q3, q1, q2) \ --- 676,688 ---- (m)[ 9], (m)[10], (m)[11], \ (m)[13], (m)[14], (m)[15]) \ ! - (m)[ 1] * _ELL_3M_DET((m)[ 4], (m)[ 6], (m)[ 7], \ ! (m)[ 8], (m)[10], (m)[11], \ ! (m)[12], (m)[14], (m)[15]) \ ! + (m)[ 2] * _ELL_3M_DET((m)[ 4], (m)[ 5], (m)[ 7], \ ! (m)[ 8], (m)[ 9], (m)[11], \ ! (m)[12], (m)[13], (m)[15]) \ ! - (m)[ 3] * _ELL_3M_DET((m)[ 4], (m)[ 5], (m)[ 6], \ ! (m)[ 8], (m)[ 9], (m)[10], \ ! (m)[12], (m)[13], (m)[14])) #define ELL_Q_MUL(q3, q1, q2) \ *************** *** 704,734 **** #define ELL_Q_TO_3M(m, q) \ ! (ELL_3V_SET((m)+0, \ (q)[0]*(q)[0] + (q)[1]*(q)[1] - (q)[2]*(q)[2] - (q)[3]*(q)[3], \ - 2*((q)[1]*(q)[2] + (q)[0]*(q)[3]), \ - 2*((q)[1]*(q)[3] - (q)[0]*(q)[2])), \ - ELL_3V_SET((m)+3, \ 2*((q)[1]*(q)[2] - (q)[0]*(q)[3]), \ (q)[0]*(q)[0] - (q)[1]*(q)[1] + (q)[2]*(q)[2] - (q)[3]*(q)[3], \ ! 2*((q)[2]*(q)[3] + (q)[0]*(q)[1])), \ ELL_3V_SET((m)+6, \ ! 2*((q)[1]*(q)[3] + (q)[0]*(q)[2]), \ ! 2*((q)[2]*(q)[3] - (q)[0]*(q)[1]), \ (q)[0]*(q)[0] - (q)[1]*(q)[1] - (q)[2]*(q)[2] + (q)[3]*(q)[3])) #define ELL_Q_TO_4M(m, q) \ ! (ELL_4V_SET((m)+0, \ (q)[0]*(q)[0] + (q)[1]*(q)[1] - (q)[2]*(q)[2] - (q)[3]*(q)[3], \ ! 2*((q)[1]*(q)[2] + (q)[0]*(q)[3]), \ ! 2*((q)[1]*(q)[3] - (q)[0]*(q)[2]), \ 0), \ ELL_4V_SET((m)+4, \ ! 2*((q)[1]*(q)[2] - (q)[0]*(q)[3]), \ (q)[0]*(q)[0] - (q)[1]*(q)[1] + (q)[2]*(q)[2] - (q)[3]*(q)[3], \ ! 2*((q)[2]*(q)[3] + (q)[0]*(q)[1]), \ 0), \ ELL_4V_SET((m)+8, \ ! 2*((q)[1]*(q)[3] + (q)[0]*(q)[2]), \ ! 2*((q)[2]*(q)[3] - (q)[0]*(q)[1]), \ (q)[0]*(q)[0] - (q)[1]*(q)[1] - (q)[2]*(q)[2] + (q)[3]*(q)[3], \ 0), \ --- 701,731 ---- #define ELL_Q_TO_3M(m, q) \ ! (ELL_3V_SET((m)+0, \ (q)[0]*(q)[0] + (q)[1]*(q)[1] - (q)[2]*(q)[2] - (q)[3]*(q)[3], \ 2*((q)[1]*(q)[2] - (q)[0]*(q)[3]), \ + 2*((q)[1]*(q)[3] + (q)[0]*(q)[2])), \ + ELL_3V_SET((m)+3, \ + 2*((q)[1]*(q)[2] + (q)[0]*(q)[3]), \ (q)[0]*(q)[0] - (q)[1]*(q)[1] + (q)[2]*(q)[2] - (q)[3]*(q)[3], \ ! 2*((q)[2]*(q)[3] - (q)[0]*(q)[1])), \ ELL_3V_SET((m)+6, \ ! 2*((q)[1]*(q)[3] - (q)[0]*(q)[2]), \ ! 2*((q)[2]*(q)[3] + (q)[0]*(q)[1]), \ (q)[0]*(q)[0] - (q)[1]*(q)[1] - (q)[2]*(q)[2] + (q)[3]*(q)[3])) #define ELL_Q_TO_4M(m, q) \ ! (ELL_4V_SET((m)+0, \ (q)[0]*(q)[0] + (q)[1]*(q)[1] - (q)[2]*(q)[2] - (q)[3]*(q)[3], \ ! 2*((q)[1]*(q)[2] - (q)[0]*(q)[3]), \ ! 2*((q)[1]*(q)[3] + (q)[0]*(q)[2]), \ 0), \ ELL_4V_SET((m)+4, \ ! 2*((q)[1]*(q)[2] + (q)[0]*(q)[3]), \ (q)[0]*(q)[0] - (q)[1]*(q)[1] + (q)[2]*(q)[2] - (q)[3]*(q)[3], \ ! 2*((q)[2]*(q)[3] - (q)[0]*(q)[1]), \ 0), \ ELL_4V_SET((m)+8, \ ! 2*((q)[1]*(q)[3] - (q)[0]*(q)[2]), \ ! 2*((q)[2]*(q)[3] + (q)[0]*(q)[1]), \ (q)[0]*(q)[0] - (q)[1]*(q)[1] - (q)[2]*(q)[2] + (q)[3]*(q)[3], \ 0), \ Index: genmat.c =================================================================== RCS file: /cvsroot/teem/teem/src/ell/genmat.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** genmat.c 7 Jan 2004 15:34:29 -0000 1.4 --- genmat.c 1 Mar 2004 10:19:44 -0000 1.5 *************** *** 21,56 **** #include "ell.h" - /* - ** ======================== - ** NOTE NOTE NOTE NOTE NOTE - ** ======================== - ** All the functions in this file use a matrix ordering which - ** is opposite if the (current) ordering in the rest of ell. - ** - ** Rest of ell: - ** 0 . . . - ** 1 . . . - ** 2 . . . - ** . . . . - ** - ** This file: - ** 0 1 2 . - ** . . . . - ** . . . . - ** . . . . - */ - int ! ell_Nm_valid(Nrrd *mat) { ! char me[]="ell_Nm_valid", err[AIR_STRLEN_MED]; ! if (!mat) { ! sprintf(err, "%s: got NULL pointer", me); ! biffAdd(ELL, err); return 0; } - /* nrrdCheck(mat)? */ if (!( 2 == mat->dim )) { sprintf(err, "%s: nrrd must be 2-D (not %d-D)", me, mat->dim); ! biffAdd(ELL, err); return 0; } if (!( nrrdTypeDouble == mat->type )) { --- 21,35 ---- #include "ell.h" int ! ell_Nm_check(Nrrd *mat) { ! char me[]="ell_Nm_check", err[AIR_STRLEN_MED]; ! if (nrrdCheck(mat)) { ! sprintf(err, "%s: basic nrrd validity check failed", me); ! biffMove(ELL, err, NRRD); return 1; } if (!( 2 == mat->dim )) { sprintf(err, "%s: nrrd must be 2-D (not %d-D)", me, mat->dim); ! biffAdd(ELL, err); return 1; } if (!( nrrdTypeDouble == mat->type )) { *************** *** 58,65 **** airEnumStr(nrrdType, nrrdTypeDouble), airEnumStr(nrrdType, mat->type)); ! biffAdd(ELL, err); return 0; } ! return 1; } --- 37,44 ---- airEnumStr(nrrdType, nrrdTypeDouble), airEnumStr(nrrdType, mat->type)); ! biffAdd(ELL, err); return 1; } ! return 0; } *************** *** 68,72 **** char me[]="ell_Nm_tran", err[AIR_STRLEN_MED]; ! if (!( ntrn && ell_Nm_valid(nmat) )) { sprintf(err, "%s: NULL or invalid args", me); biffAdd(ELL, err); return 1; --- 47,51 ---- char me[]="ell_Nm_tran", err[AIR_STRLEN_MED]; ! if (!( ntrn && !ell_Nm_check(nmat) )) { sprintf(err, "%s: NULL or invalid args", me); biffAdd(ELL, err); return 1; *************** *** 98,102 **** int LL, MM, NN, ll, mm, nn; ! if (!( nAB && ell_Nm_valid(nA) && ell_Nm_valid(nB) )) { sprintf(err, "%s: NULL or invalid args", me); biffAdd(ELL, err); return 1; --- 77,81 ---- int LL, MM, NN, ll, mm, nn; ! if (!( nAB && !ell_Nm_check(nA) && !ell_Nm_check(nB) )) { sprintf(err, "%s: NULL or invalid args", me); biffAdd(ELL, err); return 1; *************** *** 313,317 **** int NN; ! if (!( ninv && ell_Nm_valid(nmat) )) { sprintf(err, "%s: NULL or invalid args", me); biffAdd(ELL, err); return 1; --- 292,296 ---- int NN; ! if (!( ninv && !ell_Nm_check(nmat) )) { sprintf(err, "%s: NULL or invalid args", me); biffAdd(ELL, err); return 1; *************** *** 353,357 **** int ret=0; ! if (!( ninv && ell_Nm_valid(nA) )) { sprintf(err, "%s: NULL or invalid args", me); biffAdd(ELL, err); return 1; --- 332,336 ---- int ret=0; ! if (!( ninv && !ell_Nm_check(nA) )) { sprintf(err, "%s: NULL or invalid args", me); biffAdd(ELL, err); return 1; Index: miscEll.c =================================================================== RCS file: /cvsroot/teem/teem/src/ell/miscEll.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** miscEll.c 7 Jan 2004 15:34:29 -0000 1.5 --- miscEll.c 1 Mar 2004 10:19:44 -0000 1.6 *************** *** 37,45 **** fprintf(f, "% 15.7f % 15.7f % 15.7f\n", ! s[0], s[3], s[6]); fprintf(f, "% 15.7f % 15.7f % 15.7f\n", ! s[1], s[4], s[7]); fprintf(f, "% 15.7f % 15.7f % 15.7f\n", ! s[2], s[5], s[8]); } --- 37,45 ---- fprintf(f, "% 15.7f % 15.7f % 15.7f\n", ! s[0], s[1], s[2]); fprintf(f, "% 15.7f % 15.7f % 15.7f\n", ! s[3], s[4], s[5]); fprintf(f, "% 15.7f % 15.7f % 15.7f\n", ! s[6], s[7], s[8]); } *************** *** 55,63 **** fprintf(f, "% 31.15f % 31.15f % 31.15f\n", ! s[0], s[3], s[6]); fprintf(f, "% 31.15f % 31.15f % 31.15f\n", ! s[1], s[4], s[7]); fprintf(f, "% 31.15f % 31.15f % 31.15f\n", ! s[2], s[5], s[8]); } --- 55,63 ---- fprintf(f, "% 31.15f % 31.15f % 31.15f\n", ! s[0], s[1], s[2]); fprintf(f, "% 31.15f % 31.15f % 31.15f\n", ! s[3], s[4], s[5]); fprintf(f, "% 31.15f % 31.15f % 31.15f\n", ! s[6], s[7], s[8]); } *************** *** 73,83 **** fprintf(f, "% 15.7f % 15.7f % 15.7f % 15.7f\n", ! s[0], s[4], s[8], s[12]); fprintf(f, "% 15.7f % 15.7f % 15.7f % 15.7f\n", ! s[1], s[5], s[9], s[13]); fprintf(f, "% 15.7f % 15.7f % 15.7f % 15.7f\n", ! s[2], s[6], s[10], s[14]); fprintf(f, "% 15.7f % 15.7f % 15.7f % 15.7f\n", ! s[3], s[7], s[11], s[15]); } --- 73,83 ---- fprintf(f, "% 15.7f % 15.7f % 15.7f % 15.7f\n", ! s[ 0], s[ 1], s[ 2], s[ 3]); fprintf(f, "% 15.7f % 15.7f % 15.7f % 15.7f\n", ! s[ 4], s[ 5], s[ 6], s[ 7]); fprintf(f, "% 15.7f % 15.7f % 15.7f % 15.7f\n", ! s[ 8], s[ 9], s[10], s[11]); fprintf(f, "% 15.7f % 15.7f % 15.7f % 15.7f\n", ! s[12], s[13], s[14], s[15]); } *************** *** 93,103 **** fprintf(f, "% 31.15f % 31.15f % 31.15f % 31.15f\n", ! s[0], s[4], s[8], s[12]); fprintf(f, "% 31.15f % 31.15f % 31.15f % 31.15f\n", ! s[1], s[5], s[9], s[13]); fprintf(f, "% 31.15f % 31.15f % 31.15f % 31.15f\n", ! s[2], s[6], s[10], s[14]); fprintf(f, "% 31.15f % 31.15f % 31.15f % 31.15f\n", ! s[3], s[7], s[11], s[15]); } --- 93,103 ---- fprintf(f, "% 31.15f % 31.15f % 31.15f % 31.15f\n", ! s[ 0], s[ 1], s[ 2], s[ 3]); fprintf(f, "% 31.15f % 31.15f % 31.15f % 31.15f\n", ! s[ 4], s[ 5], s[ 6], s[ 7]); fprintf(f, "% 31.15f % 31.15f % 31.15f % 31.15f\n", ! s[ 8], s[ 9], s[10], s[11]); fprintf(f, "% 31.15f % 31.15f % 31.15f % 31.15f\n", ! s[12], s[13], s[14], s[15]); } Index: quat.c =================================================================== RCS file: /cvsroot/teem/teem/src/ell/quat.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** quat.c 7 Jan 2004 15:34:29 -0000 1.3 --- quat.c 1 Mar 2004 10:19:44 -0000 1.4 *************** *** 26,37 **** /* ! 0 3 6 ! 1 4 7 ! 2 5 8 ! 0 4 8 12 ! 1 5 9 13 ! 2 6 10 14 ! 3 7 11 15 */ --- 26,37 ---- /* ! 0 1 2 ! 3 4 5 ! 6 7 8 ! 0 1 2 3 ! 4 5 6 7 ! 8 9 10 11 ! 12 13 14 15 */ *************** *** 51,60 **** s[Y] = 1 - m[i0] + m[i4] - m[i8]; \ s[Z] = 1 - m[i0] - m[i4] + m[i8]; \ ! wx = m[i5] - m[i7]; \ ! wy = m[i6] - m[i2]; \ ! wz = m[i1] - m[i3]; \ ! xy = m[i1] + m[i3]; \ ! xz = m[i2] + m[i6]; \ ! yz = m[i5] + m[i7]; \ mi = s[W] > s[X] ? W : X; \ mi = s[mi] > s[Y] ? mi : Y; \ --- 51,60 ---- s[Y] = 1 - m[i0] + m[i4] - m[i8]; \ s[Z] = 1 - m[i0] - m[i4] + m[i8]; \ ! wx = m[i7] - m[i5]; \ ! wy = m[i2] - m[i6]; \ ! wz = m[i3] - m[i1]; \ ! xy = m[i3] + m[i1]; \ ! xz = m[i6] + m[i2]; \ ! yz = m[i7] + m[i5]; \ mi = s[W] > s[X] ? W : X; \ mi = s[mi] > s[Y] ? mi : Y; \ *************** *** 109,121 **** ELL_3V_SET(m+0, \ w*w + x*x - y*y - z*z, \ - 2*(x*y + w*z), \ - 2*(x*z - w*y)); \ - ELL_3V_SET(m+3, \ 2*(x*y - w*z), \ w*w - x*x + y*y - z*z, \ ! 2*(y*z + w*x)); \ ELL_3V_SET(m+6, \ ! 2*(x*z + w*y), \ ! 2*(y*z - w*x), \ w*w - x*x - y*y + z*z) --- 109,121 ---- ELL_3V_SET(m+0, \ w*w + x*x - y*y - z*z, \ 2*(x*y - w*z), \ + 2*(x*z + w*y)); \ + ELL_3V_SET(m+3, \ + 2*(x*y + w*z), \ w*w - x*x + y*y - z*z, \ ! 2*(y*z - w*x)); \ ELL_3V_SET(m+6, \ ! 2*(x*z - w*y), \ ! 2*(y*z + w*x), \ w*w - x*x - y*y + z*z) *************** *** 137,151 **** ELL_4V_SET(m+0, \ w*w + x*x - y*y - z*z, \ ! 2*(x*y + w*z), \ ! 2*(x*z - w*y), \ 0); \ ELL_4V_SET(m+4, \ ! 2*(x*y - w*z), \ w*w - x*x + y*y - z*z, \ ! 2*(y*z + w*x), \ 0); \ ELL_4V_SET(m+8, \ ! 2*(x*z + w*y), \ ! 2*(y*z - w*x), \ w*w - x*x - y*y + z*z, \ 0); \ --- 137,151 ---- ELL_4V_SET(m+0, \ w*w + x*x - y*y - z*z, \ ! 2*(x*y - w*z), \ ! 2*(x*z + w*y), \ 0); \ ELL_4V_SET(m+4, \ ! 2*(x*y + w*z), \ w*w - x*x + y*y - z*z, \ ! 2*(y*z - w*x), \ 0); \ ELL_4V_SET(m+8, \ ! 2*(x*z - w*y), \ ! 2*(y*z + w*x), \ w*w - x*x - y*y + z*z, \ 0); \ |