Multiple Precision Package for C++ version 2.0, April 1, 2000 This is a package for multiple precision arithmetic. It adds two new classes to C++, namely, realmp and complexmp. All arithmetic operations such as +,-,*,/ and the elementary transcendal functions such as sin, cos, tan, atan, log, exp are overloaded so that one can program just as one would in C++ except that the precision of the operations is set by the user. Utilities for printing multiple precision numbers and storing them on disk are provided. Complex arithmetic and transcendental functions with complex arguments are covered. Applications to linear system solving, polynomial solving, manipulation of power series, and calculation of Pade approximants are included. Details are provided in manover.txt (the most recent manual written after the arithmetic operations were overloaded and the elementary functions overloaded), manuald.txt (written after assembly language was inserted to speed up the calculations), and manual.txt (written to cover the earliest, most primitive version of the code). Remarks applicable to this new version of multiple precision package for C++ version 2.0 This is version 2.0. An error in the package genprecd.h, in the subroutine zsub, at line 605 has been corrected. In the previous version, this line read int precp1a=prec+1; whereas it should have read precp1a=prec+1; Also, in version 2.0, sqrt(0) is set immediately to 0. In the previous version, calculation of sqrt(0) lead to some harmless "divide by 0" appearing on screen in some cases, but this has been eliminated. And finally, the polynomial solver for poly- nomials with complex coefficients has been completed so that there are no known polynomials which cannot be solved in principle (that is, given enough precision, enough memory, and enough time). In the new polynomial solver for polynomials with complex coefficients, an angle through which the polynomial is rotated so that no two roots (unless there are multiple roots) have the same real part (a moments thought shows that there always exists such an angle). The user must set the rotation angle in csolvpoly(int cnpoly,complexmp poly[cmaxsizepad],realmp rotationangle); Since the roots are not known before hand, it may be that a rotation angle does not work and some other value will have to be tried. Certainly 0 does not work if two roots are complex conjugates of each other. In the example cpolydex.cc the rotation angle is set to 0.2 radians. Roots of odd multiplicity present no problem to the code, and after all roots of odd multiplicity have been divided out of the polynomial, the square root of the polynomial is taken as often as needed to find the roots of even multiplicity. The assembly language (modes1.hh) in this new version 2.0 will work with all versions of djgpp. The modes1.hh in the previous package will work with the latest version of djgpp (version 2.03 released in January, 2000), and also version 2.01 of djgpp, but not with the version previous to the latest version. Frank Donahoe has pointed our errors and made a number of helpful suggestions which have made it possible to correct and improve the package. His address and e-mail address are Frank Donahoe, Emeritus - Physics fdonahoe@wilkes1.wilkes.edu Wilkes University, Box 111 Wilkes-Barre, PA 18766 USA