Dec 182017
 
Yet Another Matrix Package. Includes C++ source code only. Version 1.5.
File YAMP15.ZIP from The Programmer’s Corner in
Category C++ Source Code
Yet Another Matrix Package. Includes C++ source code only. Version 1.5.
File Name File Size Zip Size Zip Type
APP1.TEX 6597 1992 deflated
APP2.TEX 5419 1830 deflated
APP3.TEX 5054 1678 deflated
BIBLIO.TEX 3830 1780 deflated
CATCHV.DAT 381 155 deflated
CONC.TEX 4555 2184 deflated
DIST.CPP 15741 4831 deflated
DIST.H 1458 556 deflated
DIST.TEX 6333 2463 deflated
DISTTEST.CPP 6771 1276 deflated
DOCU.TEX 1216 663 deflated
DOCUIND.TEX 3220 980 deflated
FUNCTS.TEX 21170 7355 deflated
GRAPH.TEX 12266 4447 deflated
HISTORY.TEX 5471 2254 deflated
INTRO.TEX 6087 2755 deflated
LOADE.BAT 479 183 deflated
MAKETEST.MAK 1471 730 deflated
MAKEVIRT.BAT 2360 421 deflated
README.DOC 8810 3442 deflated
STACK.TEX 15925 5178 deflated
STRING.TEX 4766 1950 deflated
TEST.CPP 6375 2226 deflated
TESTGRAF.CPP 4997 1755 deflated
TESTREG.CPP 5665 2080 deflated
TO_LIB.MAK 1244 626 deflated
VDOUB.TEX 8545 3179 deflated
VIRT.CPP 594 408 deflated
VIRT.H 19733 5465 deflated
VIRTDISK.CPP 28438 6278 deflated
VIRTGRAF.CPP 16755 5197 deflated
VIRTOP.CPP 41280 9886 deflated
VIRTRAM.CPP 15711 3239 deflated
VMATRIX.TEX 18280 6146 deflated
VMM.TEX 8015 3054 deflated
XYP.CPP 1491 739 deflated
YAMP.TEX 9559 3803 deflated

Download File YAMP15.ZIP Here

Contents of the README.DOC file


YAMP - Yet Another Matrix Program v1.5
Author: Mark Von Tress, Ph.D.
Date: 08/28/92

The programs contained in the archive are an upgrade of C++
matrix algebra package. The package supports recursive matrix
functions. Two memory models are available: in RAM and out of
RAM. In ram matrices are limited to 64k in size. External
Matrices are stored in a virtual memory file that can be stored
in a RAM disk, and is limited to 32 megs. Virtual matrices can
be larger than 640K. There is a tradeoff between speed and
memory requirements.

The in ram memory model works in all but the tiny memory model.
The virtual memory model compile under the large and huge memory
models of Turbo C++ v1.0, 2.0, 3.0, and 3.1. Microsoft C/C++
v7.0 compatability has been added. The documentation is written
in LaTex, so you will have to find an installation of LaTex
somewhere to print the document as a book. The text should be
readable in ASCII format if you ignore the TEX control
sequences. They begin with a backslash, '\'. Typical sequences
to ignore are \verb, \index, \cite,
\begin, \end. Also ignore the \ in \$.

==============================================================

Version 1.1
This upgrade of YAMP provides several new functions, and
an improvement or two:

- an in ram version that works for all but the tiny memory
model.

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

- 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.

- 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.

- 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.

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

- The header virt.h has been docuemented so that it can be
used as a quick reference.

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.
===============================================================
Version 1.2:

This is an improved version of version 1.1

- A graphic object for X-Y plots. This requires Borland
graphics interface files.

- 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.

- An Index function for generating index matrices.

- 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.


- 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.

===============================================================
Version 1.3

- 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.

- 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.

================================================================

Version 1.4

- Added division of a scalar by a matrix a/M.

- Fixed Index so it counts downward correctly

- 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.

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

- 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.


===============================================================

The files are:

readme.docThis file
docu.texThe main tex file for constructing the
tex document.
intro.texThe introduction and terms of ownership
string.texAn explanation of the string object.
doubles.
vmm.tex An explanation of the virtual memory
manager system.
vdoub.texAn explanation of the vector of virtual
vmatrix.texAn explanation of the VMatrix object.
stack.texAn explanation of the stack.
functs.texAn explanation of the matrix functions.
dist.tex An explanation of the distribution functions.
graph.tex An explanation of the GMatrix object.
conc.tex conclusions chapter
yamp.texHow to use the .cpp and .h files
app1.texAppendix A: the test suite file
app2.tex Appendix B: the regression test suite
app3.tex Appendix C: GMatrix test suite
Correlogram and Periodogram.
history.tex Revision history
biblio.texThe bibliography.
docuind.texThe index file.

catchv.datsome data for the test suite.
test.cppthe test suite
testreg.cpp the regression test suite.
testgraf.cpp the graph test suite
xyp.cpp another graphics test suite.

virt.h header
virt.cppcode for the virtual matrix objects
virtram.cpp code for in ram memory model
virtdisk.cpp code for virtual memory model
virtop.cppmatrix operations code.
virtgraf.cpp Graphics matrix.

dist.h header for distribution module
dist.cpp distribution module
disttest.cpp test menu for distribution module

to_lib.mak Make file for a library file
maketest.mak Make file the test suite
loade.bat batch file for copying headers to ram disk

DOS commands for combining the appropriate tex files are

copy intro.tex+string.tex+vmm.tex+vdoub.tex+vmatrix.tex+functs.tex vmat1.doc
copy vmat1.doc+dist.tex+graph.tex+conc.tex+yamp.tex+app1.tex vmat2.doc
copy vmat2.doc+app2.tex+app3.tex+history.tex vmat.doc


==============================================================

Distribution: I only plan to distribute this code over
networks. I also hope to tap other sources of distribution.
It is in the public domain, so it may be copied freely. I
have obtained a copyright as legal evidence of my
authorship. I do not plan to enforce it otherwise.

It cost me about $20US to mail this code on the continent.
(printing a manual, preparing the diskette, envelopes,
postage, and my time.). For those of you who do not have
access to LaTex, if you want a printed copy of the
documentation and a diskette containing the source code,
please send $20US to the address below. I will also keep a
record of people who contact me about the code.

My address for the next year or so is

Mark Von Tress, Ph.D.
P.O. Box 171173
Arlington Tx 76003

=============================================================

Disclaimer:

DISCLAIMER: THIS PROGRAM IS PROVIDED AS IS, WITHOUT ANY
WARRANTY, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
TO FITNESS FOR A PARTICULAR PURPOSE. THE AUTHOR DISCLAIMS
ALL LIABILITY FOR DIRECT OR CONSEQUENTIAL DAMAGES RESULTING
FROM USE OF THIS PROGRAM.


 December 18, 2017  Add comments

Leave a Reply