# Category : C++ Source Code

Archive : YAMP15.ZIP

Filename : HISTORY.TEX

\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}