Dec 182017

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.

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