Semicompiled libraries are used when a number of subroutines have been written and are to be incorporated in a number of different programs. The consolidator is able to select those subroutines which are actually required by the program.
Libraries fall into two categories, those provided by the system for general use and those generated by a user or group of users fulfilling a specific application. This chapter will consider user libraries.
A user may have a large number of different subroutines which he may use in different combinations in his programs. To save the time and expense of compiling the required routines with each run the user can store them in semicompiled form and only consolidation is required to link these into his programs.
It is worth noting that this scheme also permits mixed language programming (B.1.10).
Semicompiled routines can be consolidated into a program in two ways. Either the entire contents of a file can be included by using a SEMI parameter in the TASK call (B.1.10), (this is obviously only suitable for smaller semicompiled files) or the routines can be consolidated selectively by using a LIB parameter.
Selective consolidation means that one large library may be used in place of several smaller ones. However, semicompiled files are not suitable for amendment and if any routine is to be altered or added to the library it must be converted to a library format by one of the utility programs described later in this chapter.
Both the order in which the routines in a library are stored and the order in which the libraries are scanned is important. As one routine in a library may call another routine in the same or different library, the calling routine must precede the called routine to ensure that a call to a routine appears before the routine is scanned by the consolidator.
The ordering of routines in a library may be done automatically by using the GEORGE macro NULLIB. However, in certain cases the macros DISCSUB and DISCLIB must be used; in this case the ordering of the routines is controlled by the user.
There are several different library formats and they are generally referred to by the GEORGE macro which is used to maintain them. The three in use at ACL are:
NULLIB DISCSUB (also known as 'XPES' format) DISCLIB (also known as 'XFYZ' format)
This macro will create, update or list a subroutine library in a directory format; that is, it contains a directory of its contents which reduces search time. However, the library may be amended, unlike those produced by DISCLIB.
Insertions are from filestore files in semicompiled format. There are certain restrictions on the use of this macro:
MAKE:Create a new library from one or more semicompiled files. No deletions are permitted.
UPDATE:Update an existing library, at least one semicompiled file or a deletions file must be specified.
LIST:List the contents of a library or semicompiled file.
LIB filename:Specifies the library file to be created, updated, or listed. Must be present unless only a listing of a seroicompiled file is required. For an UPDATE run the library must have been created by NULLIB or DISCLIB.
SEMI filename:Specifies the semicompiled files, (that is a file produced by a COMP parameter in a TASK call) to be incorporated in the library or listed. If any routines having duplicate names are found in semicompiled files when using MAKE or UPDATE then an error will occur. If a routine in a semicompiled file also occurs in the library then it will replace the old routine.
*CR filename or DELTNS filename:The named file contains a list of routines to be deleted from the library. The routine names must be on separate lines and the file is terminated by ****.
*LP filename:Lineprinter output is sent to the named file, otherwise it is sent to a workfile and listed.
JT time:Jobtime (in seconds unless MINS used).
TI time:Time limit for the ordering program.
MZ size:Specifies a maxsize for the run. For a large library this may need to be up to 112,000 words.
EJ or EJ(string):The macro terminates with ENDJOB or ENDJOB string instead ot EXIT.
If the macro is issued from a MOP job, it will start a background job which will BROADCAST to the original job on completion.
The following error halts may occur:
E1 E2 E6 E7 File not in correct semicompiled format, E3 E4 E8 E9 EA EB Program errors ED Library file in DISCSUB format. 3 Ordering error, more information in the lineprinter output. Likely cause is too many routines for the system to handle.
(1) NULLIB MAKE,LIB MYLIBRARY,SEMI MYSEMI,SEMI :NTBE34.SDSEMI
This will create a library called MYLIBRARY from routines in MYSEMI and :NTBE34.SDSEMI (must be trapped READ).
(2) NULLIB UPDATE,LIB MYLIBRARY,SEMI NEWSEMI,*CR FRED
The routines named in FRED will first be deleted from MYLIBRARY. Then all the routines in NEWSEMI will be inserted. If any old versions of these routines exist in the library they will be replaced by the new versions.
(3) NULLIB LIST,LIB MYLIBRARY
Produces a listing of MYLIBRARY, giving for each routine a list of the routines it calls.
This macro will create and update a subroutine library using the ICL program XPES. The ordering of the routines is controlled by the programmer by a series of directives. The library will be in a chained format which can be inefficient for large libraries. When a stable library is produced it should be converted to directory format using the macro DISCLIB.
*CR:Steering directives are read from the job description file.
*CR filename: Directives are used from the named GRAPHIC file.
*TR or *TR filename:As above but the steering file should be in NORMAL or ALLCHAR format.
AUTO:A common use of DISCSUB is to copy a subroutine library from an ICL library magnetic tape into the filestore without any modifications. If the library file is named SUBGROUPxxxx and the magnetic tape name is used (for example, *MT:MAGLIB.PROGRAM TAPE) then use of the AUTO parameter will generate a steering file to copy the library xxxx into the file.
EDLIB filename or EDLIB exdescription:Specifies a direct access file containing the library to be created or updated. The library must be created with one block buckets, for example:
CREATE SUBGROUPFRED(*DA,BUCKET1.KWORD25)
*CR filename:Subroutines are to be read from a GRAPHIC semicompiled file.
*TR filename:Subroutines are to be read from a NORMAL or ALLCHAR semicompiled file.
*DA filename or *DA exdescription:Subroutines will be read from a direct access semicompiled or DISCSUB format file. Semicompiled output from TASK should be included by using this type of parameter.
*MT mtdescription:Subroutines will be read from the magnetic tape specified.
*LP:Output is sent to the job's monitoring file.
*LP filename:Output is sent to the named file. If there is no lineprinter parameter the output is sent to a workfile and automatically listed.
ER label:If this parameter is present, in the event of a program failure, control is passed to the labelled statement; otherwise the next instruction in the job description is obeyed.
The steering file consists of a set of directives which control the action of the program. The directives are punched starting in column 7 and have operands starting in column 16.
CDF MYLIB,0,0,0This will create a new library file in MYLIB.
UDF OLDLIB,0,0,0This will open OLDLIB for updating.
The numbers after the filename are not relevant when running under GEORGE but should be included.
IDF NEWSEMIOpens the direct access file NEWSEMI for reading.
IMT MYTAPEOpens the magnetic tape MYTAPE for reading.
Any previously-opened insertion files are closed when an IDF directive for a new file is obeyed.
DS OLDX,1This will delete the routine OLDX from the library. The number after the routine name is the mark number of the routine and will normally be one for a user-generated library. However, a different mark number may have been given by an IS directive in a previous DISCSUB run.
IS 0,ROUTINEA,1,EDROUTINEA (with mark number 1) will be inserted at the beginning of the library from a direct access file.
IS ROUTINEONE,7,ROUTINETWO,1,CDROUTINETWO will be inserted after ROUTINEONE (mark number 7) in the library from a GRAPHIC file. The complete set of insertion types are:
ED direct access file MT magnetic tape CD GRAPHIC file (for example, cards) PT NORMAL file (for example, paper tape).
ISG 0,ABCD,1,EDThis will insert subroutine group ABCD at the beginning of the library.
ISG ROUTINE,1,WXYZ,1,MTThis will insert subroutine group WXYZ after ROUTINE.
PRTThis will print the current contents of the library. This directive must be used to terminate a DISCSUB run.
DISCSUB AUTO,*MT:MAGLIB.PROGRAM TAPE(23),EDLIB SUBGROUPS-RS.MK9This macro call will insert subroutine group S-RS into a new library file called SUBGROUPS-RS from magnetic tape PROGRAM TAPE (23). The group will be given a mark number of 9.
If the direct access file SEMICOMP contains the routines ONE,TWO,THREE, FOUR, and FIVE, the following example will create a library containing these routines in the file MYLIBRARY:
CREATE MYLIBRARY(*DA,BUCKET 1,KWORDS10) INPUT STEER,T//// CDF MYLIBRARY,0,0,0 IDF SEMICOMP ISG 0,THIS,1,ED PRT F //// DISCSUB *CR STEER,EDLIB MYLIBRARY,*DA SEMICOMP,JT 20This will start a background job which will BROADCAST to the. MOP job on termination.
Suppose the user wishes to replace the routine THREE by a new version in the file NEWSEMI and insert the routines from a GRAPHIC file ANOTHER at the end of the library:
JOB STEVEJOB1,:NTBE34 JOBTIME 20 DISCSUB *CR,EDLIBMYLIBRARY,*DA NEWSEMI,*CR ANOTHER UDF MYLIBRARY,0,0,0 IDF NEWSEMI DS THREE,1 IS TWO,1 ,THREE,1,ED ISG FIVE,1,MORE,1,CD PRT F ENDJOB ****
This macro will convert a DISCSUB format library into a directory format, which is more efficient for consolidation and is suitable for updating by NULLIB. However, DISCSUB cannot be used to update a library in this format so a back up copy should be kept in DISCSUB format if any alterations are likely.
This specifies the library file in DISCSUB format which is to be converted,
This specifies the file to which the directory format library is to be written.
If the IN and OUT parameters are exactly similar, the library will first be copied to a workfile and then written back in DISCLIB format.
The system libraries are maintained by ICL and ACL and are normally held as exofiles on disc unit 26. They fall approximately into two categories: compiler libraries and independent libraries. A compilation using TASK will automatically scan the relevant compiler library during consolidation and they may also be used at other times by an explicit declaration in a LIB parameter. The other libraries must always be declared if they are required. For example, to include routines from ICL Scientific Subroutines library (FSCE) in a FORTRAN program, the following TASK call is required:
TASK FORTRAN,*CR FRED,LIB(26,SUBGROUPFSCE)
FORTRAN library (26,SUBGROUPSRF8) ALGOL library (26,SUBGROUPSRA4) PLASYD library (26,SUBGROUPS-PL) PLAN libraries (26,SUBGROUPS-RS) (26,SUBGROUPSGEN)
This is stored in (26,SUBGROUPFSCE). It contains scientific subroutines written either in FORTRAN (names begin with F4) or PLAN (names begin with FP) - several of the latter are also available using software extended precision (names begin with FPE); such routines may need EXTENDED DATA (ie 22AM/DBM) in their program description segment. The accuracy obtainable from normal precision is 38 bits (using 2 1906A words) while the extended precision gives 75 bits (using 4 1906A words).
There are routines which can be used as functions in ALGOL or FORTRAN and as subroutines in PLAN (names begin with FPZ).
There is the package used by ICL 1900 applications packages which have non-standard magnetic tape or EDS files (names begin with VLP).
Apart from the prefixes described above, routine names give some idea of the use of the routine, eg F4J0 evaluates the Bessel function J0, F4CUBIC finds roots of a cubic polynomial.
Specification of the routines beginning with F4, FP, VLP and FPZ are given below. Names in parentheses are the extended precision version of the routine.
(1) BESSEL
F4I0 Modified Bessel function I0 (medium accuracy) F4I0ACC Modified Bessel function I0 (high accuracy) F4I1 Modified Bessel function I1 (medium accuracy) F4I1ACC Modified Bessel function I1 (high accuracy) F4J0 Bessel function J0 (medium accuracy) F4J0ACC Bessel function J0 (high accuracy) F4J0Y0 Bessel function J0 and Y0 (medium accuracy) F4J0Y0ACC Bessel function J0 and Y0 (high accuracy) F4J1 Bessel function J1 (medium accuracy) F4J1ACC Bessel function J1 (high accuracy) F4J1Y1 Bessel function J1 and Y1 (medium accuracy) F4J1Y1ACC Bessel function J1 and Y1 (high accuracy) F4K0 Bessel function K0 (medium accuracy) F4K1 Bessel function K0 (high accuracy)
(2) BETA
F4BETA The Beta function β(x,y)
(3) ERROR
F4ERFN The error function erfx and the complementary error function erfcx
(4) GAMMA
F4GAMMA The gamma function I(x)
Grout method
F4CXACSL The solution of a set of linear equations with complex coefficients, for one or more right-hand side vectors, using iterative improvement FPCXSOL The solution (subject to rounding errors) of sets of simultaneous linear equations with complex coefficients F4ACSL The solution of a set of simultaneous linear equations with real coefficients, for one or more right-hand side vectors, using iterative improvement F4SOLVE The solution of a set of simultaneous linear equations with real coefficients, for one or more right-hand side vectors, using iterative improvement
Gaussian Method
FPMGESOL (FPEMGESOL) The solution of a set of simultaneous linear equations by a Gaussian elimination method
(1) Evaluation of coefficients
F4CALFUN Evaluation of the polynomial Qn (x) obtained as the sum of orthogonal polynomials in the subroutine F4CFORPL F4COEPOL Evaluation of coefficients of polynomial with known roots F4EVAL Evaluation of the polynomial Q(x) obtained in the curve-fitting subroutine F4CONSTR
(2) Roots
F4DIVRT Divide root out of a polynomial F4CUBIC The roots of a cubic polynomial with real coefficients F4BAIRSTOW Evaluation of the zeros of a polynomial with real coefficients using Bairstow's method FPCXDIVRT(FPECXDIVRT) To divide a complex root out of a polynomial with complex coefficients FPCXPOLRT The computation of the roots of a polynomial with complex coefficients, based on the Newton-Raphson method
(3) Division and multiplication
F4POLDIV Polynomial division F4PROPOL The product of two polynomials
(4) Curve fitting
F4CFORPL Least squares curve fitting via orthogonal polynomials F4CONSTR Curve fitting with constraint points using a least square criterion and orthogonal polynomials
(5) Determinants
F4CXDET The Grout factorization and the evaluation of the determinant of a square matrix with complex elements F4DET The Grout factorization and the evaluation of the determinant of a square matrix with real elements FPCXDT The Grout factorization and the computation of the determinant of a square complex matrix
(1) Differential Equations
F40DE Numerical integration of a system of ordinary differential equations FPHMIL Numerical integration of a system of ordinary differential equations using Hamming's modified Mi method F4RUNG Numerical integration of a system of ordinary differential equations using Gill's fourth order Runge-Kutta process which economises in storage requirements and minimises the accumulation of round-off error F4MERS Numerical integration of a system of ordinary differential equations using Merson's method F4RUNK Numerical integration of a system of ordinary differential equations using the standard fourth order Runge-Kutta process and minimizing the accumulation of round-off error
(2) Elliptic integrals
F4EL3 Incomplete elliptic integral of the third kind F4ELC1 Complete elliptic integral of the first kind F4ELC2 Complete elliptic integral of the second kind F4EXPINT The exponential integral ∫ e-t/t dt from x to ∞
(3) Fresnel integral
F4FRESIN The Fresnel integral
(4) Gauss formulae
F4GAUSS4 Numerical integration using the Gauss four-point formula F4GAUSS6 Numerical integration using the Gauss six-point formula F4GAUSS8 Numerical integration using the Gauss eight-point formula F4INTGSS Numerical integration by the Gauss four and six-]: formulae with self adjusting step length
(5) n-step integration
F4INTGRT n-step integration
(6) Probability integrals
F4PROBINCOM The complex probability integral w(z) F4PROBX2 Probability integral of Χ22 distribution (low ace restricted range)
(7) Simpson's rule
F4INTSMP Numerical integration by Simpson's rule, with difference correction and self-adjusting step length
(1) Eigenvectors
F4E1GEN2 The eigenvalues and eigenvectors of an upper square matrix using Jacobi's method F4E1GEN3 The eigenvalues and eigenvectors of a lower square matrix using Jacobi's method FPBACK (FPEBACK) The computation of eigenvectors of the original REAL matrix mentioned in FPDIRHESSE, FPQRHESSE and FPQRVS FPEIGEN1 (EPEEIGEttl) Eigenvalues and eigenvectors using Jacobi's method FPQRVS The computation of the eigenvectors of an upper Hessenberg matrix whose eigenvalues are known FPROOT1 (FPEROOT1) Eigenvalues and eigenvectors of symmetric matrices using Householder's method FPTQL2 (FPETQL2) Eigenvalues and eigenvectors of a symmetric tridiagonal matrix by a modified QR algorithm FPVLEIGJ (FPEVLEIGJ) Eigenvalues and eigenvectors using Jacobi's method
(2) Eigenvalues
F4EIGEN2 The eigenvalues and eigenvectors of an upper square matrix using Jacobi's method F4EIGEN3 The eigenvalues and eigenvectors of a lower square matrix using Jacobi's method FPBISECT Calculation of the eigenvalues of a real, symmetric, tridiagonal matrix by the method of bisection FPQRHESSE The computation of the eigenvalues of a Hessenberg matrix by the QR method FPROOT1 Eigenvectors and eigenvalues of symmetric matrices using Householder's method FPTQL2 Eigenvectors and eigenvalues of a symmetric tridiagonal matrix by a modified QR algorithm FPVLEIGJ (FPEVLEIGJ) Eigenvectors and eigenvalues using Jacobi's method
(3) Grout factorization
F4XDET The Crout factorization and the evaluation of the determinant of a square matrix with complex elements F4DET The Crout factorization and the evaluation of the determinant of a square matrix with real elements FPCXDT The Crout factorization and the computation of the determinant of a square matrix with complex elements
(4) Matrix inversion
FPCOMPINV The inversion of a complex matrix and/or solution of matrix equations using the Gaussian elimination method FPCXINV The efficient computation (subject to rounding errors) of the inverse of a matrix with complex entries FPINDD (FPEINDD) The inversion of a matrix and/or solution of matrix equations using the Gaussian elimination method with double precision accuracy FPINDE The inversion of a matrix and/or solution of matrix equations using the Gaussian elimination method FPMGEIL (FPEMGEIL) Inversion of a symmetric positive definite matrix (stored as a lower triangular) using the Gaussian elimination method FPMGEIN (FPEMGEIN) Matrix inversion using the Gaussian elimination method with full pivoting FPMGEIU (FPEMGEIU) Inversion of a positive definite matrix (stored as an upper triangular) using the Gaussian elimination method
(5) Band matrix
FPDEBM Solving a band matrix Upper Hessejiberg matrices FPDIRHESSE(FPEDIRHESSE) A direct reduction of a real matrix to upper Hessenberg FPQRHESSE The computation of the eigenvalues of a Hessenberg matrix by the QR method FPQRVS (FPEQRVS) The computation of the eigenvectors of an upper Hessenberg matrix whose eigenvalues are known
(6) Matrix equations
FPCOMPINV The inversion of a complex matrix and/or solution of matrix equations using the Gaussian elimination method FPDEBM Solving a band matrix FPREDUC1 | FPREDUC2 | The reduction to standard form of the symmetric eigenproblem FPREBAKA | Ax = λBx and related problems FPREBAKB |
(7) Jacobi's method
FPEIGEN1 Eigenvalues and eigenvectors using Jacobi's method
(8) Gaussian elimination method
FPCOMPINV The inversion of a complete matrix and/or solution of matrix equations using the Gaussian elimination method FPINDD (FPEINDD) The inversion of a matrix and/or solution of matrix equations using the Gaussian elimination method with double precision arithmetic FPINDE The inversion of a matrix and/or solution of matrix equations using the Gaussian elimination method FPMGEIL (FPEMGEIL) Inversion of a symmetric positive definite matrix (stored as a lower triangular) using the Gaussian elimination method FPMGEIN (FPEMGEIN) Matrix inversion using the Gaussian elimination method with full pivoting FPMGEIU (FPEMGEIU) Inversion of a positive definite matrix (stored as an upper triangular) using the Gaussian elimination method with full pivoting
(9) Inner products
FPIPRODD High efficiency computation of inner products (double precision)
(10) Scalar multiplication
FPCXIPRS Efficient computation of the scalar product of complex vectors in single precision FPCXIPRD Efficient computation of the scalar product of complex vectors in double precision FPIPRODS Efficient computation of the scalar products of real vectors in single precision FPIPRODD (FPEIPRODD) Efficient computation of the scalar products of real vectors in double precision FPMASUS Matrix addition, subtraction unary minus and scalar multiplication FPMUMT (FPEMUMT) Matrix multiplication and transpose multiplication FPRODUCT Multiplication of matrices whose elements may be real or complex
(11) Matrix addition
FPMASUS Matrix addition, subtraction unary minus and scalar multiplication
(12) Matrix sub traction
FPMASUS Matrix addition, subtraction unary minus and scalar multiplication
(13) Printing and reading
FPMPRINT Printing a matrix FPMREAD Reading a matrix from cards or paper tape
(14) Transposition
FPMTRAN Matrix transposition
QR method
FPQRHESSE The computation of the eigen value of a Hessenberg matrix by the QR method
(15) Tridiagonalization
FPTRED2 (FPETRED2) The tridiagonalization of a symmetric matrix by the method of Householder
(1) Taylor series
F4LOGPOL Taylor series expansion for ln p(x) F4POLPOW Taylor series expansion for (p(x))t F4TEXPOL Taylor series expansion for exp(p(x)) F4TREPOL Taylor series expansion for 1/p(x)
(2) Chebyshev series
FPACRV Additive congruential random variate FPMCRV Multiplicative congruential random variate
FPLAP13 | FPLAP14 | Numerical inversion of the Laplace transform FPLAP15 | using the method of Bellman et al FPLAP16 | based on quadrature FPLAP17 | FPLAP18 | FPLAP19 |
F4LAGRANG Lagrangian interpolation
F4LTSZI Single commodity lot size optimization F40PTOUR The travelling salesmen problem FPAPCORSRT Core store sort for fixed or variable length records FPSEXS Exponential smoothing FPSGRS Exponential smoothing F4ESTIMATE | F4SBINARY | F4SBJF | F4SBJFHEAD | F4SCHECK | Box-Jenkins forecasting F4SCPROB | F4SDIFS | F4SFORECAST | F4SIMULPR | F4SMINVAR | F4SRESIDUAL | FPSBLS | FPSBLA | Bureau of Labour Statistics FPSOUTCONV | FPSPRS |
The following routines are mentioned in the specifications but are not described:
F4CX1PRD | calling segment is F4CXACSL F4CX1PRS | F4NEWPT | calling segment is F40DE F4NEWDER | F4NEWOPT | F4REDUCE | F4SWITCH | calling segment is F40PTOUR F4RANTOR | F4THROPT | F4ADDTOS | FPRNDM01 | FPROUTS | F40PSR calling segment is FPVLEIGJ
The subroutine FPROUTS contains the following implicit functions:
FPSET231 FPSETUPD FPSET230 FPSPACEN FPLOG23 FPZERON FPLOUTRM FPRCOUNT FPINTERN FPLNKOUT FPRESETD FPLINKIN
These routines may be used as functions in ALGOL or FORTRAN and as subroutines in PLAN.
(1) Common mathematical functions
FPZABS Absolute value FPZAINT Integral part FPZAMOD x modulo y FPZANINT Nearest integer FPZFLOAT Integer to real conversion FPZSIGN Sign FPZSQRT Square root FPZTRINT Truncation to integer part FPZXTY x to the power of y
(2) Trigonometric functions
FPZACOS Arc cosine FPZACOT Arc cotangent FPZASIN Arc sine FPZATAN Arc tangent FPZATAN2 Arc tangent of the ratio x/y (ignoring signs) FPZATAN4 Arc tangent of the ratio x/y (sign taken into account) FPZCOS Natural cosine FPZSIN Natural sine
(3) Hyperbolic functions
FPZACOSH Hyperbolic arc cosine FPZACOTH Hyperbolic arc cotangent FPZATANH Hyperbolic arc tangent FPZCOSH Hyperbolic cosine FPZCOTH Hyperbolic cotangent FPZSINH Hyperbolic sine FPZTANH Hyperbolic tangent
(4) Logarithmic and exponential functions
FPZALOG Logarithm to base e FPZALOG2 Logarithm to base 2 FPZALOG10 Logarithm to base 10 FPZEXP ex FPZEXP10 Antilogarithm to base 10
These are routines for interfacing ICL applications packages (Vector Linear Programming) which have non-standard tape or disc file formats.
Routines available are:
VLPDISC handles EDS files VLPEXPAND VLPSF handles subfiles held in a composite file, may be useful for double buffering VLPTAPE handling magnetic tape files
These routines are contained in (26,NAGLIBF) and (26,NAGLIBA). The Numerical Algorithms Group Library was formed in 1970 by various University Computing Centres and ACL to develop a numerical library for use on the ICL 1906A computer. Other universities and research establishments have since contributed and an attempt is made to make the Library generally available to all universities. There are now versions available for both the original ICL 1906A and smaller ICL 1900 machines, and progress is being made on converting the routines to CDC 7600 and IBM 360 computers. Mixed language programming has been avoided as far as possible by providing two versions of each routine in the library, one FORTRAN-callable, (NAGLIBF), one ALGOL-callable, (NAGLIBA). There are a few routines in PLAN. The Library is divided into chapters, each concerned with one area in Numerical Analysis, identified by the 3 character code assigned to that area in the Modified Share Classification Index. Since routine names are limited to 6 characters in accordance with FORTRAN conventions, and the 3-character code is incorporated into the name of the routine, it is not possible to give mnemonics to the names (there are now approximately 250 routines in the library).
The name of a routine is composed of 6 characters, which should be thought of in three distinct parts:
Hence a typical routine name would be G05AQA:
G05 Random Numbers in the Modified Share Classification Index AQ The routine after AA, AB, AC,...,AP A To be called from an ALGOL program
Further information and suggestions as to which subroutine to use for a particular application are to be found in the complete manual. ACL receives notices of all errors found in the current version of the library; these notices may be inspected in the Program Advisory Office.
A02 - COMPLEX ARITHMETIC C02 - ZEROS OF POLYNOMIALS C05 - ZEROS OF ONE OR MORE TRANSCENDENTAL EQUATIONS C06 - SUMMATION OF SERIES (FAST FOURIER TRANSFORMS) D01 - QUADRATURE D02 - ORDINARY DIFFERENTIAL EQUATIONS E01 - INTERPOLATION E02 - CURVE AND SURFACE FITTING E04 - MINIMISING OR MAXIMISING A FUNCTION F01 - MATRIX OPERATIONS, INCLUDING INVERSION F02 - EIGENVALUES AND EIGENVECTORS F03 - DETERMINANTS F04 - SIMULTANEOUS LINEAR EQUATIONS G02 - CORRELATIONS AND REGRESSION ANALYSIS G04 - ANALYSIS OF VARIANCE G05 - RANDOM NUMBER GENERATORS H - OPERATIONS RESEARCH M01 - SORTING P01 - ERROR TRAPPING S - APPROXIMATIONS OF SPECIAL FUNCTIONS
Complete NAG manuals may be obtained from:
NAG Central Office Oxford University Computing Laboratory 13 Banbury Road Oxford 0X2 6NN (Tel: Oxford (0865) 56727)
There are two information files in the 1906A filestore:
These routines are contained in (26,ALFORTLIB) and are some of the routines known as the Atlas Hartran Subroutine Library. They have been translated from ATLAS FORTRAN to ICL FORTRAN but little checking has been attempted. Not all routines are implemented and the ones available may be very different from ones of the same name currently obtainable from AERE Harwell with the 1973 version of the catalogue.
Names consist of a maximum of 5 characters of the form AANNB where AA are letters which denote the main classification (for example DB for differential equations, subgroup linear) NN are two digits forming the number of the routine within that classification. B is a letter used to denote a close relationship to the previous version of the routine.
List of available sections:
C Series ----------- CA Acceleration of slowly convergent series D Differential equations -------------------------- DA Runge-Kutta methods for initial value problems in ordinary differential equations DD 2 point Boundary value problems for ordinary differential equations DP partial differential equations E Algebraic: eigenvalues and eigenvectors ------------------------------------------- EA Eigenvalues and eigenvectors of real symmetric matrices EC Eigenvalues and eigenvectors of real unsymmetric matrices F Functions, random numbers and Fourier transforms --------------------------------------------------- FB Elliptic functions FC Factorial and related functions (gamma, beta, error) FD Inverse trigonometric functions FF Bessel functions FT Integral transforms (fast fourier transforms) G Geometrical problems -------------------------- GA Transformation of co-ordinates and areas of contours I Integer functions --------------------- ID Simple integer functions R Roots of equation --------------------- JB Roots of equation in one unknown S Sorting ----------- K Sorting KB Sorting numbers into order M Linear algebra (excluding eigenvalue problem) ------------------------------------------------ MA Solution of simultaneous linear equations MB Inverse, determinants and adjoints of matrices MC Manipulation of real matrices and vectors MD Determinants ME Complex matrices 0 Output facilities ---------------------- OB Graph plotting routines for use with SD4020 OC Plots a histogram using SD4020 P Polynomials --------------- PA Roots of polynomial equations PD Functions of polynomials PE Polynomial and rational approximations Q Numerical integration ------------------------ QA Integrals of functions of a single variable QB Multi-dimensional integration QC Weights and abscissae for particular methods QM Monte Carlo estimation of integrals S Statistical functions -------------------------- SA Probability distributions SV Extraction of statistical information from data fitting routines T Interpolation and general approximation of functions -------------------------------------------------------- TA Construction and manipulation of difference tables TB Polynomial interpolation TD Derivatives by finite difference TS Approximation of a given function by cubic splines V Minimisation and data fitting --------------------------------- VA Minimisation of a function of several variables VB Minimisation of a sum of squares VC Fitting of a function of a single variable VD Minimisation of a function of a single variable Z Estimate of rounding errors ------------------------------- ZE Estimate of rounding errors
EB01A EB05A EB06A ED01A FC13A FG01A/B/C/D FG02A/B/C FG03A/B JB03A KB05A KB06A KB07A KB11A KB12A KB13A KB14A LA01A MA01A/B MA02A/B/C/D MA03A/B MA04A/B MA05A MA06A/B MA08A MA09A MA10A MA12A MB01A/B MB03A ME03A ME04A ME04B NS01A PC02A PD02A PD03A PEOIA VBOIA VB04A
Other routines should be available from file ALFORTLIB on exofile 26 in semicompiled format, ready for consolidation into the user's program. A short description of each routine may be obtained by listing the file :NEWS.HARINDEX. The file :NEWS.KWICHAR contains a Key Word In Context index to this library.
2.5.4 Access to Source of Routines The source of particular routines may be listed, punched, or merely copied into the user's filestore by using the macro INDEX. It can also be used to check whether a particular routine is in the library. However, the routines listed above will be found since their source is available, although they do not execute correctly. The calling sequence of macro INDEX is:
OBEY :NSIN32.INDEX,PARAM(*CR filename1,*LP filename2,*CP ,EJ)
The parameters are:
The names of all routines requested are listed in the monitoring file with a message which can take two forms either:
KB09A COPIED PA02D NOT FOUND IN INDEX