Contact us Heritage collections Image license terms
HOME ACL Associates Technology Literature Applications Society Software revisited
Further reading □ IntroductionA. System overviewB. Program executionC. FilestoreD. GEORGE commandsE. Introduction to Multiple On-line Programming (MOP)F. Input of background jobsG. Editing filesI. Budgeting, scheduling and accountingJ. Monitoring filesL. FORTRANM. ALGOLN. Assemblers PLASYD, PLANP. ConsolidatorQ. LibrariesR. Data storage □ Sections S-Z unavailable □ S. Large program organisationT. User utilitiesV. Graphics packagesW. Other packagesX. Efficient use of the 1906AY. 1906A hardwareZ. Peripheral equipmentList of reference manualsIndex
ACD C&A INF CCD CISD Archives Contact us Heritage archives Image license terms

Search

   
ACLLiteratureICL 1906A manuals1906A Reference Manual
ACLLiteratureICL 1906A manuals1906A Reference Manual
ACL ACD C&A INF CCD CISD Archives
Further reading

IntroductionA. System overviewB. Program executionC. FilestoreD. GEORGE commandsE. Introduction to Multiple On-line Programming (MOP)F. Input of background jobsG. Editing filesI. Budgeting, scheduling and accountingJ. Monitoring filesL. FORTRANM. ALGOLN. Assemblers PLASYD, PLANP. ConsolidatorQ. LibrariesR. Data storage
Sections S-Z unavailable
S. Large program organisationT. User utilitiesV. Graphics packagesW. Other packagesX. Efficient use of the 1906AY. 1906A hardwareZ. Peripheral equipmentList of reference manualsIndex

Q. Libraries

Q.1 USER LIBRARIES

Q.1.1 INTRODUCTION

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.

Q.1.2 SEMICOMPILED

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).

Q.1.3 LIBRARIES AND SEMICOMPILED FILES

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.

Q.1.4 ORDERING OF LIBRARIES

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.

Q.1.5 CREATION AND MANIPULATION OF LIBRARIES

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)

Q.1.6 NULLIB

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:

  1. One routine may call up to 100 other routines including calls to standard functions.
  2. A library may contain a maximum of about 480 routines.
  3. An exofile cannot be specified as the library file except for the LIST function.

Q.1.6.1 Specification of Parameters

  1. Type of run: If not present LIST is assumed. The possibilities are:
    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.
  2. Library 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.
  3. Semicompiled files:
    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.
  4. Deletions file:
    *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 ****.
  5. 0ther parameters:
    *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.

Q.1.6.2 Running from MOP

If the macro is issued from a MOP job, it will start a background job which will BROADCAST to the original job on completion.

Q.1.6.3 Error Messages

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.

Q.1.6.4 Examples

(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.

Q.1.7 DISCUB

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.

Q.1.7.1 Parameters

  1. Steering file (must be the first parameter):
    *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.
  2. Library 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)
    
  3. Insertion files: These parameters are optional and may be in any position except the first. They define files or magnetic tapes from which a subroutine or group of subroutines is to be read. If more than one parameter of one type is used they must be in the same order as they occur in the steering directives.
    *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.
  4. Lineprinter output:
    *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.
  5. Error action:
    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.

Q.1.7.2 The Steering File

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.

  1. Open the library file: The first directive must open the library file, either for the creation of a new library or for updating an existing one:
    CDF     MYLIB,0,0,0 
    
    This will create a new library file in MYLIB.
    UDF     OLDLIB,0,0,0 
    
    This will open OLDLIB for updating.

    The numbers after the filename are not relevant when running under GEORGE but should be included.

  2. Open the insertion file: Any direct access insertion files or magnetic tapes must be opened before they are used.
    IDF     NEWSEMI
    Opens the direct access file NEWSEMI for reading.
    IMT     MYTAPE
    Opens the magnetic tape MYTAPE for reading.

    Any previously-opened insertion files are closed when an IDF directive for a new file is obeyed.

  3. Delete a routine:
    DS OLDX,1
    This 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.
  4. Insert a routine: Routines may be inserted at any point in the library, either at the beginning or after a named routine. Insertions may be from direct access files, magnetic tapes, GRAPHIC or NORMAL files; the type of the insertion file must be stated in the directive.
    IS   0,ROUTINEA,1,ED
    
    ROUTINEA (with mark number 1) will be inserted at the beginning of the library from a direct access file.
    IS ROUTINEONE,7,ROUTINETWO,1,CD
    
    ROUTINETWO 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).
    
  5. Insert a subroutine group: The entire contents of a semicompiled file can be inserted and stored in a library as a subroutine group. If the insertion is from a semicompiled file as opposed to another library then any four-character name may be given to the group.
    ISG   0,ABCD,1,ED 
    This will insert subroutine group ABCD at the beginning of the library.
    ISG   ROUTINE,1,WXYZ,1,MT 
    This will insert subroutine group WXYZ after ROUTINE.
  6. Terminate the run:
    PRT
    This will print the current contents of the library. This directive must be used to terminate a DISCSUB run.

