Abstract non Polymorphyc Matrix:
|
This is the base template for the implementaciones of the chirrisquitica matrix. More...
#include <Matrix_BASE.h>
Public Types | |
typedef E | value_type |
Type of the stored object, similar to the name used in the STL. | |
typedef value_type & | reference |
Reference to the stored object, similar to the name used in the STL. | |
typedef const value_type & | const_reference |
Reference [const] to the stored object, similar to the name used in the STL. | |
Public Member Functions | |
bool | same (const Matrix_BASE &M) const |
Returns true if "M" shares its value with "*this" . | |
Protected Member Functions | |
Matrix_BASE (unsigned m=1, unsigned n=1) | |
Vector constructor. | |
Matrix_BASE (const Matrix_BASE &M) | |
Copy constructor. | |
Matrix_BASE (const E &val) | |
Scalar constructor. | |
~Matrix_BASE () | |
Destructor. | |
unsigned | rows () const |
Number of rows in the matrix. | |
unsigned | cols () const |
Number of columns in the matrix. | |
unsigned | size () const |
Number of values stored in the matrix. | |
unsigned | count () const |
Sinonim of size() . | |
unsigned | capacity () const |
Maximum number of values that can be stored in the matrix. | |
Matrix_BASE & | operator= (const Matrix_BASE &M) |
Sinonim of this->copy(M) . | |
Matrix_BASE & | copy (const Matrix_BASE &M) |
Copies from "M" . | |
Matrix_BASE & | move (Matrix_BASE &M) |
Moves the value from "M" into "*this" . | |
Matrix_BASE & | swap (Matrix_BASE &M) |
Interchanges the values of "*this" and "M" . | |
void | clear () |
Leaves "*this" with the value the vector constructor initializes it to. | |
bool | equals (const Matrix_BASE &M) const |
¿¿¿ A == B ??? | |
E & | operator() (unsigned i, unsigned j) |
Returns a reference to element [i][j] in the matrix. | |
const E & | operator() (unsigned i, unsigned j) const |
Returns a const reference to element [i][j] in the matrix [CONST]. | |
E & | at (unsigned i, unsigned j) |
Returns a reference to element [i][j] in the matrix. | |
const E & | at (unsigned i, unsigned j) const |
Returns a const reference to element [i][j] in the matrix [CONST]. | |
void | reShape (unsigned m, unsigned n) |
Reshapes the dimensions for the matrix. | |
void | reSize (unsigned m, unsigned n) |
Changes the dimensions for the matrix. | |
void | transpose () |
Transforms the matrix into its transpose. | |
void | setDefault (const E &same) |
Defines which is the most common value stored in the matrix. | |
const E & | getDefault () |
Gets the most common value stored in the matrix. | |
Friends | |
class | test_Matrix |
BUnit Test. | |
template<class MAT > | |
bool | check_ok_Matrix (const MAT &M) |
Generic verification of the class invariant check_ok() . | |
template<class MAT > | |
MAT | operator+ (const Matrix_BASE< typename MAT::value_type > &A, const MAT &B) |
A+B | |
template<class MAT > | |
MAT | operator- (const Matrix_BASE< typename MAT::value_type > &A, const MAT &B) |
A-B | |
template<class MAT > | |
MAT | operator* (const Matrix_BASE< typename MAT::value_type > &A, const MAT &B) |
Res=A*B | |
template<class MAT > | |
bool | operator== (const Matrix_BASE< typename MAT::value_type > &A, const MAT &B) |
¿¿¿ (A == B) ??? | |
template<class MAT > | |
bool | operator!= (const Matrix_BASE< typename MAT::value_type > &A, const MAT &B) |
¿¿¿ (A != B) ??? | |
template<class MAT > | |
bool | check_ok_Matrix (const MAT &M) |
Generic verification of the class invariant check_ok() . | |
template<class MAT > | |
unsigned | count_Matrix (const MAT &M) |
Default implementation for Matrix_BASE<E>::count() | |
template<class MAT > | |
void | clear_Matrix (MAT &M) |
Default implementation for Matrix_BASE<E>::clear() | |
template<class MAT > | |
bool | equals_Matrix (const MAT &A, const MAT &B) |
Default implementation for Matrix_BASE<E>::operator==() | |
template<class MAT > | |
void | add_Matrix (MAT &Res, const MAT &M) |
Default implementation for operator+( Matrix_BASE<E>&, Matrix_BASE<E> ) | |
template<class MAT > | |
void | substract_Matrix (MAT &Res, const MAT &M) |
Default implementation for operator-( Matrix_BASE<E>&, Matrix_BASE<E> ) | |
template<class MAT > | |
void | multiply_Matrix (MAT &Res, const MAT &A, const MAT &B) |
Calculates the multiplication A * B and stores the result in "Res" . | |
template<class MAT > | |
MAT::reference | at_Matrix (MAT &M, unsigned i, unsigned j) |
Default implementation for Matrix_BASE<E>::at() | |
template<class MAT > | |
MAT::const_reference | at_Matrix (const MAT &M, unsigned i, unsigned j) |
Default implementation for Matrix_BASE<E>::at() const . |
This is the base template for the implementaciones of the chirrisquitica matrix.
rows()
x cols()
.reSize()
.E
must have a neutral for addition. Its value should be obtained invoking Sparse_Matrix<E>::value_type()
.Matrix_BASE<E>::value_type
and Matrix_BASE<E>::value_type(1)
. Definition at line 45 of file Matrix_BASE.h.
Mx::Matrix_BASE< E >::value_type |
Type of the stored object, similar to the name used in the STL.
Definition at line 47 of file Matrix_BASE.h.
Mx::Matrix_BASE< E >::reference |
Reference to the stored object, similar to the name used in the STL.
Definition at line 48 of file Matrix_BASE.h.
Mx::Matrix_BASE< E >::const_reference |
Reference [const] to the stored object, similar to the name used in the STL.
Definition at line 49 of file Matrix_BASE.h.
Mx::Matrix_BASE< E >::Matrix_BASE | ( | unsigned | m = 1 , |
unsigned | n = 1 |
||
) | [inline, protected] |
Vector constructor.
n * m
matrix values."value_type"
is one of the basic scalar types, as int
or float
, the stored values in the matrix will not be initialized to zero."m"
or "n"
is zero, the matrix is empty. Definition at line 51 of file Matrix_BASE.h.
Mx::Matrix_BASE< E >::Matrix_BASE | ( | const Matrix_BASE< E > & | M | ) | [protected] |
Copy constructor.
Mx::Matrix_BASE< E >::Matrix_BASE | ( | const E & | val | ) | [protected] |
Scalar constructor.
"V"
. Mx::Matrix_BASE< E >::~Matrix_BASE | ( | ) | [inline, protected] |
Destructor.
Definition at line 54 of file Matrix_BASE.h.
unsigned Mx::Matrix_BASE< E >::rows | ( | ) | const [protected] |
Number of rows in the matrix.
Reimplemented in Mx::Matrix_List< E >, Mx::Matrix_List< rational< long > >, Mx::Matrix_Sparse< E >, and Mx::Matrix_Dense< E >.
unsigned Mx::Matrix_BASE< E >::cols | ( | ) | const [protected] |
Number of columns in the matrix.
Reimplemented in Mx::Matrix_List< E >, Mx::Matrix_List< rational< long > >, Mx::Matrix_Sparse< E >, and Mx::Matrix_Dense< E >.
unsigned Mx::Matrix_BASE< E >::size | ( | ) | const [protected] |
Number of values stored in the matrix.
Reimplemented in Mx::Matrix_List< E >, Mx::Matrix_List< rational< long > >, Mx::Matrix_Sparse< E >, and Mx::Matrix_Dense< E >.
unsigned Mx::Matrix_BASE< E >::count | ( | ) | const [protected] |
Sinonim of size()
.
Reimplemented in Mx::Matrix_List< E >, Mx::Matrix_List< rational< long > >, Mx::Matrix_Sparse< E >, and Mx::Matrix_Dense< E >.
unsigned Mx::Matrix_BASE< E >::capacity | ( | ) | const [protected] |
Maximum number of values that can be stored in the matrix.
Reimplemented in Mx::Matrix_List< E >, Mx::Matrix_List< rational< long > >, Mx::Matrix_Sparse< E >, and Mx::Matrix_Dense< E >.
Matrix_BASE< E > & Mx::Matrix_BASE< E >::operator= | ( | const Matrix_BASE< E > & | M | ) | [protected] |
Sinonim of this->copy(M)
.
Matrix_BASE< E > & Mx::Matrix_BASE< E >::copy | ( | const Matrix_BASE< E > & | M | ) | [protected] |
Copies from "M"
.
"M"
into "*this"
in such a way that the new valuer for "*this"
is an exact duplicate of the value in "M"
."*this"
is lost."M"
maintains its value."M"
changes, the value for "*this"
will not change, and viceversa, because the copy is a deep copy; it is not supperficial."*this"
is "M"
its value will not change. *this == M
."*this"
Matrix_BASE< E > & Mx::Matrix_BASE< E >::move | ( | Matrix_BASE< E > & | M | ) | [protected] |
Moves the value from "M"
into "*this"
.
"*this"
is lost."*this"
is what was stored in "M"
."M"
remains in the state an object will have after being initialized by the vector contructor."*this"
is "M"
its value will not change. (*this == M)
."*this"
Matrix_BASE< E > & Mx::Matrix_BASE< E >::swap | ( | Matrix_BASE< E > & | M | ) | [protected] |
Interchanges the values of "*this"
and "M"
.
"*this"
Matrix_BASE< E > & Mx::Matrix_BASE< E >::clear | ( | ) | [protected] |
Leaves "*this"
with the value the vector constructor initializes it to.
Reimplemented in Mx::Matrix_List< E >, Mx::Matrix_List< rational< long > >, Mx::Matrix_Sparse< E >, and Mx::Matrix_Dense< E >.
bool Mx::Matrix_BASE< E >::same | ( | const Matrix_BASE< E > & | M | ) | const [inline] |
Returns true
if "M"
shares its value with "*this"
.
Definition at line 68 of file Matrix_BASE.h.
bool Mx::Matrix_BASE< E >::equals | ( | const Matrix_BASE< E > & | M | ) | const [protected] |
¿¿¿ A == B ???
reference Mx::Matrix_BASE< E >::operator() | ( | unsigned | i, |
unsigned | j | ||
) | [protected] |
Returns a reference to element [i][j] in the matrix.
M(i,j)
means what in arrays is M
[i][j].M(i,j) = val; // M(i,j) is un "lvalue" (mutable)
Reimplemented in Mx::Matrix_List< E >, Mx::Matrix_List< rational< long > >, Mx::Matrix_Sparse< E >, and Mx::Matrix_Dense< E >.
const_reference Mx::Matrix_BASE< E >::operator() | ( | unsigned | i, |
unsigned | j | ||
) | const [protected] |
Returns a const reference to element [i][j] in the matrix [CONST].
M(i,j)
means what in arrays is M
[i][j].val = M(i,j); // M(i,j) is a "rvalue" (const)
Reimplemented in Mx::Matrix_List< E >, Mx::Matrix_List< rational< long > >, Mx::Matrix_Sparse< E >, and Mx::Matrix_Dense< E >.
reference Mx::Matrix_BASE< E >::at | ( | unsigned | i, |
unsigned | j | ||
) | [protected] |
Returns a reference to element [i][j] in the matrix.
[i][j] exists in the matrix.
[i][j] is out of range throws exception std::out_of_range
.M.at(i,j) = val; // M.at(i,j) is un "lvalue" (mutable)
Reimplemented in Mx::Matrix_List< E >, Mx::Matrix_List< rational< long > >, Mx::Matrix_Sparse< E >, and Mx::Matrix_Dense< E >.
const_reference Mx::Matrix_BASE< E >::at | ( | unsigned | i, |
unsigned | j | ||
) | const [protected] |
Returns a const reference to element [i][j] in the matrix [CONST].
[i][j] exists in the matrix.
[i][j] is out of range throws exception std::out_of_range
.val = M.at(i,j); // M.at(i,j) is a "rvalue" (const)
Reimplemented in Mx::Matrix_List< E >, Mx::Matrix_List< rational< long > >, Mx::Matrix_Sparse< E >, and Mx::Matrix_Dense< E >.
void Mx::Matrix_BASE< E >::reShape | ( | unsigned | m, |
unsigned | n | ||
) | [protected] |
Reshapes the dimensions for the matrix.
Resize(m,n)
.Reimplemented in Mx::Matrix_List< E >, Mx::Matrix_List< rational< long > >, Mx::Matrix_Sparse< E >, and Mx::Matrix_Dense< E >.
void Mx::Matrix_BASE< E >::reSize | ( | unsigned | m, |
unsigned | n | ||
) | [protected] |
Changes the dimensions for the matrix.
(m*n == 0)
the matrix becomes empty. Reimplemented in Mx::Matrix_List< E >, Mx::Matrix_List< rational< long > >, Mx::Matrix_Sparse< E >, and Mx::Matrix_Dense< E >.
void Mx::Matrix_BASE< E >::transpose | ( | ) | [protected] |
Transforms the matrix into its transpose.
Reimplemented in Mx::Matrix_List< E >, Mx::Matrix_List< rational< long > >, Mx::Matrix_Sparse< E >, and Mx::Matrix_Dense< E >.
Mx::Matrix_BASE< E >::setDefault | ( | const E & | same | ) | [protected] |
Defines which is the most common value stored in the matrix.
same
as the most common value.same != getDefault()
the matrix becomes empty as if clear()
had been invoked for it. Reimplemented in Mx::Matrix_List< E >, Mx::Matrix_List< rational< long > >, Mx::Matrix_Sparse< E >, and Mx::Matrix_Dense< E >.
Mx::Matrix_BASE< E >::getDefault | ( | ) | [protected] |
Gets the most common value stored in the matrix.
Reimplemented in Mx::Matrix_List< E >, Mx::Matrix_List< rational< long > >, Mx::Matrix_Sparse< E >, and Mx::Matrix_Dense< E >.
friend class test_Matrix [friend] |
BUnit Test.
Reimplemented in Mx::Matrix_List< E >, Mx::Matrix_List< rational< long > >, Mx::Matrix_Sparse< E >, and Mx::Matrix_Dense< E >.
Definition at line 85 of file Matrix_BASE.h.
Generic verification of the class invariant check_ok()
.
Ok()
&M != 0
.(M.rows() == 0) <==> (M.cols() == 0)
check_ok( M(i,j) )
Definition at line 140 of file Matrix_BASE.h.
MAT operator+ | ( | const Matrix_BASE< typename MAT::value_type > & | A, |
const MAT & | B | ||
) | [friend] |
A+B
Definition at line 368 of file Matrix_BASE.h.
MAT operator- | ( | const Matrix_BASE< typename MAT::value_type > & | A, |
const MAT & | B | ||
) | [friend] |
A-B
Definition at line 448 of file Matrix_BASE.h.
MAT operator* | ( | const Matrix_BASE< typename MAT::value_type > & | A, |
const MAT & | B | ||
) | [friend] |
Res=A*B
Definition at line 454 of file Matrix_BASE.h.
bool operator== | ( | const Matrix_BASE< typename MAT::value_type > & | A, |
const MAT & | B | ||
) | [friend] |
¿¿¿ (A == B) ???
Definition at line 460 of file Matrix_BASE.h.
bool operator!= | ( | const Matrix_BASE< typename MAT::value_type > & | A, |
const MAT & | B | ||
) | [friend] |
¿¿¿ (A != B) ???
Definition at line 466 of file Matrix_BASE.h.
Generic verification of the class invariant check_ok()
.
Ok()
&M != 0
.(M.rows() == 0) <==> (M.cols() == 0)
check_ok( M(i,j) )
Definition at line 140 of file Matrix_BASE.h.
Default implementation for Matrix_BASE<E>::count()
Definition at line 167 of file Matrix_BASE.h.
Default implementation for Matrix_BASE<E>::clear()
Definition at line 178 of file Matrix_BASE.h.
Default implementation for Matrix_BASE<E>::operator==()
Definition at line 190 of file Matrix_BASE.h.
Default implementation for operator+( Matrix_BASE<E>&, Matrix_BASE<E> )
Matrix_BASE<E> operator+( Matrix_BASE<E>&, Matrix_BASE<E> )
.Definition at line 239 of file Matrix_BASE.h.
Default implementation for operator-( Matrix_BASE<E>&, Matrix_BASE<E> )
Definition at line 259 of file Matrix_BASE.h.
void multiply_Matrix | ( | MAT & | Res, |
const MAT & | A, | ||
const MAT & | B | ||
) | [friend] |
Calculates the multiplication A * B
and stores the result in "Res"
.
"*this"
get adjusted such that: Res.rows() == A.rows() && Res.cols() == B.cols()
Matrix_BASE<E> operator*()
."A"
y "B"
must have compatible dimensions. A.cols() == B.rows()
."A"
must be equal to the number of columns of "B"
. A.cols() * B.cols() * A.cols()
) Definition at line 307 of file Matrix_BASE.h.
MAT::reference at_Matrix | ( | MAT & | M, |
unsigned | i, | ||
unsigned | j | ||
) | [friend] |
Default implementation for Matrix_BASE<E>::at()
Definition at line 335 of file Matrix_BASE.h.
MAT::const_reference at_Matrix | ( | const MAT & | M, |
unsigned | i, | ||
unsigned | j | ||
) | [friend] |
Default implementation for Matrix_BASE<E>::at() const
.
Definition at line 354 of file Matrix_BASE.h.