25 #include <Base/Common/W32Compat.hh>
27 #include "Tensor3D3x3x3.hh"
28 #include "Matrix3x3.hh"
30 #include <Base/Common/BIASpragma.hh>
50 BIASERR(
"do not call NewSize for Tensor3D3x3x3<T>, it has fixed size of 3x3x3");
59 BIASERR(
"do not call newsize for Tensor3D3x3x3<T>, it has fixed size of 3x3x3");
69 for (
int i=0; i<3; i++)
70 for (
int j=0; j<3; j++)
71 for (
int k=0; k<3; k++)
74 for (
int p=0; p<3; p++)
75 v += this->_DataArray[p][j][k] * M[p][i];
85 for (
int i=0; i<3; i++)
86 for (
int j=0; j<3; j++)
87 for (
int k=0; k<3; k++)
90 for (
int p = 0; p < 3; ++p)
91 v += this->_DataArray[i][p][k] * M[p][j];
101 for (
int i=0; i<3; i++)
102 for (
int j=0; j<3; j++)
103 for (
int k=0; k<3; k++)
106 for (
int p = 0; p < 3; ++p)
107 v += this->_DataArray[i][j][p] * M[p][k];
108 result(i,j,k) = (T)v;
117 for (
int i=0; i<3; i++)
118 for (
int j=0; j<3; j++)
119 for (
int k=0; k<3; k++)
122 for (
int p = 0; p < 3; ++p)
123 v += M[i][p] * this->_DataArray[p][j][k];
124 result(i,j,k) = (T)v;
133 for (
int i=0; i<3; i++)
134 for (
int j=0; j<3; j++)
135 for (
int k=0; k<3; k++)
138 for (
int p = 0; p < 3; ++p)
139 v += M[j][p] * this->_DataArray[i][p][k];
140 result(i,j,k) = (T)v;
149 for (
int i=0; i<3; i++)
150 for (
int j=0; j<3; j++)
151 for (
int k=0; k<3; k++)
154 for (
int p = 0; p < 3; ++p)
155 v += M[k][p] * this->_DataArray[i][j][p];
156 result(i,j,k) = (T)v;
162 template class BIASMathBase_EXPORT BIAS::Tensor3D3x3x3<type>;\
void premultiply2(const BIAS::Matrix3x3< T > &M, Tensor3D3x3x3< T > &result) const
compute S_{ijk} = M_{jp} T_{ipk}
void postmultiply2(const BIAS::Matrix3x3< T > &M, Tensor3D3x3x3< T > &result) const
Compute S_{ijk} = T_{ipk} M_{pj}.
void newsize(const int i, const int j, const int k, const T &def=(T) 0.0)
void postmultiply1(const BIAS::Matrix3x3< T > &M, Tensor3D3x3x3< T > &result) const
Compute S_{ijk} = T_{pjk} M_{pi}.
void premultiply3(const BIAS::Matrix3x3< T > &M, Tensor3D3x3x3< T > &result) const
compute S_{ijk} = M_{kp} T_{ijp}
is a 'fixed size' quadratic matrix of dim.
void postmultiply3(const BIAS::Matrix3x3< T > &M, Tensor3D3x3x3< T > &result) const
Compute S_{ijk} = T_{ijp} M_{pk}.
void premultiply1(const BIAS::Matrix3x3< T > &M, Tensor3D3x3x3< T > &result) const
compute S_{ijk} = M_{ip} T_{pjk}
void NewSize(const int i, const int j, const int k, const T &def=(T) 0.0)