|
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.
1.8.0