20#ifndef __mia_3d_matrix_hh
21#define __mia_3d_matrix_hh
107 void print( std::ostream& os)
const;
160 void evaluate_ev()
const;
163 mutable int m_ev_type;
165 mutable std::vector<T3DCVector<T>> m_complex_evectors;
166 mutable std::vector<int> m_ev_order;
189 m.
x.y * x.
x + m.
y.y * x.
y + m.
z.y * x.
z,
190 m.
x.z * x.
x + m.
y.z * x.
y + m.
z.z * x.
z);
215 m.
x.x * x.
x.y + m.
x.y * x.
y.y + m.
x.z * x.
z.y,
216 m.
x.x * x.
x.z + m.
x.y * x.
y.z + m.
x.z * x.
z.z),
218 m.
y.x * x.
x.y + m.
y.y * x.
y.y + m.
y.z * x.
z.y,
219 m.
y.x * x.
x.z + m.
y.y * x.
y.z + m.
y.z * x.
z.z),
221 m.
z.x * x.
x.y + m.
z.y * x.
y.y + m.
z.z * x.
z.y,
222 m.
z.x * x.
x.z + m.
z.y * x.
y.z + m.
z.z * x.
z.z));
T dot(const T2DVector< T > &a, const T2DVector< T > &b)
T3DVector< T > operator*(const T3DMatrix< T > &m, const T3DVector< T > &x)
T3DMatrix< float > C3DFMatrix
a simple 3x3 matrix with single precision floating point values
std::ostream & operator<<(std::ostream &os, const T3DMatrix< T > &m)
T3DMatrix< double > C3DDMatrix
a simple 3x3 matrix with double precision floating point values
T3DVector< T > get_real_eigenvector(int i) const
static T3DMatrix< T > diagonal(const T3DVector< T > &values)
T3DCVector< T > get_complex_eigenvector(int i) const
static const T3DMatrix _0
The zero matrix.
static T3DMatrix< T > diagonal(T value)
static const T3DMatrix _1
The unity matrix.
T3DMatrix(const T3DMatrix< I > &o)
void print(std::ostream &os) const
T3DMatrix< T > & operator-=(const T3DMatrix< T > &other)
T3DMatrix< T > transposed() const
T3DMatrix(const T3DVector< T > &x, const T3DVector< T > &y, const T3DVector< T > &z)
T3DMatrix(const T3DVector< T3DVector< T > > &other)
int get_eigenvalues(T3DVector< T > &v) const
T3DVector< T > y
vector element
T3DVector< T > z
vector element
T3DVector< T > x
vector element
#define NS_MIA_BEGIN
conveniance define to start the mia namespace
#define NS_MIA_END
conveniance define to end the mia namespace