ABSTRACT

Introduction The following collection of procedures is a translation into Java of the library NUMAL (NUMerical procedures in ALgol 60) [He80] developed at the Mathematical Centre, Amsterdam. The scope of the library is indicated by the list of procedure descriptions in Appendix B and refers to linear algebra, the numerical solution of ordinary and partial differential equations, optimisation, parameter estimation, special functions of mathematical physics, and indeed most concerns of an active research group. Each main procedure is assembled from auxiliary submodules and for this reason the library is highly compact. The submodules implement routine numerical processes and are of use in the development of new methods. A number of addenda containing some fast Fourier transform procedures, and procedures for time series analysis from other sources have been added to NUMAL. The expert is offered both a collection of procedures for implementing numerical methods which are by now standard and with whose theory the user will be perfectly familiar and a powerful research tool. The novice is offered a prodigious source of entertainment and instruction: the user may run the test programs which carry out the worked examples provided with each critical procedure or group of procedures, the user is free to construct other examples and apply the procedures to them, and the user is even at liberty to devise examples which provoke the procedures into emitting one of the failure indications consistently provided. The use of some Algol procedures in the NUMAL library was explained in detail in a seminar on numerical software. Furthermore, the commercially available program libraries IMSL (IMSL Inc., Houston, Texas, USA) and NAG (Numerical Algorithms Group, Oxford, United Kingdom) were compared with the Algol NUMAL library. The proceedings of that seminar appeared (in Dutch) in [Bus76, Rie77]. NUMAL was originally constructed with the aid of a CDC-Cyber 70 system. However, personal computers, equipped with free Java compilers, are now within the purchasing capability of the professionally active. The Java version of NUMAL, being highly compact, is peculiarly suited to implementation upon a personal computer. The original order of the NUMAL procedures has been preserved. The documentations are taken partly from the original NUMAL source and partly from extended forms given in a FORTRAN version of NUMAL [Wy81] constructed, with considerable help from the author, by P. Wynn for his own use. To ensure maximal compactness of the main library, the worked examples have been grouped together at the end of the Java version library. The references are collected in Appendix A. Appendix B contains a capsule statement of what each procedure does in the library.