The Harwell Subroutine Library was a library of subprograms which are called by a user written program. Complete programs are not included in the library although some of the library routines are in fact packages of more than one subprogram. The principle language was FORTRAN.
The library was composed mainly of mathematical and numerical analysis routines. These were in the main been written by members of the Numerical Analysis Group, past and present, and were of a high standard, A few of the routines were derived from sources outside Harwell and acknowledgements are made to that effect in the catalogue entries.
The principle function of the library was to provide Harwell computer users with good numerical facilities.
The library started life in 1963 and was first used on the IBM 7030 (STRETCH) computer at Aldermaston and later the Chilton Atlas and then Harwell's IBM 360 computers.
In 1967 the concept of having both single and double precision versions of routines was introduced.
The catalogue contains a complete list of routines that make up the library giving details of purpose, method and attributes. The details given are brief and only intended to be sufficient for a potential user to decide which of the routines, if any, are suitable for his particular problem. The routines are listed in alphabetical order by year and the classification used for routine names is such that the list for each year falls naturally into sections associated with different classes of problem. There are some exceptions and general topics, such as data fitting, are covered by routines spread throughout the list.
The first letter of a routine name indicates the section it belongs to:
D Differential Equations E Algebraic eigen values and eigen vector problems F Mathematical functions, random numbers and Fourier transforms G Geometrical problems I Integer valued functions K Sorting L Linear and dynamic programming M Problems in linear algebra N Nonlinear equation problems O Input and output facilities P Polynomial and rational function problems Q Numerical integration S Functions of statistics T Interpolation and general approximation of functions V Optimization and nonlinear data fitting problems Z Non-FORTRAN system facilities
The list below is sorted in order of the last time the routine was updated. Fuller descriptions are available in the Harwell Subroutine Library manual.
Routines in machine code for the 360 series have been omitted. Names or routines that appear to be missing often indicate that the routine has become redundant because of a later addition. The date given is the last time the routine was updated.
D B Russell and P Hallowell were at the Atlas Computer Laboratory. Most of the other authors were permanent members of Harwell. There were some routines provided by visitors and in a few cases they originated in the SHARE Library.
Name | Year | Author | Description |
---|---|---|---|
DA01A | 1963 | D McVicar | To integrate a set of first order differential equations |
EA02A | 1963 | E J York | Given a real symmetric matrix A and an estimate λe of one of its eigenvalues, will find to a given accuracy the eigen value nearest to λe |
EA03A | 1963 | J Soper | Given a real symmetric matrix A, finds all its eigen values λi and eigenvectors xi |
FC03A | 1963 | S Marlow | To compute values of the Gamma function |
FC05A | 1963 | S Marlow | To compute values of the Beta function |
FC10A | 1963 | S Marlow | Computes the real and imaginary part of the Fresnel integral |
FC11A | 1963 | S Marlow | To compute values of the exponential integral |
FF01A | 1963 | S Marlow | Computes values of the Bessel functions J0(x) and Y0(x) |
FF02A | 1963 | S Marlow | Computes values of the Bessel functions J1(x) and Y1(x) |
FF05A | 1963 | F R A Hopgood | Given x ≥ 0, computes the value of the spherical Bessel functions |
MA01B | 1963 | E J York | To solve a system of n linear algebraic equations in n unknowns with one or more right-hand sides |
MB02A | 1963 | G Packham | To evaluate the adjoint matrix of an n by n real matrix where A may be singular |
MC06A | 1963 | M Osbourne | Applies the Gram-Schmidt orthogonalization process to n vectors in an m dimensional space |
ME02A | 1963 | E J York | Given an Hermitian matrix and a complex vector, compute the complex product |
OA01A | 1963 | E J York | To print out an m by n matrix in an easily read format |
PA01A | 1963 | SHARE | To find all the real and complex roots of a polynomial with real coefficients |
PA02A | 1963 | M J Hopper | To find all the real roots of a polynomial with real coefficients that fall within a given interval |
PA03A | 1963 | H Simmonds | To find all the roots of a cubic polynomial |
PA04A | 1963 | M Lancefield | To find the number of real roots above, below and within a specified interval |
PA05A | 1963 | S Marlow | To find all the roots of a quartic polynomial |
PE01A | 1963 | S Marlow | Calculates the coefficients of a polynomial given the coefficients of its expansion in terms of Chebyshev polynomials |
PE03A | 1963 | C Brittain | Given the coefficients of a polynomial calculates the coefficients of its expansion in terms of Chebyshev polynomials |
PE04A | 1963 | A T Sinden | Given a function f(x) in a range, find a rational approximation |
QA02A | 1963 | M J D Powell | To evaluate the integral of f(x) between a and b to a specified absolute accuracy |
QA03A | 1963 | M J D Powell | To tabulate an integral function |
QB01A | 1963 | F R A Hopgood | To evaluate a 1 to 6 dimensional integral using user-specified quadrature method at each dimension: Simpson's rule, Gauss quadrature or a quadrature based on Chebyshev polynomials at |
TA01A | 1963 | M J D Powell | To compute and print out a table of differences of a function when the function is given at equal intervals |
TB01A | 1963 | A G Hearn | To interpolate the value of an even function f(x)=f(-x) given n+1 function values |
TB02A | 1963 | A G Hearn | To interpolate the value of a function given n+1 function values |
VA03A | 1963 | M J D Powell | Reduces the problem of finding the minimum of a function of n variables to that of finding a minimum of a function of one variable many times |
VB03A | 1963 | M J D Powell | To minimise a sum of squares of m functions of n variables when values of the derivatives are available |
VB06A | 1963 | M J D Powell | To calculate a least square fit to given data by a cubic spline which has knots specified by the user and subject to smoothing conditions imposed |
VC01A | 1963 | E J York | To calculate a best weighted least square fit to given data by a polynomial of specified degree |
FC01A | 1964 | A Bailey | To evaluate the function e-z2erfc(-iz) for complex z |
FF06A | 1964 | S Marlow | Given x > 0, computes values of all the Bessel functions ber(x), bei(x), ker(x), kei(x), ber'(x), bei'(x), ker'(x), kei'(x) |
GA01A | 1964 | A Hearn | Calculate the cartesian coordinates x,y,z of a point given in spherical coordinates or vice versa |
GA02A | 1964 | D Miller | Calculates the area bounded by a contour f(x,y)=c |
ID02A | 1964 | A Gavan | Finds K the HCF of two given integers |
ID03A | 1964 | A Bailey | Calculates the number of seconds between two given times given in years, months, days and hours |
KC01A | 1964 | D Willis | Given a set of intervals on the real line, the routine finds the smallest set of disjoint intervals |
KC02A | 1964 | D Willis | Given two set of non-overlapping intervals the routine merges the two sets together |
MA07A | 1964 | D B Russell | To solve a system of n linear equations in n unknown when the equation coefficient matrix is band structured |
MA08A | 1964 | M J Hopper | Forms the normal equations of the linear least squares problem |
MA09A | 1964 | M J Hopper | Solves the linear least square problem by the so-called normal equation method |
MA10A | 1964 | M J Hopper | To solve a system of n linear algebraic equations in n unknowns |
MB01B | 1964 | L Morgan | To compute the inverse matrix of of an n by n real matrix |
MB04A | 1964 | M J D Powell | Given A-1 the inverse matrix of a partitioned n by n real symmetric matrix where A1 is (n-1) by (n-1) top left, A2 is a row matrix (bottom left), A2 T is top right and bottom right is a scalar, calculates the (n-1) by (n-1) inverse matrix of A1 |
MB05A | 1964 | M J D Powell | As above but calculates the inverse of A |
MC07A | 1964 | M J D Powell | Given an n by n real symmetric matrix, calculates the coefficients of its characteristic polynomial |
MD03A | 1964 | M J D Powell | To evaluate the determinant of an n by n real symmetric matrix |
PC02A | 1964 | L Morgan | Given n+1 points, calculates the coefficients of the polynomial that passes through them |
PE06A | 1964 | L Morgan | Given a polynomial C(x) of degree K finds the coefficients of the Pade approximation |
PE07A | 1964 | S Northcliffe | To compute the value of a polynomial P(x) of degree n which is expresses as a linear combination of orthogonal polynomials |
PE08A | 1964 | S Northcliffe | To obtain the coefficients of a polynomial expressed as a linear combination of orthogonal polynomials |
SV01A | 1964 | M J D Powell | To extract from a minimization of a sum of squares an approximation to the variance-covariance matrix |
TB03A | 1964 | D Miller | Calculates the coefficients of the piece-wise cubic function which interpolates n+1 given function values at specified points |
VA02A | 1964 | M J D Powell | To minimize a sum of squares of m functions of n variables |
VA04A | 1964 | M J D Powell | To find the minimum of a general function of n variables |
VD01A | 1964 | M J D Powell | To find a minimum of a general function of one variable |
VD02A | 1964 | M J D Powell | To find a minimum of a general function of one variable within a specified accuracy |
DD01A | 1965 | P Hallowell | To solve the two point boundary value problem for the second order linear differential equation |
DD02A | 1965 | P Hallowell | To solve the two point boundary value problem for the second order non-linear differential equation |
DP01A | 1965 | P Hallowell | To solve the two point boundary value problem for the linear parabolic partial differential equation |
EB04A | 1965 | P Hallowell | Finds all the eigenvalues, real and complex of a real upper Hessenberg matrix |
EC02A | 1965 | E J York | Finds all the eigenvalues of a tri-diagonal Hermitian matrix |
MA11B | 1965 | M J Hopper | To solve an over-determined system of m linear algebraic equations in n unknowns> |
QC02AD | 1965 | A R Curtis | To find weights and zeros for Gaussian type quadrature of integrals of the form e-xf(x) between 0 and infinity |
TA02A | 1965 | D B Russell | To evaluate the divided differences of a function f(x) tabulated at a set of points not necessarily equally spaced |
TA03A | 1965 | D B Russell | To evaluate the central differences of a function f(x) tabulated at equal intervals |
TD01A | 1965 | P Hallowell | To estimate first or second derivatives given a table of function values and finite differences |
DP02A | 1966 | P Hallowell | To solve the two point boundary value problem for the non-linear parabolic partial differential equation |
EB05A | 1966 | M Reynolds | Given a real upper Hessenberg matrix A and one of its eigenvalues λ, finds the corresponding eigenvector |
FC13A | 1966 | A R Curtis | To compute values of Dawson's integral |
FF03A | 1966 | S Marlow | Computes values of the Bessel functions I0(x) and K0(x) |
FF04A | 1966 | S Marlow | Computes values of the Bessel functions I1(x) and K1(x) |
GA04A | 1966 | M Ruffle | Computes the solid angle subtended by a disc of unit radius from a general point in the plane perpendicular to the plane of the disc |
KB01A | 1966 | M Reynolds | To sort an array of numbers into ascending order |
KB02A | 1966 | M Reynolds | To sort an array of numbers into descending order |
KB03A | 1966 | M Reynolds | To sort an array of numbers into ascending order maintaining an index array to preserve a record of the original order |
KB04A | 1966 | M Reynolds | To sort an array of numbers into descending order maintaining an index array to preserve a record of the original order |
LA01A | 1966 | M J Hopper | Solve the general linear programming problem |
MA12A | 1966 | M Reynolds | To solve a system of n linear algebraic equations in n unknowns where the coefficient matrix is upper Hessenberg |
MC04B | 1966 | Transform n by n real symmetric matrix in to a tri-diagonal matrix having the same eigen values | |
MC08A | 1966 | E J York | Transform an n by n matrix to an upper Hessenberg matrix |
ME01B | 1966 | Transform an n by n Hermitian matrix into a tri-diagonal matrix having the same eigenvalues | |
ME04A | 1966 | To solve a system of n complex linear algebraic equations in n unknowns | |
PD03A | 1966 | A R Curtis | Given a polynomial in x, calculate the coefficients of the polynomial under a change of variable |
PE11A | 1966 | S Marlow | Given m values of a function f(x) calculates the nth degree minimax polynomial |
QM01A | 1966 | D Green | Evaluate the value of an n dimensional integral to a specified accuracy by a Monte Carlo method |
TG01A | 1966 | M J D Powell | To compute the values of a cubic spline defined over a given range in the standard format |
TG01B | 1966 | M J Hopper | To compute the value of a cubic spline given in terms of its knot points and its values and first derivative values |
VB05B | 1966 | M J D Powell | To calculate the best weighted least squares fit to given data by a cubic spline with the number of knots specified by the user |
ZE01A | 1966 | A R Curtis | To estimate the rounding errors generated in floating point arithmetic |
DINT | 1967 | R C F McLatchie | Returns the double precision point value of the integer part of a real double precision floating point number |
EB01A | 1967 | E J York, M Reynolds | Finds all the eigenvalues and eigenvectors of a general real matrix |
FA01AS | 1967 | R C F McLatchie | Generate uniformly distributed pseudo-random numbers |
FA02AS | 1967 | To return the signed fractional part of a real floating point number | |
FB01A | 1967 | S Marlow | Compute values of the complete elliptic integrals of the 1st and 2nd kind |
FB02A | 1967 | L Morgan | Compute values of the incomplete elliptic integrals of the 1st and 2nd kind |
FB03a | 1967 | M Ruffle | Compute values of the complete elliptic integral of the 3rd kind |
FT01A | 1967 | A R Curtis | Calculates discrete Fourier transforms |
GA03A | 1967 | E J York | Constructs a system of plane contours f(x,y) = ck for k=1,..,N over a specified rectangular region |
OD01A | 1967 | D McVicar | To allow a FORTRAN programmer to read or write paper tape |
OD02A | 1967 | R Garside | To allow a FORTRAN programmer to read or write Dectape |
ON01B | 1967 | M Ruffle | To provide a free format input facility for the FORTRAN user |
PC01A | 1967 | W E Hart | To calculate the coefficients of a polynomial given all its roots, the roots must be real |
PE05AD | 1967 | A R Curtis | Given a smooth function in a range finds a weighted rational approximation |
VC03A | 1967 | M J D Powell | To calculate a smooth weighted least square fit to given data by a cubic spline |
MA14A | 1968 | M J Hopper | To calculate a least square solution to an over-determined system of m linear equations in n unknowns |
NS03A | 1968 | M J D Powell | To solve a system of n non-linear equations in n unknowns |
OA02A | 1968 | M J Hopper | To print out contents of a single dimensional array in tabular form |
ON02A | 1968 | R C F McLatchie | Given a data card containing numeric data items constructs the FORTRAN format required to read the numbers from the card |
QD01A | 1968 | W E Hart | To evaluate integrals of the form f(t) sin xt dt between a and b and the cosine equivalent |
FG01A | 1969 | J Soper | To compute the various vector coupling coefficients (3-j, 6-j, 9-j etc) |
OC01A | 1969 | A R Curtis | To produce a graph of several dependent variables against an independent variable on a lineprinter |
VA05A | 1969 | M J D Powell | To minimise a sum of squares of m functions in n variables |
VE01A | 1969 | R Fletcher | To find the minimum of a general function subject to a number of linear inequality constraints |
DC01AD | 1970 | A R Curtis, A B Smith | A package of routines to integrate a system of first order ordinary differential equations |
DC02AD | 1970 | A R Curtis | A package of routines to integrate a system of first order ordinary differential equations |
EA07C | 1970 | J K Reid | Given a real symmetric matrix A, find all its eigen vectors λi and eigenvectors xi |
EA08C | 1970 | J K Reid | Given a real symmetric matrix A, find all its eigen vectors |
EA09C | 1970 | J K Reid | Find all the eigenvalues of a real tri-diagonal symmetric matrix. The QR algorithm with shifts is used |
LA02A | 1970 | R Fletcher | To find a feasible point to a set of linear constraints |
MA07B | 1970 | J K Reid | To solve a system of n linear algebraic equations where the equation coefficient matrix has a band structure |
MA16A | 1970 | J K Reid | To solve a system of n linear algebraic equations in n unknowns when the coefficient matrix is symmetric positive definite and is very large and sparse |
MB10A | 1970 | M J D Powell | To calculate the generalized inverse of an m by n rectangular matrix |
MB11A | 1970 | M J D Powell | As MB10A where the rank of A is equal to m |
OA03A | 1970 | M J Hopper | To print out in tabular form the contents of two single dimensional arrays |
PD02A | 1970 | M J Hopper | To give the first m terms of the Taylor series expansion of functions of a given polynomial |
SA02A | 1970 | D G Papworth | To evaluate the one-sided cumulative distribution function of Student's distribution |
SA03A | 1970 | D G Papworth | To evaluate the complement of the cumulative distribution function of the variance ratio distribution |
TB04A | 1970 | J K Reid | Given function values at a set of points, find a cubic spline that interpolates the function values |
TB05A | 1970 | J K Reid | Given function values at a set of points, find a periodic cubic spline that interpolates the function values |
VA06A | 1970 | M J D Powell | To calculate the minimum of a general function of n values when values of the derivatives can be provided |
VE02A | 1970 | R Fletcher | To find a minimum of a quadratic function subject to linear constraints |
EC06C | 1971 | S Marlow | Given a complex Hermitian matrix, finds all its eigenvalues and eigenvectors |
EC07C | 1971 | S Marlow | Given a complex Hermitian matrix, finds all its eigenvalues and eigenvectors with a defined constraint |
EC08C | 1971 | S Marlow | Finds all the eigen values of a complex Hermitian tri-diagonal matrix |
FA03A | 1971 | A B Smith | Generate pseudo-random numbers from a Gaussian distribution with mean zero and standard deviation specified by the user |
FD01AS | 1971 | M Hopper | Given an integer n will compute 2n |
FD01BS | 1971 | M Hopper | Given an integer n will compute 16n |
MA18A | 1971 | A R Curtis, J K Reid | To solve a system of n linear algebraic equations when the coefficient matrix is large and sparse |
MA21A | 1971 | S Marlow, J K Reid | Given an n by n matrix a) solves the system of algebraic equations b) computes the inverse matrix c) computes the value of the determinant |
MA22A | 1971 | S Marlow, J K Reid | Given a symmetric positive definite n by n matrix a) solves the system of linear equations b) computes the inverse matrix c) computes the value of the determinant |
MA23A | 1971 | S Marlow, J K Reid | Given a complex n by n matrix and a complex right hand side, solve the complex linear equations, compute the inverse or evaluate the determinant |
MA24A | 1971 | S Marlow, J K Reid | Given a complex Hermitian n by n matrix and a complex right hand side, solve the complex linear equations, compute the inverse or evaluate the determinant |
MC10A | 1971 | J K Reid | Calculates scaling factors for the rows and columns of an n by n real matrix |
MC12A | 1971 | A R Curtis | Calculates scaling factors for the rows and columns of an n by n real sparse matrix |
ME06AS | 1971 | S Marlow | To evaluate the sum of a complex constant c and an inner product of two complex vectors accumulating intermediate results double length |
ME07A | 1971 | S Marlow | Calculates scaling factors for the rows and columns of an n by n complex matrix |
ME08A | 1971 | S Marlow | Transforms an n by n complex Hermitian matrix to a tri-diagonal Hermitian matrix |
OB01A | 1971 | A R Curtis | Simple editing facilities for the modification of source code |
SA01A | 1971 | M J Hopper, J Hedger | To evaluate the cumulative chi-squared probability function |
VA07A | 1971 | R Fletcher | To minimise a sum of squares of m functions of n variables when the values of the derivatives are available |
VA11A | 1971 | M D Hebden | To calculate the minimum of a general function of n variables when values of both the first and second derivatives can be provided |
VE03A | 1971 | R Fletcher | To find the minimum of a general function satisfying a set of linear constraints |
DA02A | 1972 | A R Curtis, A B Smith | To integrate a set of first order differential equations |
EA11A | 1972 | S Marlow | Calculates all the eigenvalues λi and eigenvector xi of the system Axi=λiBxi |
GA05A | 1972 | J K Reid | To efficiently determine whether a point (x,y) is interior or exterior to a given closed region |
KB11A | 1972 | M J Hopper | To sort n numbers from an array of m numbers |
MA15C | 1972 | J K Reid | To sole a system of n linear algebraic equations in n unknowns where the coefficient matrix is band structured, symmetric and positive definite |
MA17A | 1972 | J K Reid | To solve a system of n linear algebraic equations in n unknowns when the coefficient matrix is large and sparse and symmetric positive definite |
MA20A | 1972 | I Barrowdale | To solve an over-determined system of m linear equations in n unknowns |
MC09A | 1972 | J K Reid | Given a sparse matrix stored in a compact form evaluates the matrix-vector products |
NB01A | 1972 | M J D Powell | To find a real zero of a continuous function f(x) in a given interval |
NS03A | 1972 | J K Reid | To solve a system of m non-linear equations in n unknowns |
OB11A | 1972 | S Marlow, M J D Powell | To draw on the graph plotter a smooth, tangentially continuous curve |
OB12A | 1972 | S Marlow, M J D Powell | To draw on the graph plotter a cubic spline defined by its knots |
QA04A | 1972 | I G A Robinson, A B Smith | To evaluate the integral of f(x) between a and b to a specified relative or absolute accuracy |
QA05A | 1972 | C de Boor modified by A R Curtis | To evaluate the integral f(x) between a and b to a specified accuracy which may be relative or absolute |
TD02A | 1972 | J K Reid | Given n functions, evaluates an approximation to the Jacobian matrix |
TS01A | 1972 | M J D Powell | Finds a cubic spline approximation to a given smooth function within a prescribed accuracy |
VA08A | 1972 | R Fletcher | To find the minimum of a general function of n variables when values of the derivatives can be provided |
VA09A | 1972 | R Fletcher | To find the minimum of a general function of n variables when values of the derivatives can be provided |
VA10A | 1972 | R Fletcher | To find the minimum of a general function of n variables when the function is differentiable although values of the derivatives are not required |
VB01A | 1972 | R Fletcher | To calculate the best least squares fit to given data |
VC04A | 1972 | J Ledger | To fit a straight line to data |