This file contains the complete plain text version of the material displayed by the NRHELP program. Obviously, in this listing, you should ignore instructions asking you to press function keys. Instead, simply read, or print out, this file in a linear manner. Main Menu Press a function key (F1-F10) to jump to the following topics: F1 - How to INSTALL the Numerical Recipes archives F2 - License Information and WARRANTY DISCLAIMER F3 - How to use NRCOPY (accessing the files) F4 - How to use the Example programs F5 - How to order Numerical Recipes books F6 - Compiler hints, troubleshooting, and common questions F7 - List of the Numerical Recipes (REC archive) F8 - List of the Example programs (EXA archive) F9 - List of other supplied files (OTH archive) F10 - Converting Numerical Recipes to DOUBLE PRECISION You can also press these function keys from anywhere within NRHELP. You can return to this menu by pressing Home. The contents of the Numerical Recipes Fortran Diskette are Copyright (C) 1986-1995 Numerical Recipes Software. All About INSTALL The ONLY way to access the programs on your Numerical Recipes diskette is to install them with the INSTALL program that is provided. To use the INSTALL program, place the original diskette into an appropriate drive (e.g., A:) and type A:INSTALL followed by the key. Then, follow the directions as indicated. The Numerical Recipes routines consist of more than 600 individual files (including both the recipes and the sample driver routines). Fully unpacked, this large number of files requires excessive disk space, and degrades the performance of programs that scan the full directory tree. Furthermore, few users ever want to use more than a small number of the routines at any one time. We therefore supply the routines in the form of a small number of compressed archive files, and a special dearchiving program called NRCOPY. When properly installed, NRCOPY becomes a command that is available from any working directory. On request, it creates a copy of any desired routine. You can use, modify, or delete this copy: a fresh copy can always be obtained by the NRCOPY command. more... Here is an overview of the INSTALL process: (If you have already completed the installation, you might wish to verify that you went through all these steps.) 1. You are asked to select a drive and subdirectory that are in your DOS path. (Your current DOS path is displayed.) You can choose an existing subdirectory or a new one. The archive files must be somewhere in your path so that the NRCOPY command is able to find them. 2. You are asked to enter your name, or the name of the person or organization to whom the diskette is licensed. This name is used to construct a short license validation file with a name like NR20KEY.AR. This file must be kept in the same directory as the archive files, otherwise NRCOPY will not be able to work. 3. The following files are copied to the subdirectory that you chose: the archives NRF20REC.AR, NRF20EXA.AR, NRF20OTH.AR, and the executable commands NRCOPY.EXE and NRHELP.COM (this file). The validation file NR20KEY.AR is also put in place. 4. If (and only if) you requested that your AUTOEXEC.BAT file be modified to include your chosen subdirectory in your DOS path, this modification is made. When the INSTALL process is complete, and after you have rebooted your machine so that the PATH is reset, you will be able to use the commands NRCOPY and NRHELP from any working directory. Press F3 now to get instructions for using NRCOPY. (For short instructions at any time, just type NRCOPY at a DOS prompt.) All About NRCOPY The NRCOPY command can be executed at any DOS prompt, from any working directory. It locates any desired Numerical Recipes files in the archives, and makes useable copies in the directory of your choice. It can also be used to list the contents of an archive (names of the files) or to view on the screen, rather than copy, selected files. The complete syntax of the command is: NRCOPY C|KRC|FOR RECIPES|EXAMPLES|OTHER [files] [LIST|VIEW|TO path] Here, arguments with bars, like "a|b|c", signify that you must choose exactly one of a,b, or c, while square brackets like "[ ]" signify that an argument is optional. All arguments are case insensitive (you can type them in upper case, lower case or any combination). The keywords C, KRC, FOR, RECIPES, EXAMPLES, and OTHER, can be abbreviated down to a single letter, C, K, F, R, E, and O, respectively. The action of the command is as follows: The C, K&R C, or FORTRAN archive (depending on the first argument) that contains RECIPES, EXAMPLES or OTHER files (depending on the second argument) is opened. (Only FORTRAN is included with this diskette; if you also install the Numerical Recipes C diskette, the same NRCOPY command will manage both sets of archives.) The optional next argument(s) are scanned. If specific files are named, then processing of the opened archive is limited to these. (You need only enter the main part of the file name, not the extension like .FOR or .DAT.) If there is no third argument, or if the third argument is *, then all files are processed. Wild cards, like "LU*" are also allowed in the third argument. Note that the file names are separated by spaces, not by commas! If there is no additional argument, then copies of the selected files are made to the current directory. If the next argument is TO followed by a final argument that is a valid path, then copies are made in that path. (TO can be omitted if path contains a \ or : character.) If the last argument is LIST, then only filenames are listed to the screen, and no copies are made. If the last argument is VIEW, then the selected files are listed to the screen, and no copies are made. (You will generally want to follow the VIEW argument by "| MORE" so that the file does not run off the screen.) NRCOPY appends a copyright notice at the end of each unpacked .FOR or .C file. The notice is formatted so as to be a valid program comment in the appropriate language. If you combine several routines in a single file, you may delete all but one of these lines. (We request that you leave one in each file that contains copyrighted material.) There is a string of printable characters at the end of the copyright notice that contains information about the routine version number and your license. Please include this string if you need to write us about a routine. Some examples will clarify use of the NRCOPY command: NRCOPY FORTRAN RECIPES TO C:\MYDIR (copy all FORTRAN Recipes files to directory MYDIR on disk C:) NRCOPY C EXAMP TO c:\MYDIR (copy all C examples files to directory mydir on disk C:) NRCOPY F R LUDCMP LUBKSB (copy LUDCMP.FOR and LUBKSB.FOR to the current directory) NRCOPY c rec ludcmp lubksb g: (create G:\LUDCMP.C and G:\LUBKSB.C on disk G:) NRCOPY C other * LIST (list to screen names of all files in C OTHER archive) NRCOPY FOR EX xlubksb VIEW | MORE (view on screen the routine XLUBKSB.FOR, pause each page) If you ever need a quick review of the NRCOPY command, just type NRCOPY (with no arguments) at any DOS prompt. NRCOPY is based on the AR compression archiver of Haruhiko Okumura, used by permission. Numerical Recipes Examples The Numerical Recipes Example Books (in FORTRAN and C), published by Cambridge University Press, contain descriptions and listings of sample programs that demonstrate and exercise all of the Numerical Recipes routines. In previous editions, these demonstration programs were available, machine-readable, only as a separate diskette. Now, they are included, free, on this diskette. You can try out these demonstration programs without having the Example Book itself. However, to get the maximum benefit of these examples, you will want to read the Example Book's additional descriptions and see the sample output. You can get information on ordering the the Example Book by pressing F5. The Example programs all have names beginning with "X". They must be compiled with, or linked to, the routines that they demonstrate. Some of the Example programs also use data files that are supplied on this diskette in the "Other" archive. (Press F9 for a list of these files. Press F8 for a list of all the Example programs.) To find out what routines and/or data files are required by an Example program, read its program listing. Here is an example of how to unpack, compile (assuming Microsoft Fortran) and run a demonstration program, in this case the one for SVDCMP: > NRCOPY F E XSVDCMP [unpack the FORTRAN EXAMPLE file] > NRCOPY F R SVDCMP PYTHAG [unpack the necessary Recipes] > NRCOPY F O MATRX3 [unpack the data file] > FL XSVDCMP.FOR SVDCMP.FOR PYTHAG.FOR [invoke the compiler] > XSVDCMP [run the demonstration] The Example programs are all self-prompting. Just follow their instructions. Ordering Information Numerical Recipes books, and diskettes for IBM/PC-compatible and Apple Macintosh computers, are published exclusively by Cambridge University Press. Their address and telephone order number (North American branch) is: Cambridge University Press, Order Department 110 Midland Avenue Port Chester, NY 10573 telephone: toll-free 800-872-7423 (in NY: 800-227-0247) from abroad: 914-937-9600 Outside of North America, orders may be placed with: Cambridge University Press, Customer Services Department Edinburgh Building Shaftesbury Road Cambridge, CB2 2RU U.K. more... fax: (U.K. country code+) 223 315052 telex: 851 817256 CUPCAM G The following books are available (prices subject to change): Numerical Recipes in FORTRAN, 2nd Edition (hardcover) $49.95 Numerical Recipes FORTRAN Example Book, 2nd Ed. (paper) $29.95 Numerical Recipes in C, 2nd Edition (hardcover) $49.95 Numerical Recipes C Example Book, 2nd Ed. (paper) $29.95 These First Edition books remain available: Numerical Recipes in Pascal, Revised Edition (hardcover) $49.95 Numerical Recipes Example Book (Pascal), Revised Ed. (paper) $29.95 Numerical Recipes Routines and Examples in BASIC (paper) $32.50 Diskettes are available in FORTRAN, C, Pascal, and BASIC (Microsoft QuickBASIC), for IBM/PC-compatibles and Apple Macintosh. Contact Cambridge University Press for pricing information. A TrueBasic diskette is available from TrueBasic Inc., 12 Commerce Ave., West Lebanon, NH 03784. Compiler Hints 32-bit FORTRAN compilers, e.g., Microsoft FORTRAN PowerStation -------------------------------------------------------------- All of the Numerical Recipes routines have been validated under version 1.0 of Microsoft FORTRAN-32, FORTRAN PowerStation. All the routines compile correctly with the default compiler options, and also with the /Ox (full optimization) option. Note that full optimization is not the default, so you may want to use this option when compiling prior to long "production runs". (For the routine machar.for, more meaningful answers are obtained by using the /Op compiler option. See the "Portability" chapter of your Microsoft FORTRAN PowerStation User's Guide.) 16-bit FORTRAN compilers, e.g., Microsoft FORTRAN V5.1 -------------------------------------------------------- 16-bit applications have segmented, and limited, addressable memory, so 16-bit compilers must employ various techniques for accommodating large programs and/or large data spaces. The most common sources of difficulty in using the Numerical Recipes programs have to do with stack or segment sizes, and with choice of memory models. A second source of difficulty is integer length. We always assume 4-byte integers. All of the Numerical Recipes routines have been validated under version 5.1 of the Microsoft FORTRAN compiler. Almost all routines compile correctly with the default options. In a few cases, however, you may need to use one or more of the following compiler switches: /Gt (move large data items out of the default segment) /AH (select huge memory model -- if you have large arrays) /Od (disable optimization: "cures" some rare compiler bugs) /4Yb (turn on debug: "cures" some other rare compiler bugs) Please consult your compiler documentation for additional information. Troubleshooting and Common Questions Q. I have tried it several times, but the INSTALL program just does not work on my machine. A. Write immediately to Numerical Recipes Software, P.O. Box 243, Cambridge, MA 02238 (USA) or fax to 617-863-1739. Include your telephone or fax number and tell us when we can reach you. We really want to know about this! Q. INSTALL seems to work, but I get a message about "can't find a valid license key and/or licensee name". A. Be sure that the directory that contains the archive files NR*.AR is in your DOS path. Check that the file NR20KEY.AR is there. Examine this file with any text editor. It should be one line long and consist of exactly 3 printable characters followed immediately by the licensee name. If this is not the case, re-run the INSTALL program and be sure to enter a valid licensee name. If it IS the case, then it is possible that your NR20KEY.AR file has been improperly altered. Please write to us. Q. Using NRCOPY, I get a message about "can't find archive file in path". A. Either you did not run the INSTALL program, or else you have forgotten to modify your AUTOEXEC.BAT file to add the subdirectory with the Numerical Recipes archive files to your DOS path. Q. I have a nonstandard computer that is unable to display the output of the NRHELP command. What do I do? A. A text version of NRHELP, NRHELP.TXT, is included on the diskette, though it is not automatically copied to your hard disk by INSTALL. Q. There are some garbage characters in the copyright notice that is appended to unpacked files. A. Those are not garbage characters. They contain information about the program version and your license. Please include them if you need to write to us about a routine. Q. I am uncommonly vigilant against computer viruses, and I refuse to run your INSTALL or NCOPY programs on my machine. A. You will need to obtain the C source code for Haruhiko Okumura's public domain "AR" archiver from a bulletin board. Build its executable on your machine. The Numerical Recipes archive files are in the standard AR format, and can be dearchived with that program. (The AR format is different from other, similarly named, formats such as ARC or ARJ. Incidentally, Haruhiko Okumura is the Japanese translator for the Numerical Recipes books published in Japan.) Q. I have both the FORTRAN and C diskettes installed, but NRHELP seems to relate to only one of them. A. One diskette's NRHELP.COM has overwritten the other. Copy them from the original installation diskettes to a directory in your path, but give them different names, e.g., NRHELPC.COM and NRHELPF.COM. Then, you can use the commands NRHELPC and NRHELPF to get language-specific help. Q. What happened to the old Numerical Recipes Example Diskettes? A. Press Home and see the topic "How to use the Example programs." Q. What happened to Numerical Recipes in Pascal? BASIC? A. The Second Edition of Numerical Recipes is available in C and FORTRAN. Due to lack of demand, we have not prepared a Second Edition version of the Pascal version. However, the First Edition of Numerical Recipes in Pascal continues to be available. Ditto, BASIC. Q. How do I contact Numerical Recipes Software? A. Press F2 and then F9 for our address, fax number, and email address. Numerical Recipes in the REC archive (all .FOR) (main book section numbers are in parentheses) ADDINT interpolate and add, used by {MGLIN} (19.6) AIRY Airy functions (6.7) AMEBSA simulated annealing in continuous spaces (10.9) AMOEBA minimize in N-dimensions by downhill simplex method (10.4) AMOTRY evaluate a trial point, used by {AMOEBA} (10.4) AMOTSA evaluate a trial point, used by {AMEBSA} (10.9) ANNEAL traveling salesman problem by simulated annealing (10.9) ANORM2 utility used by {MGFAS} (19.6) ARCMAK construct an arithmetic code (20.5) ARCODE encode or decode a character using arithmetic coding (20.5) ARCSUM add integer to byte string, used by {ARCODE} (20.5) ASOLVE used by {LINBCG} for preconditioner (2.7) ATIMES used by {LINBCG} for sparse multiplication (2.7) AVEVAR calculate mean and variance of a data set (14.2) BADLUK Friday the 13th when the moon is full (1.1) BALANC balance a nonsymmetric matrix (11.5) BANBKS band diagonal systems, backsubstitution (2.4) BANDEC band diagonal systems, decomposition (2.4) BANMUL multiply vector by band diagonal matrix (2.4) BCUCOF construct two-dimensional bicubic (3.6) BCUINT two-dimensional bicubic interpolation (3.6) BESCHB Chebyshev expansion used by {BESSJY} (6.7) BESSI modified Bessel function I of integer order (6.6) BESSI0 modified Bessel function I_0 (6.6) BESSI1 modified Bessel function I_1 (6.6) BESSIK modified Bessel functions of fractional order (6.7) BESSJ Bessel function J of general integer order (6.5) BESSJ0 Bessel function J_0 (6.5) BESSJ1 Bessel function J_1 (6.5) BESSJY Bessel functions of fractional order (6.7) BESSK modified Bessel function K of integer order (6.6) BESSK0 modified Bessel function K_0 (6.6) BESSK1 modified Bessel function K_1 (6.6) BESSY Bessel function Y of general integer order (6.5) BESSY0 Bessel function Y_0 (6.5) BESSY1 Bessel function Y_1 (6.5) BETA beta function (6.1) BETACF continued fraction used by {BETAI} (6.4) BETAI incomplete beta function (6.4) BICO binomial coefficients function (6.1) BKSUB backsubstitution, used by {SOLVDE} (17.3) BNLDEV binomial distributed random deviates (7.3) BRENT find minimum of a function by Brent's method (10.2) BROYDN secant method for systems of equations (9.7) BSSTEP integrate ODEs, Bulirsch-Stoer step (16.4) CALDAT calendar date from Julian day number (1.1) CHDER derivative of a function already Chebyshev fitted (5.9) CHEBEV Chebyshev polynomial evaluation (5.8) CHEBFT fit a Chebyshev polynomial to a function (5.8) CHEBPC polynomial coefficients from a Chebyshev fit (5.10) CHINT integrate a function already Chebyshev fitted (5.9) CHIXY used by {FITEXY} to calculate a chi^2 (15.3) CHOLDC Cholesky decomposition (2.9) CHOLSL Cholesky backsubstitution (2.9) CHSONE chi-square test for difference between data and model (14.3) CHSTWO chi-square test for difference between two data sets (14.3) CISI cosine and sine integrals Ci and Si (6.9) CNTAB1 contingency table analysis using chi-square (14.4) CNTAB2 contingency table analysis using entropy measure (14.4) CONVLV convolution or deconvolution of data using FFT (13.1) COPY utility used by {MGLIN}, {MGFAS} (19.6) CORREL correlation or autocorrelation of data using FFT (13.2) COSFT1 fast cosine transform with endpoints (12.3) COSFT2 ``staggered'' fast cosine transform (12.3) COVSRT rearrange covariance matrix, used by {LFIT} (15.4) CRANK replaces array elements by their rank (14.6) CYCLIC solution of cyclic tridiagonal systems (2.7) DAUB4 Daubechies 4-coefficient wavelet filter (13.10) DAWSON Dawson's integral (6.10) DBRENT find minimum of a function using derivative information (10.3) DDPOLY evaluate a polynomial and its derivatives (5.3) DECCHK decimal check digit calculation or verification (20.3) DERIVS sample derivatives routine for {STIFF} (16.6) DF1DIM alternative function used by {LINMIN} (10.6) DFPMIN minimize in N-dimensions by variable metric method (10.7) DFRIDR numerical derivative by Ridders' method (5.7) DFTCOR compute endpoint corrections for Fourier integrals (13.9) DFTINT high-accuracy Fourier integrals (13.9) DIFEQ spheroidal matrix coefficients, used by {SFROID} (17.4) DPYTHAG, DREALFT, DSPRSAX, DSPRSTX, DSVBKSB, DSVDCMP double precision versions of routines minus initial D ECLASS determine equivalence classes from list (8.6) ECLAZZ determine equivalence classes from procedure (8.6) EI exponential integral Ei (6.3) EIGSRT eigenvectors, sorts into order by eigenvalue (11.1) ELLE Legendre elliptic integral of the second kind (6.11) ELLF Legendre elliptic integral of the first kind (6.11) ELLPI Legendre elliptic integral of the third kind (6.11) ELMHES reduce a general matrix to Hessenberg form (11.5) ERF error function (6.2) ERFC complementary error function (6.2) ERFCC complementary error function, concise routine (6.2) EULSUM sum a series by Euler--van Wijngaarden algorithm (5.1) EVLMEM power spectral estimation from MEM coefficients (13.7) EXPDEV exponential random deviates (7.2) EXPINT exponential integral E_n (6.3) F1DIM function used by {LINMIN} (10.5) FACTLN logarithm of factorial function (6.1) FACTRL factorial function (6.1) FASPER power spectrum of unevenly sampled larger data sets (13.8) FDJAC finite-difference Jacobian, used by {NEWT} (9.7) FGAUSS fit a sum of Gaussians using {MRQMIN} (15.5) FILL0 utility used by {MGLIN} (19.6) FIT least-squares fit data to a straight line (15.2) FITEXY fit data to a straight line, errors in both x and y (15.3) FIXRTS reflect roots of a polynomial into unit circle (13.6) FLEG fit a Legendre polynomial using {LFIT} or {SVDFIT} (15.4) FLMOON calculate phases of the moon by date (1.0) FMIN norm of a vector function, used by {NEWT} (9.7) FOUR1 fast Fourier transform (FFT) in one dimension (12.2) FOUREW rewind and permute files, used by {FOURFS} (12.6) FOURFS FFT for huge data sets on external media (12.6) FOURN fast Fourier transform in multidimensions (12.4) FPOLY fit a polynomial using {LFIT} or {SVDFIT} (15.4) FRED2 solve linear Fredholm equations of the second kind (18.1) FREDEX example of solving a singular Fredholm equation (18.3) FREDIN interpolate solutions obtained with {fred2} (18.1) FRENEL Fresnel integrals S(x) and C(x) (6.9) FRPRMN minimize in N-dimensions by conjugate gradient (10.6) FTEST F-test for difference of variances (14.2) GAMDEV gamma-law distribution random deviates (7.3) GAMMLN logarithm of gamma function (6.1) GAMMP incomplete gamma function (6.2) GAMMQ complement of incomplete gamma function (6.2) GASDEV normally distributed random deviates (7.2) GAUCOF quadrature weights from orthogonal polynomials (4.5) GAUHER Gauss-Hermite weights and abscissas (4.5) GAUJAC Gauss-Jacobi weights and abscissas (4.5) GAULAG Gauss-Laguerre weights and abscissas (4.5) GAULEG Gauss-Legendre weights and abscissas (4.5) GAUSSJ Gauss-Jordan matrix inversion and linear equation solution (2.1) GCF continued fraction used by {GAMMP} and {GAMMQ} (6.2) GOLDEN find minimum of a function by golden section search (10.1) GSER series used by {GAMMP} and {GAMMQ} (6.2) HPSEL find M largest values, without altering an array (8.5) HPSORT sort an array by heapsort method (8.3) HQR eigenvalues of a Hessenberg matrix (11.6) HUFAPP append bits to a Huffman code, used by {HUFMAK} (20.4) HUFDEC use Huffman code to decode and decompress a character (20.4) HUFENC use Huffman code to encode and compress a character (20.4) HUFMAK construct a Huffman code (20.4) HUNT search a table when calls are correlated (3.4) HYPDRV complex hypergeometric function, derivative of (6.12) HYPGEO complex hypergeometric function (6.12) HYPSER complex hypergeometric function, series evaluation (6.12) ICRC cyclic redundancy checksum (20.3) ICRC1 cyclic redundancy checksum, used by {ICRC} (20.3) IGRAY Gray code and its inverse (20.2) IINDEXX integer array version of {INDEXX} (8.4) INDEXX construct an index for an array (8.4) INTERP bilinear prolongation, used by {MGLIN}, {MGFAS} (19.6) IRBIT1 random bit sequence (7.4) IRBIT2 random bit sequence (7.4) JACOBI eigenvalues and eigenvectors of a symmetric matrix (11.1) JACOBN sample Jacobian routine for {STIFF} (16.6) JULDAY Julian Day number from calendar date (1.1) KENDL1 correlation between two data sets, Kendall's tau (14.6) KENDL2 contingency table analysis using Kendall's tau (14.6) KERMOM sample routine for moments of a singular kernel (18.3) KS2D1S K-S test in two dimensions, data vs. model (14.7) KS2D2S K-S test in two dimensions, data vs. data (14.7) KSONE Kolmogorov-Smirnov test of data against model (14.3) KSTWO Kolmogorov-Smirnov test between two data sets (14.3) LAGUER find a root of a polynomial by Laguerre's method (9.5) LFIT general linear least-squares fit by normal equations (15.4) LINBCG biconjugate gradient solution of sparse systems (2.7) LINMIN minimum of a function along a ray in N-dimensions (10.5) LNSRCH search along a line, used by {NEWT} (9.7) LOCATE search an ordered table by bisection (3.4) LOP applies nonlinear operator, used by {MGFAS} (19.6) LUBKSB linear equation solution, backsubstitution (2.3) LUDCMP linear equation solution, LU decomposition (2.3) MACHAR diagnose computer's floating arithmetic (20.1) MALOC memory allocation utility used by {MGLIN}, {MGFAS} (19.6) MATADD utility used by {MGFAS} (19.6) MATSUB utility used by {MGFAS} (19.6) MEDFIT fit data to a straight line robustly, least absolute deviation (15.7) MEMCOF evaluate maximum entropy (MEM) coefficients (13.6) METROP Metropolis algorithm, used by {ANNEAL} (10.9) MGFAS nonlinear elliptic PDE solved by multigrid method (19.6) MGLIN linear elliptic PDE solved by multigrid method (19.6) MIDEXP integrate a function that decreases exponentially (4.4) MIDINF integrate a function on a semi-infinite interval (4.4) MIDPNT extended midpoint rule (4.4) MIDSQL integrate a function with lower square-root singularity (4.4) MIDSQU integrate a function with upper square-root singularity (4.4) MISER recursive multidimensional Monte Carlo integration (7.8) MMID integrate ODEs by modified midpoint method (16.3) MNBRAK bracket the minimum of a function (10.1) MNEWT Newton's method for systems of equations (9.6) MOMENT calculate moments of a data set (14.1) MP2DFR multiple precision conversion to decimal base (20.6) MPDIV multiple precision divide and remainder (20.6) MPINV multiple precision reciprocal (20.6) MPMUL multiple precision multiply, using FFT methods (20.6) MPOPS multiple precision arithmetic, simpler operations (20.6) MPPI multiple precision example, compute many digits of pi (20.6) MPROVE linear equation solution, iterative improvement (2.5) MPSQRT multiple precision square root (20.6) MRQCOF used by {MRQMIN} to evaluate coefficients (15.5) MRQMIN nonlinear least-squares fit, Marquardt's method (15.5) NEWT globally convergent multi-dimensional Newton's method (9.7) ODEINT integrate ODEs with accuracy monitoring (16.2) ORTHOG construct nonclassical orthogonal polynomials (4.5) PADE Pade approximant from power series coefficients (5.12) PCCHEB inverse of {CHEBPC}; use to economize power series (5.11) PCSHFT polynomial coefficients of a shifted polynomial (5.10) PEARSN Pearson's correlation between two data sets (14.5) PERIOD power spectrum of unevenly sampled data (13.8) PIKSR2 sort two arrays by straight insertion (8.1) PIKSRT sort an array by straight insertion (8.1) PINVS diagonalize a sub-block, used by {SOLVDE} (17.3) PLGNDR Legendre polynomials, associated (spherical harmonics) (6.8) POIDEV Poisson distributed random deviates (7.3) POLCOE polynomial coefficients from table of values (3.5) POLCOF polynomial coefficients from table of values (3.5) POLDIV divide one polynomial by another (5.3) POLIN2 two-dimensional polynomial interpolation (3.6) POLINT polynomial interpolation (3.1) POWELL minimize in N-dimensions by Powell's method (10.5) PREDIC linear prediction using MEM coefficients (13.6) PROBKS Kolmogorov-Smirnov probability function (14.3) PSDES pseudo-DES hashing of 64 bits (7.5) PWT partial wavelet transform (13.10) PWTSET initialize coefficients for {PWT} (13.10) PYTHAG calculate (a^2+b^2)^{1/2} without overflow (2.6) PZEXTR polynomial extrapolation, used by {BSSTEP} (16.4) QGAUS integrate a function by Gaussian quadratures (4.5) QRDCMP QR decomposition (2.10) QROMB integrate using Romberg adaptive method (4.3) QROMO integrate using open Romberg adaptive method (4.4) QROOT complex or double root of a polynomial, Bairstow (9.5) QRSOLV QR backsubstitution (2.10) QRUPDT update a QR decomposition (2.10) QSIMP integrate using Simpson's rule (4.2) QTRAP integrate using trapezoidal rule (4.2) QUAD3D integrate a function over a three-dimensional space (4.6) QUADCT count points by quadrants, used by {ks2d1s} (14.7) QUADMX sample routine for a quadrature matrix (18.3) QUADVL quadrant probabilities, used by {ks2d1s} (14.7) RAN0 random deviate by Park and Miller minimal standard (7.1) RAN1 random deviate, minimal standard plus shuffle (7.1) RAN2 random deviate by L'Ecuyer long period plus shuffle (7.1) RAN3 random deviate by Knuth subtractive method (7.1) RAN4 random deviates from DES-like hashing (7.5) RANK construct a rank table for an array (8.4) RANPT get random point, used by {MISER} (7.8) RATINT rational function interpolation (3.2) RATLSQ rational fit by least-squares method (5.13) RATVAL evaluate a rational function (5.3) RC Carlson's degenerate elliptic integral (6.11) RD Carlson's elliptic integral of the second kind (6.11) REALFT fast Fourier transform of a single real function (12.3) REBIN sample rebinning used by {VEGAS} (7.8) RED reduce columns of a matrix, used by {SOLVDE} (17.3) RELAX Gauss-Seidel relaxation, used by {MGLIN} (19.6) RELAX2 Gauss-Seidel relaxation, used by {MGFAS} (19.6) RESID calculate residual, used by {MGLIN} (19.6) REVCST cost of a reversal, used by {ANNEAL} (10.9) REVERS do a reversal, used by {ANNEAL} (10.9) RF Carlson's elliptic integral of the first kind (6.11) RJ Carlson's elliptic integral of the third kind (6.11) RK4 integrate one step of ODEs, fourth-order Runge-Kutta (16.1) RKCK Cash-Karp-Runge-Kutta step used by {RKQS} (16.2) RKDUMB integrate ODEs by fourth-order Runge-Kutta (16.1) RKQS integrate one step of ODEs with accuracy monitoring (16.2) RLFT3 FFT of real data in two or three dimensions (12.5) ROFUNC fit data robustly, used by {MEDFIT} (15.7) ROTATE Jacobi rotation used by {QRUPDT} (2.10) RSOLV right triangular backsubstitution (2.10) RSTRCT half-weighting restriction, used by {MGLIN}, {MGFAS} (19.6) RTBIS find root of a function by bisection (9.1) RTFLSP find root of a function by false-position (9.2) RTNEWT find root of a function by Newton-Raphson (9.4) RTSAFE find root of a function by Newton-Raphson and bisection (9.4) RTSEC find root of a function by secant method (9.2) RZEXTR rational function extrapolation, used by {BSSTEP} (16.4) SAVGOL Savitzky-Golay smoothing coefficients (14.8) SCRSHO graph a function to search for roots (9.0) SELECT find the Nth largest in an array (8.5) SELIP find the Nth largest, without altering an array (8.5) SFROID spheroidal functions by method of {SOLVDE} (17.4) SHELL sort an array by Shell's method (8.1) SHOOT solve two point boundary value problem by shooting (17.1) SHOOTF ditto, by shooting to a fitting point (17.2) SIMP1 linear programming, used by {SIMPLX} (10.8) SIMP2 linear programming, used by {SIMPLX} (10.8) SIMP3 linear programming, used by {SIMPLX} (10.8) SIMPLX linear programming maximization of a linear function (10.8) SIMPR integrate stiff ODEs by semi-implicit midpoint rule (16.6) SINFT fast sine transform (12.3) SLVSM2 solve on coarsest grid, used by {MGFAS} (19.6) SLVSML solve on coarsest grid, used by {MGLIN} (19.6) SNCNDN Jacobian elliptic functions (6.11) SNRM used by {LINBCG} for vector norm (2.7) SOBSEQ Sobol's quasi-random sequence (7.7) SOLVDE two point boundary value problem, solve by relaxation (17.3) SOR elliptic PDE solved by successive overrelaxation method (19.5) SORT sort an array by quicksort method (8.2) SORT2 sort two arrays by quicksort method (8.2) SORT3 sort, use an index to sort 3 or more arrays (8.4) SPCTRM power spectrum estimation using FFT (13.4) SPEAR Spearman's rank correlation between two data sets (14.6) SPHBES spherical Bessel functions j_n and y_n (6.7) SPHFPT spheroidal functions by method of {SHOOTF} (17.4) SPHOOT spheroidal functions by method of {SHOOT} (17.4) SPLIE2 construct two-dimensional spline (3.6) SPLIN2 two-dimensional spline interpolation (3.6) SPLINE construct a cubic spline (3.3) SPLINT cubic spline interpolation (3.3) SPREAD extirpolate value into array, used by {FASPER} (13.8) SPRSAX product of sparse matrix and vector (2.7) SPRSIN convert matrix to sparse format (2.7) SPRSPM pattern multiply two sparse matrices (2.7) SPRSTM threshold multiply two sparse matrices (2.7) SPRSTP transpose of sparse matix (2.7) SPRSTX product of transpose sparse matrix and vector (2.7) STIFBS integrate stiff ODEs, Bulirsch-Stoer step (16.6) STIFF integrate stiff ODEs by fourth-order Rosenbrock (16.6) STOERM integrate conservative second-order ODEs (16.5) SVBKSB singular value backsubstitution (2.6) SVDCMP singular value decomposition of a matrix (2.6) SVDFIT linear least-squares fit by singular value decomposition (15.4) SVDVAR variances from singular value decomposition (15.4) TOEPLZ solve Toeplitz systems (2.8) TPTEST Student's t-test for means, case of paired data (14.2) TQLI eigensolution of a symmetric tridiagonal matrix (11.3) TRAPZD trapezoidal rule (4.2) TRED2 Householder reduction of a real, symmetric matrix (11.2) TRIDAG solution of tridiagonal systems (2.4) TRNCST cost of a transposition, used by {ANNEAL} (10.9) TRNSPT do a transposition, used by {ANNEAL} (10.9) TTEST Student's t-test for difference of means (14.2) TUTEST Student's t-test for means, case of unequal variances (14.2) TWOFFT fast Fourier transform of two real functions (12.3) VANDER solve Vandermonde systems (2.8) VEGAS adaptive multidimensional Monte Carlo integration (7.8) VOLTRA linear Volterra equations of the second kind (18.2) WT1 one-dimensional discrete wavelet transform (13.10) WTN multidimensional discrete wavelet transform (13.10) WWGHTS quadrature weights for an arbitrarily singular kernel (18.3) ZBRAC outward search for brackets on roots (9.1) ZBRAK inward search for brackets on roots (9.1) ZBRENT find root of a function by Brent's method (9.3) ZRHQR roots of a polynomial by eigenvalue methods (9.5) ZRIDDR find root of a function by Ridders' method (9.2) ZROOTS roots of a polynomial by Laguerre's method with deflation (9.5) Example programs (in the EXA archive) XAIRY.FOR XAMEBSA.FOR XAMOEBA.FOR XANNEAL.FOR XARCODE.FOR XAVEVAR.FOR XBALANC.FOR XBANDEC.FOR XBANMUL.FOR XBCUCOF.FOR XBCUINT.FOR XBESCHB.FOR XBESSI.FOR XBESSI0.FOR XBESSI1.FOR XBESSIK.FOR XBESSJ.FOR XBESSJ0.FOR XBESSJ1.FOR XBESSJY.FOR XBESSK.FOR XBESSK0.FOR XBESSK1.FOR XBESSY.FOR XBESSY0.FOR XBESSY1.FOR XBETA.FOR XBETAI.FOR XBICO.FOR XBNLDEV.FOR XBRENT.FOR XBROYDN.FOR XBSSTEP.FOR XCALDAT.FOR XCHDER.FOR XCHEBEV.FOR XCHEBFT.FOR XCHEBPC.FOR XCHINT.FOR XCHOLSL.FOR XCHSONE.FOR XCHSTWO.FOR XCISI.FOR XCNTAB1.FOR XCNTAB2.FOR XCONVLV.FOR XCORREL.FOR XCOSFT1.FOR XCOSFT2.FOR XCOVSRT.FOR XCRANK.FOR XCYCLIC.FOR XDAWSON.FOR XDBRENT.FOR XDDPOLY.FOR XDECCHK.FOR XDF1DIM.FOR XDFPMIN.FOR XDFRIDR.FOR XDFTINT.FOR XECLASS.FOR XECLAZZ.FOR XEI.FOR XEIGSRT.FOR XELLE.FOR XELLF.FOR XELLPI.FOR XELMHES.FOR XERF.FOR XERFC.FOR XERFCC.FOR XEULSUM.FOR XEVLMEM.FOR XEXPDEV.FOR XEXPINT.FOR XF1DIM.FOR XFACTLN.FOR XFACTRL.FOR XFASPER.FOR XFGAUSS.FOR XFIT.FOR XFITEXY.FOR XFIXRTS.FOR XFLEG.FOR XFLMOON.FOR XFOUR1.FOR XFOURFS.FOR XFOURN.FOR XFPOLY.FOR XFRED2.FOR XFREDIN.FOR XFRENEL.FOR XFRPRMN.FOR XFTEST.FOR XGAMDEV.FOR XGAMMLN.FOR XGAMMP.FOR XGAMMQ.FOR XGASDEV.FOR XGAUCOF.FOR XGAUHER.FOR XGAUJAC.FOR XGAULAG.FOR XGAULEG.FOR XGAUSSJ.FOR XGCF.FOR XGOLDEN.FOR XGSER.FOR XHPSEL.FOR XHPSORT.FOR XHQR.FOR XHUFFMAN.FOR XHUNT.FOR XHYPGEO.FOR XICRC.FOR XIGRAY.FOR XINDEXX.FOR XIRBIT1.FOR XIRBIT2.FOR XJACOBI.FOR XJULDAY.FOR XKENDL1.FOR XKENDL2.FOR XKS2D1S.FOR XKS2D2S.FOR XKSONE.FOR XKSTWO.FOR XLAGUER.FOR XLFIT.FOR XLINBCG.FOR XLINMIN.FOR XLOCATE.FOR XLUBKSB.FOR XLUDCMP.FOR XMACHAR.FOR XMEDFIT.FOR XMEMCOF.FOR XMGFAS.FOR XMGLIN.FOR XMIDPNT.FOR XMISER.FOR XMMID.FOR XMNBRAK.FOR XMNEWT.FOR XMOMENT.FOR XMPPI.FOR XMPROVE.FOR XMRQCOF.FOR XMRQMIN.FOR XNEWT.FOR XODEINT.FOR XORTHOG.FOR XPADE.FOR XPCCHEB.FOR XPCSHFT.FOR XPEARSN.FOR XPERIOD.FOR XPIKSR2.FOR XPIKSRT.FOR XPLGNDR.FOR XPOIDEV.FOR XPOLCOE.FOR XPOLCOF.FOR XPOLDIV.FOR XPOLIN2.FOR XPOLINT.FOR XPOWELL.FOR XPREDIC.FOR XPROBKS.FOR XPSDES.FOR XPZEXTR.FOR XQGAUS.FOR XQRDCMP.FOR XQROMB.FOR XQROMO.FOR XQROOT.FOR XQRSOLV.FOR XQRUPDT.FOR XQSIMP.FOR XQTRAP.FOR XQUAD3D.FOR XRAN.FOR XRAN4.FOR XRANK.FOR XRATINT.FOR XRATLSQ.FOR XRC.FOR XRD.FOR XREALFT.FOR XRF.FOR XRJ.FOR XRK4.FOR XRKDUMB.FOR XRKQS.FOR XRLFT3.FOR XROFUNC.FOR XRTBIS.FOR XRTFLSP.FOR XRTNEWT.FOR XRTSAFE.FOR XRTSEC.FOR XRZEXTR.FOR XSAVGOL.FOR XSCRSHO.FOR XSELECT.FOR XSELIP.FOR XSHELL.FOR XSIMPLX.FOR XSIMPR.FOR XSINFT.FOR XSNCNDN.FOR XSOBSEQ.FOR XSOR.FOR XSORT.FOR XSORT2.FOR XSORT3.FOR XSPCTRM.FOR XSPEAR.FOR XSPHBES.FOR XSPHFPT.FOR XSPLIE2.FOR XSPLIN2.FOR XSPLINE.FOR XSPLINT.FOR XSPRSAX.FOR XSPRSIN.FOR XSPRSPM.FOR XSPRSTM.FOR XSPRSTP.FOR XSPRSTX.FOR XSTIFBS.FOR XSTIFF.FOR XSTOERM.FOR XSVBKSB.FOR XSVDCMP.FOR XSVDFIT.FOR XSVDVAR.FOR XTOEPLZ.FOR XTPTEST.FOR XTQLI.FOR XTRAPZD.FOR XTRED2.FOR XTRIDAG.FOR XTTEST.FOR XTUTEST.FOR XTWOFFT.FOR XVANDER.FOR XVEGAS.FOR XVOLTRA.FOR XWT1.FOR XWTN.FOR XZBRAC.FOR XZBRAK.FOR XZBRENT.FOR XZRHQR.FOR XZRIDDR.FOR XZROOTS.FOR Files in the "Other" Archive Files in the "other" (OTH) archive consist of Data files used by some of the Example programs: DATES.DAT FNCVAL.DAT MATRX1.DAT MATRX2.DAT MATRX3.DAT SPCTRL.DAT TABLE.DAT TABLE2.DAT TARRAY.DAT TEXT.DAT Executable file for converting Numerical Recipes to DOUBLE PRECISION, and its accompanying data file (for information press F10): NR2DP.EXE NR2DP.DAT About Double Precision Many Numerical Recipes readers have requested that the Numerical Recipes routines be made available in DOUBLE PRECISION, in addition to the default REAL. Doing so is not as simple as one might think, because of the distinction between "roundoff error" and "truncation error". (Please see the main book if you are not familiar with these concepts.) While mechanically converting all REALs to DOUBLE PRECISIONs reduces a routine's roundoff error, it does not reduce any truncation error that may be intrinsic to the algorithm. Sometimes, a routine contains "accuracy parameters" which can be adjusted to reduce the truncation error to the new, desired level. Occasionally, however, the truncation error cannot be so easily reduced; then, a whole new algorithm is needed. Clearly such new algorithms are beyond the scope of a simple "conversion". If, despite the above cautions, you want to proceed with converting some routines to DOUBLE PRECISION, you can use an automated conversion tool that is included on the diskette. To unpack it, execute the NRCOPY command NRCOPY F OTHER NR2DP* This will unpack two files, NR2DP.EXE and NR2DP.DAT. You should copy these files to a directory in your DOS path, preferably the same directory as contains the other Numerical Recipes archives. For a quick start with NR2DP, simply type NR2DP (with no arguments) at any DOS prompt. Instructions will be displayed. Here are further details: The syntax of the NR2DP command is NR2DP path\ file [file...] The action of the command is to perform a pro-forma conversion of Numerical Recipes FORTRAN files to DOUBLE PRECISION. Note that this routine works only on Numerical Recipes routines (Recipes and Example programs), not on general FORTRAN programs, because it assumes certain typographical and stylistic conventions that the Numerical Recipes routines strictly follow. The first argument following NR2DP is a path string that is used literally as the start of the output file name. It should end with the character "\". The second and following arguments are input file names. They must correspond to files in the current (working) directory. Output file names are the same as input file names, but with a prepended character "d". Example: NR2DP \nr\double\ lubksb.for creates an output file \nr\double\dlubksb.for. The subdirectory \nr\double\ must already exist. For output to the current directory, use .\ for path. The data file NR2DP.DAT must be present somewhere in your DOS path. Wildcards are supported in the filename arguments, for example, NR2DP \nr\double\ *.for You might wish to examine the file NR2DP.DAT with a text editor. That file begins with comment lines that list the automatic substitutions made by the NR2DP.EXE program. The rest of the file is a list of known exceptions and special cases, organized by Numerical Recipes routine name. These special cases adjust the routines' accuracy parameters, when it is possible to do so. If you want to make different substitutions, or if you discover errors in the conversions, you can edit the NR2DP.DAT file yourself. We would be grateful to hear from you regarding your corrections. NOTE: NR2DP is an UNSUPPORTED product, provided for your convenience. License Information Menu Press a function key (F3-F9) to jump to the following topics: F3 - What does your license cover? F4 - DISCLAIMER OF WARRANTY F5 - Can you redistribute Numerical Recipes in your programs? F6 - Licenses for other types of computers F7 - Educational licenses for single-screen workstations F8 - Right-to-Copy licenses for courses F9 - How to contact Numerical Recipes Software Home - Return to main menu You can also use the PageUp and PageDown keys to scroll through the above information. What does your license cover? As the purchaser of a Numerical Recipes diskette in IBM/PC format, you are licensed to install the programs on this diskette onto a single IBM/PC-compatible computer. You are not licensed to move the files to any other type of computer, nor to use them on more than a single IBM/PC-compatible computer for each diskette purchased. By installing or using the programs, you acknowledge acceptance of the following DISCLAIMER OF WARRANTY: DISCLAIMER OF WARRANTY THE PROGRAMS ACCESSED BY THIS ROUTINE (AND ON THE ORIGINAL DISKETTE) ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. WE MAKE NO WARRANTIES, EXPRESS OR IMPLIED, THAT THEY ARE FREE OF ERROR, OR ARE CONSISTENT WITH ANY PARTICULAR STANDARD OF MERCHANTABILITY, OR THAT THEY WILL MEET YOUR REQUIREMENTS FOR ANY PARTICULAR APPLICATION. THEY SHOULD NOT BE RELIED ON FOR SOLVING A PROBLEM WHOSE INCORRECT SOLUTION COULD RESULT IN INJURY TO A PERSON OR LOSS OF PROPERTY. IF YOU DO USE THEM IN SUCH A MANNER, IT IS AT YOUR OWN RISK. THE AUTHORS AND PUBLISHER DISCLAIM ALL LIABILITY FOR DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES RESULTING FROM YOUR USE OF THE PROGRAMS. Can you redistribute Numerical Recipes in your programs? If you want to include Numerical Recipes routines in programs that are further distributed (either commercially or non-commercially) you can obtain permission to do so from Numerical Recipes Software. If the routines are bound into your program executable and are not separately visible to or useable by your users (that is, they are not presented in a "modular" or "workbench" environment), there is generally no charge, provided that (i) advance permission is obtained, and (ii) a copyright notice like that on this diskette is embedded in your program executable. Contact Numerical Recipes Software at P.O. Box 243, Cambridge, MA 02238 (USA) [fax 617-863-1739] for details. In distributing a program containing Numerical Recipes routines, you acknowledge acceptance of the above DISCLAIMER OF WARRANTY, and of the fact that no business relationship is created between your program's users and Numerical Recipes Software, the authors of the Numerical Recipes books, or Cambridge University Press. If you want to distribute software that has Numerical Recipes in the form of source code or individually callable object modules, then you must contact Numerical Recipes Software for further information. A fee (per Recipe) is charged, and we normally limit the total number of Recipes distributed. Licenses for other types of computers License information for other types of computers (including UNIX workstations and servers, and multiple-user mainframes) is available from Numerical Recipes Software (press F9 for our email address). For educational and noncommercial users, we offer two ``streamlined'' procedures: Educational License for Single-Screen Workstation If you are affiliated with an educational or not-for-profit research institution that is connected to the Internet, you may license the programs for use on a single workstation (one screen) as follows: Mail or email us your name, address, and email address; your workstation's hostname, internet address, brand and model number. You can pay the $50 one-time license fee by VISA or MasterCard by including your card number and expiration date. Otherwise your order must be mailed to us at the address below (press F9) and must include payment. Be sure to specify the language you want (FORTRAN or C). You will receive, by return mail or email, instructions for downloading the programs electronically. Right-to-Copy License for Courses Instructors at accredited educational institutions who have adopted Numerical Recipes for a course, and who already own a diskette, may license the programs for use in that course as follows: Mail your name, title, and address; the course name, number, dates, and estimated enrollment; and advance payment of $5 per (estimated) student to Numerical Recipes Software, at the address below (F9). You will receive by return mail a license authorizing you to make copies of your diskette for use by your students, and/or to transfer the programs to a machine accessible to your students (but only for the duration of the course). How to contact Numerical Recipes Software Our address is: Numerical Recipes Software P.O. Box 243 Cambridge, MA 02238 (USA) Our email address is info@nr.com (24-hour automatic response) Our fax number is: 617-863-1739. Sorry, we do not take telephone calls other than fax. Press Home to return to the Main menu. Press F2 to return to the License Information menu.