TooN 2.1
generated.h
00001 // Generated for J*C*J^T, C symmetric
00002 template <class A1, class A2, class A3> inline void transformCovariance(const FixedMatrix<2,2,A1>& A, const FixedMatrix<2,2,A2>& B, FixedMatrix<2,2,A3>& M)
00003 {
00004     M = A*B*A.T();
00005 }
00006 
00007 // Generated for J*C*J^T, C symmetric
00008 template <int N, class A1, class A2, class A3> inline void transformCovariance(const FixedMatrix<2,N,A1>& A, const FixedMatrix<N,N,A2>& B, FixedMatrix<2,2,A3>& M)
00009 {
00010     {   const Vector<N> ABi = B * A[0];
00011         M[0][0] = ABi * A[0];
00012         M[0][1] = M[1][0] = ABi * A[1];
00013     }
00014     M[1][1] = (B * A[1]) * A[1];
00015 }
00016 
00017 // Generated for J*C*J^T, C symmetric
00018 template <int N, class A1, class A2, class A3> inline void transformCovariance(const FixedMatrix<3,N,A1>& A, const FixedMatrix<N,N,A2>& B, FixedMatrix<3,3,A3>& M)
00019 {
00020     {   const Vector<N> ABi = B * A[0];
00021         M[0][0] = ABi * A[0];
00022         M[0][1] = M[1][0] = ABi * A[1];
00023         M[0][2] = M[2][0] = ABi * A[2];
00024     }
00025     {   const Vector<N> ABi = B * A[1];
00026         M[1][1] = ABi * A[1];
00027         M[1][2] = M[2][1] = ABi * A[2];
00028     }
00029     M[2][2] = (B * A[2]) * A[2];
00030 }
00031 
00032 #if 0
00033 // Generated for J*C*J^T, C symmetric
00034 template <int N, class A1, class A2, class A3> inline void transformCovariance(const FixedMatrix<6,N,A1>& A, const FixedMatrix<N,N,A2>& B, FixedMatrix<6,6,A3>& M)
00035 {
00036     {   const Vector<N> ABi = B * A[0];
00037         M[0][0] = ABi * A[0];
00038         M[0][1] = M[1][0] = ABi * A[1];
00039         M[0][2] = M[2][0] = ABi * A[2];
00040         M[0][3] = M[3][0] = ABi * A[3];
00041         M[0][4] = M[4][0] = ABi * A[4];
00042         M[0][5] = M[5][0] = ABi * A[5];
00043     }
00044     {   const Vector<N> ABi = B * A[1];
00045         M[1][1] = ABi * A[1];
00046         M[1][2] = M[2][1] = ABi * A[2];
00047         M[1][3] = M[3][1] = ABi * A[3];
00048         M[1][4] = M[4][1] = ABi * A[4];
00049         M[1][5] = M[5][1] = ABi * A[5];
00050     }
00051     {   const Vector<N> ABi = B * A[2];
00052         M[2][2] = ABi * A[2];
00053         M[2][3] = M[3][2] = ABi * A[3];
00054         M[2][4] = M[4][2] = ABi * A[4];
00055         M[2][5] = M[5][2] = ABi * A[5];
00056     }
00057     {   const Vector<N> ABi = B * A[3];
00058         M[3][3] = ABi * A[3];
00059         M[3][4] = M[4][3] = ABi * A[4];
00060         M[3][5] = M[5][3] = ABi * A[5];
00061     }
00062     {   const Vector<N> ABi = B * A[4];
00063         M[4][4] = ABi * A[4];
00064         M[4][5] = M[5][4] = ABi * A[5];
00065     }
00066     M[5][5] = (B * A[5]) * A[5];
00067 }
00068 #endif