Q.1.7.3 Examples

  1. Automatic
    DISCSUB AUTO,*MT:MAGLIB.PROGRAM TAPE(23),EDLIB SUBGROUPS-RS.MK9
    
    This 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.
  2. From MOP

    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 20
    
    This will start a background job which will BROADCAST to the. MOP job on termination.
  3. On cards

    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 
    ****
    

Q.1.8 DISCLIB

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.

Q.1.8.1 Parameters

  1. IN filename or IN exdescription

    This specifies the library file in DISCSUB format which is to be converted,

  2. OUT filename or OUT exdescription

    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.

Q.2 SYSTEM LIBRARIES

Q.2.1 INTRODUCTION

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)

Q.2.2 COMPILER LIBRARIES

FORTRAN  library   (26,SUBGROUPSRF8)
ALGOL    library   (26,SUBGROUPSRA4)
PLASYD   library   (26,SUBGROUPS-PL)
PLAN     libraries (26,SUBGROUPS-RS) 
                   (26,SUBGROUPSGEN)

Q.2.3 ICL SCIENTIFIC SUBROUTINE LIBRARY

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.

Q.2.3.1 Functions

(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)

Q.2.3.2 Linear Equations

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

Q.2.3.3 Polynomials

(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

Q.2.3.4 Numerical Integration

(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

Q.2.3.5 Matrix Algebra

(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

Q.2.3.6 Series

(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

Q.2.3.7 Pseudo-Random Numbers

FPACRV                  Additive congruential random variate
FPMCRV                  Multiplicative congruential random variate

Q.2.3.8 Laplace Transforms

FPLAP13    |            
FPLAP14    |            Numerical inversion of the Laplace transform 
FPLAP15    |            using the method of Bellman et al 
FPLAP16    |            based on quadrature
FPLAP17    |            
FPLAP18    |            
FPLAP19    |            

Q.2.3.9 Lagrangian Interpolation

F4LAGRANG               Lagrangian interpolation

Q.2.3.10 Miscellaneous

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        |

Q.2.3.11 Subsidiary Routines

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

Q.2.3.12 FPZ Routines

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

Q.2.3.13 VLP Routines

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

Q.2.4 NAG LIBRARY

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:

  1. The first 3 characters are the Modified Share Classification Index Entry for the numerical area of the particular routine (for example G05 for Random Numbers, F04 for the Simultaneous Linear Equations). The first character is always a letter, the next two are digits.
  2. The second part is a 2 Letter Index Code. This is composed of two letters which are used to order routines within the specific areas defined by the Modified Share Classification Index. Letters were chosen in preference to numbers since this permitted 576 entries (I and 0 are excluded). An example would be AQ or BD. The Index cycles on the left letter more slowly. Hence AQ would come before ED.
  3. The third part is a Calling Language Code. This is a single letter A for Algol, F for ANSI FORTRAN. This designates the language of the program from which the routine is called. An example would be A for calling a procedure from an Algol program.

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.

Q.2.4.1 Contents of NAG

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:

  1. :NEWS.NAGINDEX has a list in numerical order of all routines with a short description of what they do.
  2. :NEWS.KWICNAG is a Key Word In Context index to the routines. The current version of NAG available at ACL is Version 3.

Q.2.5 HARWELL LIBRARY

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.

Q.2.5.1 Classification Scheme

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

Q.2.5.2 List of Routines Not Available

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

Q.2.5.3 Available Routines

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.

Q.2.5.4 Access to Source of Routines

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:

  1. This parameter is mandatory and can take two forms:
    1. *CR filename1 : filename1 contains the names of subroutines requested (one routine per record, with no leading spaces)
    2. *CR : the names are expected to follow the macro call in the job source.
  2. This parameter is optional; if present, it can take two forms:
    1. *LP filename2 : filename2 is the name of the user file to which the source is to be returned, no lineprinter listing is provided.
    2. *LP : a workfile is used for the source which is listed on the lineprinter. This is also the default obtained when the parameter is omitted.
  3. *CP : this parameter is optional. If present, a numbered set of cards is produced (in 1900 card code).
  4. EJ : this parameter is optional. If present, ENDJOB will be obeyed on exit from the macro. If absent, control will return to the level at which INDEX was called.

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
⇑ Top of page
© Chilton Computing and UKRI Science and Technology Facilities Council webmaster@chilton-computing.org.uk
Our thanks to UKRI Science and Technology Facilities Council for hosting this site