Since the code now compiles to a static library as opposed
to a bunch of object files, and since the data type has been
abstracted to a compile-time parameter, the version number
is bumped up to version 2.
o Library is now a proper "library", i.e. compiled into
libCMatrix.a (static library for now).
o Added several 'demo' files illustrating usage of class, and re-
organised the directory structure a bit. There is now a
CMatrix directory <..root..>/cmatrix/cmatrix/CMatrix that
contains the library itself. I know that all these "cmatrix"es
become a bit confusing, but this is more of an artifact of
"tricking" kdevelop into building the sources as a
library. The demo files are under <..root..>/cmatrix/cmatrix/demos
and are *not* managed by kdevelop (or the configure script in
Run "make clean" and "make" independently in the demos
o The "main" program produced by compiling the system is called
"cmatrix". This again, is a kdevelop artifact. Running it
produces nothing useful, it just dumps some text telling you
to look in the "demos" directory.
o Basic data type is now spec'd by a compile time flag,
_CMDATA which can be float, double, int, whatever.
(Note have only really tested for double/float)
o Expanded the following to operate in a row- or column-wise
Did a consistency check on meaning of row- and column-wise -
basically, a max(e_row) i.e. row-wise max means that a *column*
vector is returned, each element of which is the max of the
corresponding row. Re-read that slowly. Similarly, col-wise
max, for example, returns a *row* vector. Each element is the
max of the corresponding column.
o std() was only coded for col-wise. Finished row-wise component.
o Changed print() and sprint() methods to use C++ style I/O (as
opposed to the C-style they were originally written in).
o Added fprint() as a "new" C++ style method that will ultimately
replace "write-file()". I left "write-file" in only for
backwards compatibility. It will be removed soon!
o Added some non-class methods (supplied by Antonio):
o Cleaned some of the code - consistency changes. All "private" methods
used to be prefixed by "m_". In view of the naming scheme I've come
to adopt, this prefix has been changed to just "_".
o Operator overload changes.
The old and misleading "<<" and ">>" operator overloads have been
replaced with "*=" and "/=". These are element-by-element mult and
Although there is still scope for confusion, I think the meaning
is much clearer now.
A = (B *= C);
means that corresponding elements of B and C are multiplied together
and the result assigned to A.
o Minor bug fixes:
o Initial publish on sourceforge.