-
The methods transpose(), invert() and abs() now return a matrix instead of working on the actual matrix. The transpose(), inverse(), abs(), and negate() friend functions have been removed. The method solve() has been added that solves the linear matrix equation. The Cholesky methods now also return a matrix instead of working on the actual object.
-
Add GChatter argument to print() method. The print() method now takes an argument of type GChatter to control the chattiness of the output in a homogenous manner. Pass NORMAL chatter level in __str__ method. Add chatter argument to print() methods. Use GLog::chatter() method to control the chattiness of the log stream operator. Add chatter() methods and provide member access through const references. Add chatter() methods, provide member access through const references, and declare one liners as inline methods. The chatter() methods control the new m_chatter attribute that is used to control the chattiness of the object's print() methods. name() and version() methods return const references. logFileOpen() method now sets the chattiness from the applications's chatter parameter, and name() and version() methods now return a const reference.
-
Before the matrix access operator was used in matrix multiplication which led to a substantial overhead. Now, a pointer on the matrix memory is used which considerably speeds-up the computations.
-
The corresponding functionality is now implement on the derived class level.
-
The abstract matrix interface defined in GMatrixBase was reviewed and modified according to common practices. All "col" arguments and method names were expanded to "column". The cols() method which returned the number of columns in a matrix is now named columns(). The insert_row/col and set_row/col methods were renamed to row() and column() which allow setting and getting a row or a column in a matrix using a GVector object. In the set methods, the row or column index are now passed as first argument, followed by the vector. The add_row/col methods were renamed to add_to_row() and add_to_column() to be more explicit. Also here, the row or column index are now passed as first argument, followed by the vector. Every matrix class will now have a transpose(), invert(), negate(), abs(), fill(), min(), max(), and sum() method. A size() method has been added to GMatrixBase that returns the number of elements in a matrix.
-
All classes now derive from GBase. ostream and GLog friends are removed since they are now implement at the GBase level.
-
For cosmetic reasons the include directives have been reordered.
-
The matrix classes have been refactored and made compliant to actual coding standards. Furthermore, the != operator has been fixed as it was not testing the full matrix before. This revealed another problem with the fill stack that was corrupted for vector fills. The internal array m_stack_work was used by the vector fill stack method and the flush method, and the flush method corrupted the vector fill values before they were used. To solve this issue, an additional working array m_stack_rows has been introduced that is now exclusively used by the vector fill stack. The m_stack_work working array is now exclusively used by the flush method.
-
Due to a bad copy/paste error, only the upper triangle of the matrix has been copied. This has been corrected.
-
The matrix storage class convertors have been removed a while ago as I was not aware of the technique of forward declarations. With forwards declarations we can now put them back.