lkptr - simple reference LinKed PoinTeR:
Classes | Functions
Mx Namespace Reference

Matriz chirrisquitica de adolfo@di-mare.com. More...

Classes

class  Matrix
 Esta es una clase matriz muy chirrisquitica que puede cambiar dinámicamente de tamaño. More...
class  RefMatrix
 Empaque alrededor de Matrix que usa lkptr<X> para mejorar la implementación de los operadores aritméticos. More...

Functions

template<class T >
bool check_ok (const Matrix< T > &M)
 Verifica la invariante de la clase.
template<class E >
std::ostream & operator<< (std::ostream &COUT, const Matrix< E > &M)
 Graba en el flujo COUT el valor de M[][].
template<class E >
std::istream & operator>> (std::istream &CIN, Matrix< E > &M)
 Obtiene del flujo CIN el valor para M[][].
template<class Mat >
bool isSquare (const Mat &M)
 Retorna "true" si la matriz M[][] es una matriz cuadrada.
template<class Mat >
bool isDiagonal (const Mat &M)
 Retorna "true" si la matriz M[][] es una matriz diagonal.
template<class Mat >
bool isScalar (const Mat &M)
 Retorna "true" si la matriz M[][] es escalar.
template<class Mat >
bool isUnit (const Mat &M)
 Retorna "true" si la matriz M[][] es unitaria.
template<class Mat >
void setUnit (const Mat &M, unsigned n)
 Convierte a M[][] en una matriz identidad de tamaño n x n.
template<class Mat >
bool isNull (const Mat &M)
 Retorna "true" si la matriz M[][] es nula.
template<class Mat >
bool isSymmetric (const Mat &M)
 Retorna "true" si la matriz M[][] es simétrica.
template<class Mat >
bool isUpperTiangular (const Mat &M)
 Retorna "true" si la matriz M[][] es triangular superior.
template<class Mat >
bool isLowerTiangular (const Mat &M)
 Retorna "true" si la matriz M[][] es triangular inferior.

Detailed Description

Matriz chirrisquitica de adolfo@di-mare.com.


Function Documentation

template<class T >
bool Mx::check_ok ( const Matrix< T > &  M)

Verifica la invariante de la clase.

  • Es posible que la matriz tenga dimensiones nulas, lo que implica que todos los punteros a los vectors paralelos deben ser nulos. Este hecho se marca dándolo el valor 0 (cero) al campo m_val.
  • Las matrices quedan almacenadas en un vector de tamaño [M x N].
  • En todos los algoritmos, "m" o "m_rows" es la cantidad de filas == rows()
  • En todos los algoritmos, "n" o "m_cols" es la cantidad de columnas == cols()
Rep Modelo de la clase
+---+                                         /         \
| 2 |  M(i,j) ==> m_val[ (i * m_cols) + j ]   | 0 1 2 3 |   m_rows == 2
+---+  (almacenamiento por filas)             | 4 5 6 7 |   m_cols == 4
| 4 |                                         \         /
+---+   +---+---+---+---+---+---+---+---+
| *-|-->| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
+---+   +---+---+---+---+---+---+---+---+
Rep Modelo de la clase
+---+
| 4 |  M(i,j) ==> m_val[ i + (j * m_rows) ]   / a e \
+---+  (almacenamiento por columnas)          | b f |   m_rows == 4
| 2 |                                         | c g |   m_cols == 2
+---+   +---+---+---+---+---+---+---+---+     \ d h /
| *-|-->| a | b | c | d | e | f | g | h |
+---+   +---+---+---+---+---+---+---+---+
Remarks:
Libera al programador de implementar el método Ok()

  • Invariante: (M.m_rows == 0) <==> (M.m_cols == 0)
  • Invariante: (M.m_rows == 0) <==> (M.m_val == 0)
  • Invariante: check_ok( m_val[k] )

Definition at line 170 of file Matrix.h.

template<class E >
std::ostream& Mx::operator<< ( std::ostream &  COUT,
const Matrix< E > &  M 
)

Graba en el flujo COUT el valor de M[][].

Definition at line 592 of file Matrix.h.

template<class E >
std::istream& Mx::operator>> ( std::istream &  CIN,
Matrix< E > &  M 
)

Obtiene del flujo CIN el valor para M[][].

Definition at line 605 of file Matrix.h.

template<class Mat >
bool Mx::isSquare ( const Mat &  M)

Retorna "true" si la matriz M[][] es una matriz cuadrada.

Definition at line 19 of file Matrix_Lib.h.

template<class Mat >
bool Mx::isDiagonal ( const Mat &  M)

Retorna "true" si la matriz M[][] es una matriz diagonal.

Definition at line 25 of file Matrix_Lib.h.

template<class Mat >
bool Mx::isScalar ( const Mat &  M)

Retorna "true" si la matriz M[][] es escalar.

Definition at line 45 of file Matrix_Lib.h.

template<class Mat >
bool Mx::isUnit ( const Mat &  M) [inline]

Retorna "true" si la matriz M[][] es unitaria.

Definition at line 61 of file Matrix_Lib.h.

template<class Mat >
void Mx::setUnit ( const Mat &  M,
unsigned  n 
)

Convierte a M[][] en una matriz identidad de tamaño n x n.

Definition at line 69 of file Matrix_Lib.h.

template<class Mat >
bool Mx::isNull ( const Mat &  M)

Retorna "true" si la matriz M[][] es nula.

Definition at line 83 of file Matrix_Lib.h.

template<class Mat >
bool Mx::isSymmetric ( const Mat &  M)

Retorna "true" si la matriz M[][] es simétrica.

Definition at line 98 of file Matrix_Lib.h.

template<class Mat >
bool Mx::isUpperTiangular ( const Mat &  M)

Retorna "true" si la matriz M[][] es triangular superior.

Definition at line 115 of file Matrix_Lib.h.

template<class Mat >
bool Mx::isLowerTiangular ( const Mat &  M)

Retorna "true" si la matriz M[][] es triangular inferior.

Definition at line 134 of file Matrix_Lib.h.

 All Classes Namespaces Files Functions Variables Typedefs Friends Defines