26 m_matrix.resize( a_rows );
28 for( std::size_t i1 = 0; i1 < a_rows; ++i1 ) m_matrix[i1].resize( a_columns );
38 std::size_t rows = a_matrix.
size( );
40 m_matrix.resize( rows );
42 for( std::size_t i1 = 0; i1 < rows; ++i1 ) m_matrix[i1] = a_matrix[i1];
62 if(
this != &a_rhs ) {
63 m_matrix = a_rhs.
matrix( );
78 Matrix gidiMatrix( *
this );
80 gidiMatrix += a_value;
93 for( std::vector<Vector>::iterator iter = m_matrix.begin( ); iter < m_matrix.end( ); ++iter ) *iter += a_value;
107 Matrix gidiMatrix( *
this );
110 return( gidiMatrix );
122 std::size_t i1, rhs_size = a_rhs.
size( );
124 if( rhs_size == 0 )
return( *
this );
131 if( m_matrix[0].
size( ) != a_rhs[0].
size( ) )
throw Exception(
"matrix colums numbers differ." );
134 for( std::vector<Vector>::iterator iter = m_matrix.begin( ); iter < m_matrix.end( ); ++iter, ++i1 ) *iter += a_rhs[i1];
148 Matrix gidiMatrix( *
this );
150 gidiMatrix -= a_value;
151 return( gidiMatrix );
163 for( std::vector<Vector>::iterator iter = m_matrix.begin( ); iter < m_matrix.end( ); ++iter ) *iter -= a_value;
177 Matrix gidiMatrix( *
this );
180 return( gidiMatrix );
192 std::size_t i1, rhs_size = a_rhs.
size( );
194 if( rhs_size == 0 )
return( *
this );
201 if( m_matrix[0].
size( ) != a_rhs[0].
size( ) )
throw Exception(
"matrix colums numbers differ." );
204 for( std::vector<Vector>::iterator iter = m_matrix.begin( ); iter < m_matrix.end( ); ++iter, ++i1 ) *iter -= a_rhs[i1];
218 Matrix gidiMatrix( *
this );
220 gidiMatrix *= a_value;
221 return( gidiMatrix );
233 for( std::vector<Vector>::iterator iter = m_matrix.begin( ); iter < m_matrix.end( ); ++iter ) *iter *= a_value;
247 Matrix gidiMatrix( *
this );
249 gidiMatrix /= a_value;
250 return( gidiMatrix );
262 if( a_value == 0 )
throw Exception(
"divide by zero." );
263 for( std::vector<Vector>::iterator iter = m_matrix.begin( ); iter < m_matrix.end( ); ++iter ) *iter /= a_value;
276 if(
size( ) == 0 )
return( 0 );
277 return( m_matrix[0].
size( ) );
289 if( (*
this)[0].
size( ) != a_vector.
size( ) )
throw Exception(
"matrix::push_back: size different" );
291 m_matrix.push_back( a_vector );
301 Matrix __matrix( __numberOfColumns,
size( ) );
303 for( std::size_t i1 = 0; i1 <
size( ); ++i1 ) {
304 for( std::size_t i2 = 0; i2 < __numberOfColumns; ++i2 ) __matrix( i2, i1, (*
this)[i1][i2] );
315 std::size_t i2 =
size( ), n_2 = i2 / 2;
317 for( std::size_t i1 = 0; i1 < i2; ++i1 ) m_matrix[i1].
reverse( );
319 for( std::size_t i1 = 0; i1 < n_2; ++i1, --i2 ) {
320 Vector temp = m_matrix[i1];
322 m_matrix[i1] = m_matrix[i2];
335 for( std::vector<Vector>::const_iterator iter = m_matrix.begin( ); iter < m_matrix.end( ); ++iter ) iter->print( a_prefixForRow );
Matrix operator*(double a_value) const
Matrix & operator/=(double a_value)
Matrix & operator+=(double a_value)
Matrix & operator*=(double a_value)
std::vector< Vector > const & matrix() const
Matrix operator/(double a_value) const
Matrix & operator=(Matrix const &a_rhs)
Matrix operator-(double a_value) const
Matrix(std::size_t a_rows, std::size_t a_columns)
Matrix operator+(double a_value) const
void print(std::string const &a_prefixForRow) const
std::size_t numberOfColumns() const
void push_back(Vector const &a_vector)
Matrix & operator-=(double a_value)