Category : C++ Source Code
Archive   : YAMP15.ZIP
Filename : HISTORY.TEX

 
Output of file : HISTORY.TEX contained in archive : YAMP15.ZIP

\chapter{Revision History}
\section{Version 1.1}
Version 1.0 was released last March. I have used it throughout
the year to write a little language and several other matrix
programs. It has been very stable and run for several hundred
hours on the machines I use. I thought about a few things during
the year that seemed reasonable to add.

This upgrade of YAMP provides several new functions, and
an improvement or two:
\begin{itemize}
\item an in ram version that works for all but the tiny memory
model.

\item User code for the in-ram and virtual memory model is identical.

\item Important: I removed the initialization to 0 of virtual matrices, so
programs written in YAMP 1.0 must be adapted if they use
the assumption that a matrix starts as a zero matrix. This
increases the speed considerably.

\item A copy constructor that allows statements like
"VMatrix V = Inv(Tran(X)*X);" to work as expected. Version 1.0
had a problem with this because it did not have a copy
constructor.

\item Many new functions: determinant, cholesky
decomposition, QR decomposition, singular valued
decomposition, generalized inverse, a nearly fast
fourier transform (and inverse), vec, vecdiag,
diag, shape, sum, sum of squares, cumulative
summation, max, min, and elemetary row and column
operations.

\item A make file for constructing a library from YAMP.

\item SGREP has been removed, since the functions above have
been provided.

\item The header virt.h has been documented so that it can be
used as a quick reference.
\end{itemize}
About the only other thing I can think of needing in a matrix package
is a graphics object. I'm still working on it and hope to finish
it by this Spring or Summer. This is still one of my after hours
hobby type projects, so I can't promise much.

\section{Version 1.2}
Version 1.1 was released in December of 1991. It was a bit of
rush job. The new version fixes some of the problems and adds
the graphics object. \footnote{My Christmas present from my wife
was the time to do this over the holiday vacation.} The
improvements include

\begin{itemize}
\item A graphic object for X-Y plots. This requires Borland
graphics interface files.

\item A 15 to 20 percent speed improvement using a deep-copy
trick on the stack. The stack now stores references
to the vectors in virtual matrices instead of copying
the matrix.

\item An Index function for generating index matrices.

\item Important, The virtual matrix copy constructor
performs garbage collection by calling cleanstack().
This means functions that use copy constructors
should also call Inclevel() before using
the copy constructor.

\item Some bugs were fixed in the string operators '+'.

The names in Mexp, Mlog, Mabs, etc were fixed.
The make files work now for building a Borland
library. I also got sloppy and left out some
documentation files.
\end{itemize}

\section{Version 1.3}
Version 1.3 has some more fixes and new features.

\begin{itemize}
\item Added a statistical distribution function module.
It has the 4 main families of continuous distributions
used in applied statistics. The module also has
the inverses.

\item Bug Fix: Scalar subtraction, M-a, was corrected. It
produced a-M since I just cut and pasted the M-a
routine above it. See Virtram.cpp or virtdsk.cpp
for the fix. You should also check for this in any
earlier versions of YAMP. It was in version 1.0 through
version 1.2.
\end{itemize}


\section{Version 1.4}
I keep telling myself YAMP is finished, but here is the next version.

\begin{itemize}
\item Added division of a scalar by a matrix a/M.

\item Fixed Index so it counts downward correctly

\item Fixed a memory leak in the disk version copy
constructor. The hdr in the vdoub constructor
needed to be purged in the copy constructor, then
recreated by SetupVectors. This was not a problem
in the ram version.

\item Added Microsoft V7.0 compatability to all but the
graphics module. A new graphics module is being
developed for MSC.

\item Minor speed improvements using the define NO\_CHECKING.
The range check in m(i,j), and Garbage() are skipped
at compile time if NO\_CHECKING is defined. Garbage() is
still called, but the checks are not executed. Use
this option in finished code.
\end{itemize}

\section{Version 1.5}
\begin{itemize}

\item Fixed the non-central t distribution. I also modified the
logarithms in the distribution function modules. The
singular error is trapped and the value -HUGE\_VAL is
returned. This avoids output to standard error, which
is a real nuisance in Windows programs.

\item Improved the accuracy of the singular valued
decomposition. It now works on a 10 dimensional
Hilbert matrix to 4 decimal accuracy.

\end{itemize}