Google
 

Trailing-Edge - PDP-10 Archives - tops10and20_integ_tools_v9_3-aug-86 - tools/crc/help/nag.lbr
There are no other files named nag.lbr in the archive.
E/
subLBR.1)4`G*A02-INDEX;)4`C05-INDEX;B)4`D05-INDEX}P)4`G01-INDEXM")4`&D02-INDEXoT)4`D03-INDEX2D:)4`D04-INDEX6~2)4`E01-INDEX71)4`E02-INDEX9O9)4` F01-INDEX@y)4`#F02-INDEXRp)4`%G05-INDEX]q	)4`(F03-INDEXfq?)4`%M01-INDEXi1S)4`)F05-INDEXq1)4`&G02-INDEXq5
()4`'G04-INDEX{])4`'G13-INDEX|v)4`(G08-INDEXv
)4`(X03-INDEXO)4`,H-INDEXRJ)4`)J06-INDEX%kxWJ06AAF#K%kxXJ06ABFn%kxXJ06ACFG%kxYJ06ADFG
%kxYJ06AEFQE%kxZJ06AFF%kxZJ06AGF"
%kx[J06AHF.%kx\J06AJF4-u%kx]J06BAF;"	%kx^J06CAFE!
%kx^J06CBFQ>%kxfJ06CCF`E8%kxfJ06CDFk~%kxgJ06EAF~<%kxhJ06EBFP
%kxiJ06FAFX[%kxjJ06GAF3%kxtJ06GDFb:(
%kxvJ06GEF
FC%kxwJ06GFF	"N%kxxJ06GZF>Xf%kxyJ06HAFG>	f%kxzJ06HBFQ$_%kx|J06WAFi1%kx|J06WBFm4d%kx}J06WCFu!%kx~J06WDFz:"%kyJ06WZF]%kyJ06XAFz%kyJ06XBF
~%kyJ06XDF!%kyJ06XEF'%kyJ06XFF5q%kyJ06XGF &8%kyJ06XHF$_~%kyJ06YAF(]&%ky	J06YBF-/%ky
J06YCF12O%ky
J06YDF6U%ky
J06YGF:Wt%kyJ06YJFG
%kyJ06YKFL w%kyJ06YLFS#%kyJ06YMFZ:%kyJ06ZAF^Y^%kyJ06ZBFc7%%kyJ06ZCFf\
%kyJ06ZDFkfX%kyS-INDEXXp?})4`*P01-INDEXv<#)4`)C02-INDEXDEXvQ)4`X01-INDEXw1)4`*X02-INDEXwG9)4`+X04-INDEX{7)4`,SUMMARY-INDEX{8H)4H|C06-INDEX,)4`D01-INDEX-X)4`E04-INDEX)4`"F04-INDEX"
A02ABF Modulus of a complex number
A02ACF Quotient of two complex numbers

C05ADF Zero of continuous function of one variable,
 in a given interval, Bus & Dekker algorithm
C05AGF Zero of continuous function of one variable,
 from a given starting value,
 searching for interval and Bus & Dekker algorithm
C05AJF Zero of continuous function of one variable,
 from a given starting value, continuation method
C05AVF Zero of continuous function of one variable,
 search for interval containing zero (reverse communication)
C05AXF Zero of continuous function of one variable,
 from a given starting value, continuation method (reverse communication)
C05AZF Zero of continuous function of one variable,
 in a given interval, Bus & Dekker algorithm (reverse communication)
C05NBF Solution of a system of non-linear equations (easy-to-use),
 using function values only
C05NCF Solution of a system of non-linear equations (comprehensive),
 using function values only
C05PBF Solution of a system of non-linear equations (easy-to-use),
 using first derivatives
C05PCF Solution of a system of non-linear equations (comprehensive),
 using first derivatives
C05ZAF Check user's routine for calculating first derivatives

D05AAF Linear non-singular Fredholm integral equation, 2nd kind, split kernel
D05ABF Linear non-singular Fredholm integral equation, 2nd kind, smooth kernel

G01AAF Simple descriptive statistics, 1 variable, from raw data
G01ABF Simple descriptive statistics, 2 variables, from raw data
G01ADF Simple descriptive statistics, 1 variable, from frequency table
G01AEF Frequency table from raw data
G01AFF Two-way contingency table analysis
G01AGF Lineprinter scatterplot of 2 variables
G01AHF Lineprinter scatterplot of 1 variable against Normal scores
G01AJF Lineprinter histogram of 1 variable
G01BAF Student's t-distribution
G01BBF F (variance ratio) distribution
G01BCF Chi-square distribution
G01BDF Beta distribution of 1st kind
G01CAF Inverse Student's t-distribution
G01CBF Inverse F (variance ratio) distribution
G01CCF Inverse Chi-square distribution
G01CDF Inverse Beta distribution of 1st kind
G01CEF Inverse Normal distribution
G01DAF Calculation of Normal scores

D02AGF System of ordinary differential equations, boundary value problem,
 shooting and matching technique, general parameters to be determined,
 allowing interior matching-point
D02BAF System of ordinary differential equations, initial value problem,
 Runge-Kutta-Merson method, (simple driver), over a range
D02BBF System of ordinary differential equations, initial value problem,
 Runge-Kutta-Merson method, (simple driver),
 over a range with intermediate output
D02BDF System of ordinary differential equations, initial value problem,
 Runge-Kutta-Merson method, (simple driver),
 over a range with global error estimate and stiffness check
D02BGF System of ordinary differential equations, initial value problem,
 Runge-Kutta-Merson method, (simple driver),
 until a component of the solution attains a given value
D02BHF System of ordinary differential equations, initial value problem,
 Runge-Kutta-Merson method, (simple driver),
 until a function of the solution is zero
D02CAF System of ordinary differential equations, initial value problem,
 variable-order variable-step Adams method, (simple driver),
 over a range
D02CBF System of ordinary differential equations, initial value problem,
 variable-order variable-step Adams method, (simple driver),
 over a range with intermediate output
D02CGF System of ordinary differential equations, initial value problem,
 variable-order variable-step Adams method, (simple driver),
 until a component of the solution attains a given value
D02CHF System of ordinary differential equations, initial value problem,
 variable-order variable-step Adams method, (simple driver),
 until a function of the solution is zero
D02EAF System of ordinary differential equations, initial value problem,
 variable-order variable-step Gear method for stiff systems, (simple driver),
 over a range
D02EBF System of ordinary differential equations, initial value problem,
 variable-order variable-step Gear method for stiff systems, (simple driver),
 over a range with intermediate output
D02EGF System of ordinary differential equations, initial value problem,
 variable-order variable-step Gear method for stiff systems, (simple driver),
 until a component of the solution attains a given value
D02EHF System of ordinary differential equations, initial value problem,
 variable-order variable-step Gear method for stiff systems, (simple driver),
 until a function of the solution is zero
D02GAF System of ordinary differential equations, boundary value problem,
 finite difference technique with deferred correction, Pereyra's method,
 simple non-linear problem
D02GBF System of ordinary differential equations, boundary value problem,
 finite difference technique with deferred correction, Pereyra's method,
 general linear problem
D02HAF System of ordinary differential equations, boundary value problem,
 shooting and matching technique, boundary values to be determined
D02HBF System of ordinary differential equations, boundary value problem,
 shooting and matching technique, general parameters to be determined
D02JAF System of ordinary differential equations, boundary value problem,
 collocation and least-squares, single N-th order linear equation
D02JBF System of ordinary differential equations, boundary value problem,
 collocation and least-squares, system of 1st order linear equations
D02KAF Second-order Sturm-Liouville problems,
 regular system, finite range, eigenvalue only
D02KDF Second-order Sturm-Liouville problems,
 regular/singular system, finite/infinite range, eigenvalue only
D02KEF Second-order Sturm-Liouville problems,
 regular/singular system, finite/infinite range, eigenvalue and eigenfunction
D02PAF System of ordinary differential equations, initial value problem,
 integrating over a range, (facilities for error-control and interrupts),
 Runge-Kutta-Merson method
D02QAF System of ordinary differential equations, initial value problem,
 integrating over a range, (facilities for error-control and interrupts),
 variable-order variable step Adams method
D02QBF System of ordinary differential equations, initial value problem,
 integrating over a range, (facilities for error-control and interrupts),
 variable-order variable step Gear method for stiff systems
D02RAF System of ordinary differential equations, boundary value problem,
 finite difference technique with deferred correction, Pereyra's method,
 general non-linear problem, with continuation facility
D02SAF System of ordinary differential equations, boundary value problem,
 shooting and matching technique, general parameters to be determined,
 subject to extra algebraic equations
D02TGF System of ordinary differential equations, boundary value problem,
 collocation and least-squares, system of N-th order linear equations
D02XAF System of ordinary differential equations, initial value problem,
 interpolation of solution produced by D02PAF, all components
D02XBF System of ordinary differential equations, initial value problem,
 interpolation of solution produced by D02PAF, one component
D02XGF System of ordinary differential equations, initial value problem,
 interpolation of solution produced by D02QAF or D02QBF, all components
D02XHF System of ordinary differential equations, initial value problem,
 interpolation of solution produced by D02QAF or D02QBF, one component
D02YAF System of ordinary differential equations, initial value problem,
 Runge-Kutta-Merson method for integration over one step

D03EAF Partial differential equations, elliptic,
 Laplace's equation in 2-D for an arbitrary domain
D03EBF Partial differential equations, elliptic,
 Solution of finite difference equations by Strongly Implicit Procedure,
 for 5-point 2-D molecule, iterate to convergence
D03ECF Partial differential equations, elliptic,
 Solution of finite difference equations by Strongly Implicit Procedure,
 for 7-point 3-D molecule, iterate to convergence
D03MAF Triangulation of a plane region
D03PAF Partial differential equations, parabolic,
 one space variable, method of lines, single equation
D03PBF Partial differential equations, parabolic,
 one space variable, method of lines, simple system
D03PGF Partial differential equations, parabolic,
 one space variable, method of lines, general system
D03UAF Partial differential equations, elliptic,
 Solution of finite difference equations by Strongly Implicit Procedure,
 for 5-point 2-D molecule, one iteration
D03UBF Partial differential equations, elliptic,
 Solution of finite difference equations by Strongly Implicit Procedure,
 for 7-point 3-D molecule, one iteration

D04AAF Numerical differentiation of a function of one real variable,
 derivatives up to order 14

E01AAF Interpolated values, one variable,
 data at unequally spaced points, Aitken's technique
E01ABF Interpolated values, one variable,
 data at equally spaced points, Everett's formula
E01ACF Interpolated values, two variables,
 data on rectangular grid, fitting bicubic spline
E01AEF Interpolating functions,
 polynomial interpolant, data may include derivative values
E01BAF Interpolating functions, cubic spline interpolant
E01RAF Interpolating functions, rational interpolant
E01RBF Interpolated values, evaluate rational interpolant computed by E01RAF

E02ACF Minimax curve fit by polynomials
E02ADF Least-squares curve fit by polynomials,
 arbitrary data points
E02AEF Evaluation of fitted functions, polynomial in one variable,
 from Chebyshev series form (simplified parameter list)
E02AFF Least-squares curve fit by polynomials,
 special data points (including interpolation)
E02AGF Least-squares curve fit by polynomials,
 arbitrary data points, values and derivatives may be constrained
E02AHF Derivative of fitted polynomial in Chebyshev series form
E02AJF Integral of fitted polynomial in Chebyshev series form
E02AKF Evaluation of fitted functions, polynomial in one variable,
 from Chebyshev series form
E02BAF Least-squares curve fit by cubic splines (including interpolation)
E02BBF Evaluation of fitted functions, cubic spline as E02BAF,
 function only
E02BCF Evaluation of fitted functions, cubic spline as E02BAF,
 function and derivatives
E02BDF Evaluation of fitted functions, cubic spline as E02BAF,
 definite integral
E02CAF Least-squares surface fit by polynomials, for data on lines
E02CBF Evaluation of fitted functions, polynomial in 2 variables as E02CAF
E02DAF Least-squares surface fit by bicubic splines
E02DBF Evaluation of fitted functions, bicubic spline as E02DAF
E02GAF L(1)-approximation by general linear function
E02GBF L(1)-approximation by general linear function
 subject to linear inequality constraints
E02GCF L(infinity)-approximation by general linear function
E02RAF Pade-approximants
E02RBF Evaluation of fitted functions, rational function as E02RAF
E02ZAF Sort 2-D data into panels for fitting or evaluating bicubic splines

F01AAF Real matrix, approximate inverse
F01ABF Real symmetric positive-definite matrix, accurate inverse
 (simplified parameter list)
F01ACF Real symmetric positive-definite matrix, accurate inverse
F01ADF Real symmetric positive-definite matrix, approximate inverse
F01AEF Reduction to standard form, generalised real symmetric eigenproblem,
 Ax=kBx with B positive-definite
F01AFF Backtransformation of eigenvectors from those of reduced forms,
 real symmetric eigenproblem Ax=kBx or ABx=kx, after reduction to standard
F01AGF Reduction by similarity transformations,
 real symmetric matrix to tridiagonal form, full storage
F01AHF Backtransformation of eigenvectors from those of reduced forms,
 real symmetric matrix, after reduction to tridiagonal, full storage
F01AJF Reduction by similarity transformations,
 real symmetric matrix to tridiagonal form, full storage,
 accumulating product of transformations
F01AKF Reduction by similarity transformations,
 real matrix to upper Hessenberg form
F01ALF Backtransformation of eigenvectors from those of reduced forms,
 real matrix, after reduction to upper Hessenberg
F01AMF Reduction by similarity transformations,
 complex matrix to upper Hessenberg form
F01ANF Backtransformation of eigenvectors from those of reduced forms,
 complex matrix, after reduction to upper Hessenberg
F01APF Reduction by similarity transformations,
 accumulation of product of transformations generated by F01AKF
F01ATF Balancing by diagonal similarity transformations, real matrix
F01AUF Backtransformation of eigenvectors from those of reduced forms,
 real matrix, after balancing
F01AVF Balancing by diagonal similarity transformations, complex matrix
F01AWF Backtransformation of eigenvectors from those of reduced forms,
 complex matrix, after balancing
F01AXF QR-factorisation, real m x n matrix (m>=n) with column pivoting
F01AYF Reduction by similarity transformations,
 real symmetric matrix to tridiagonal form, packed storage
F01AZF Backtransformation of eigenvectors from those of reduced forms,
 real symmetric matrix, after reduction to tridiagonal, packed storage
F01BCF Reduction by similarity transformations,
 complex Hermitian matrix to real tridiagonal form
F01BDF Reduction to standard form, generalised real symmetric eigenproblem,
 ABx=kx or BAx=kx with B positive-definite
F01BEF Backtransformation of eigenvectors from those of reduced forms,
 real symmetric eigenproblem BAx=kx, after reduction to standard
F01BLF Pseudo-inverse and rank of a real m x n matrix (m>=n)
F01BNF LLH-factorisation, complex Hermitian positive-definite matrix
F01BPF Complex Hermitian positive-definite matrix, inverse
F01BQF LDLT-factorisation of A+E, with A symmetric and E diagonal,
 packed storage
F01BRF LU-factorisation, real sparse matrix
F01BSF LU-factorisation, real sparse matrix with same sparsity pattern
 as a matrix previously factorised by F01BRF
F01BTF LU-factorisation, real matrix
F01BUF ULDLTUT-factorisation, real symmetric positive-definite band matrix
F01BVF Reduction to standard form, generalised real symmetric eigenproblem,
 Ax=kBx with A and B band matrices and B positive-definite
F01BWF Reduction by similarity transformations,
 real symmetric band matrix to tridiagonal form
F01BXF LLT-factorisation, real symmetric positive-definite matrix
F01CAF Null matrix initialisation
F01CBF Unit matrix initialisation
F01CDF Matrix addition
F01CEF Matrix subtraction
F01CFF Partial matrix copy
F01CGF Partial matrix addition
F01CHF Partial matrix subtraction
F01CKF Matrix multiplication
F01CLF Matrix multiplication by transpose
F01CMF Matrix copy
F01CNF Copy vector to row of matrix
F01CPF Vector copy
F01CQF Null vector initialisation
F01CRF Matrix transposition
F01CSF Multiply vector by symmetric matrix (packed storage)
F01DAF Scalar product added to initial value, real vectors,
 basic precision arithmetic
F01DBF Scalar product added to initial value, real vectors,
 additional precision arithmetic
F01DCF Scalar product, added to initial value, complex vectors,
 basic precision arithmetic
F01DDF Scalar product, added to initial value, complex vectors,
 additional precision arithmetic
F01DEF Scalar product of two real vectors
F01LBF LU-factorisation, real band matrix
F01LZF Reduction by similarity transformations,
 real matrix to bidiagonal form
F01MCF LDLT-factorisation, real symmetric positive-definite
 variable-bandwidth matrix
F01QAF QR-factorisation, real m x n matrix (m>=n)
F01QBF RQ-factorisation, real m x n matrix (m<=n)

F02AAF Real symmetric matrix, (black box), all eigenvalues
F02ABF Real symmetric matrix, (black box), all eigenvalues and eigenvectors
F02ADF Generalised real symmetric eigenproblem Ax=kBx with B positive-definite,
 (black box), all eigenvalues
F02AEF Generalised real symmetric eigenproblem Ax=kBx with B positive-definite,
 (black box), all eigenvalues and eigenvectors
F02AFF Real matrix, (black box), all eigenvalues
F02AGF Real matrix, (black box), all eigenvalues and eigenvectors
F02AJF Complex matrix, (black box), all eigenvalues
F02AKF Complex matrix, (black box), all eigenvalues and eigenvectors
F02AMF Real symmetric matrix, all eigenvalues and eigenvectors,
 after reduction to tridiagonal form by F01AJF, QL algorithm
F02ANF Complex upper Hessenberg matrix, all eigenvalues, LR algorithm
F02APF Real upper Hessenberg matrix, all eigenvalues, QR algorithm
F02AQF Real matrix, all eigenvalues and eigenvectors,
 after reduction to upper Hessenberg form by F01AKF & F01APF, QR algorithm
F02ARF Complex matrix, all eigenvalues and eigenvectors,
 after reduction to upper Hessenberg form by F01AMF, LR algorithm
F02AVF Real symmetric tridiagonal matrix, all eigenvalues, QL algorithm
F02AWF Complex Hermitian matrix, (black box), all eigenvalues
F02AXF Complex Hermitian matrix, (black box), all eigenvalues and eigenvectors
F02AYF Complex Hermitian matrix, all eigenvalues and eigenvectors,
 after reduction to real tridiagonal form by F01BCF, QL algorithm
F02BBF Real symmetric matrix, (black box), selected eigenvalues and eigenvectors
F02BCF Real matrix, (black box), selected eigenvalues and eigenvectors
F02BDF Complex matrix, (black box), selected eigenvalues and eigenvectors
F02BEF Real symmetric tridiagonal matrix, selected eigenvalues and eigenvectors,
 bisection and inverse iteration
F02BFF Real symmetric tridiagonal matrix, selected eigenvalues, bisection
F02BJF Generalised eigenproblem Ax=kBx, QZ algorithm, real matrices,
 (black box), all eigenvalues and (optionally) eigenvectors
F02BKF Real upper Hessenberg matrix, selected eigenvectors, inverse iteration
F02BLF Complex upper Hessenberg matrix, selected eigenvectors, inverse iteration
F02GJF Generalised eigenproblem Ax=kBx, QZ algorithm, complex matrices,
 (black box), all eigenvalues and (optionally) eigenvectors
F02SDF Generalised real eigenproblem Ax=kBx, with A and B band matrices,
 eigenvector by inverse iteration
F02SZF Singular value decomposition of a real bidiagonal matrix
F02WAF Singular value decomposition of a real m x n matrix,
 singular values and right singular vectors, (m>=n)
F02WBF Singular value decomposition of a real m x n matrix,
 singular values and right singular vectors, (m<=n)
F02WCF Singular value decomposition of a real m x n matrix,
 singular values and left and right singular vectors
F02WDF Singular value decomposition of a real m x n matrix,
 singular values and (optionally) right singular vectors,
 optionally or conditionally following QU-factorisation (m>=n)

G05CAF Pseudo-random real numbers, uniform distribution over (0.0,1.0)
G05CBF Initialise random number generating routines,
 to give a repeatable sequence
G05CCF Initialise random number generating routines,
 to give non-repeatable sequence
G05CFF Save state of random number generating routines
G05CGF Restore state of random number generating routines
G05DAF Pseudo-random real numbers, uniform distribution over (A,B)
G05DBF Pseudo-random real numbers, exponential distribution
G05DCF Pseudo-random real numbers, logistic distribution
G05DDF Pseudo-random real numbers, Normal distribution (A,B)
G05DEF Pseudo-random real numbers, lognormal distribution
G05DFF Pseudo-random real numbers, Cauchy distribution
G05DGF Pseudo-random real numbers, Gamma distribution (G,H)
G05DHF Pseudo-random real numbers, Chi-square distribution
G05DJF Pseudo-random real numbers, Student's t-distribution
G05DKF Pseudo-random real numbers, Snedecor's F-distribution
G05DLF Pseudo-random real numbers, Beta distribution of the 1st kind
G05DMF Pseudo-random real numbers, Beta distribution of the 2nd kind
G05DPF Pseudo-random real numbers, Weibull distribution
G05DYF Pseudo-random integer from uniform distribution
G05DZF Pseudo-random logical value
G05EAF Set up reference vector for multivariate Normal distribution
G05EBF Set up reference vector for generating pseudo-random integers,
 uniform distribution
G05ECF Set up reference vector for generating pseudo-random integers,
 Poisson distribution
G05EDF Set up reference vector for generating pseudo-random integers,
 binomial distribution
G05EEF Set up reference vector for generating pseudo-random integers,
 negative binomial distribution
G05EFF Set up reference vector for generating pseudo-random integers,
 hypergeometric distribution
G05EGF Set up reference vector for univariate ARMA time-series model
G05EHF Pseudo-random permutation of an integer vector
G05EJF Pseudo-random sample from an integer vector
G05EWF Generate next term from ARMA time-series using G05EGF vector
G05EXF Set up reference vector from supplied cumulative distribution function
 or probability distribution function
G05EYF Pseudo-random integer from reference vector
G05EZF Pseudo-random multivariate Normal vector from reference vector

F03AAF Determinant, (black box), real matrix
F03ABF Determinant, (black box), real symmetric positive-definite matrix
F03ACF Determinant, (black box), real symmetric positive-definite band matrix
F03ADF Determinant, (black box), complex matrix
F03AEF LLT-factorisation and determinant,
 real symmetric positive-definite matrix
F03AFF LU-factorisation and determinant, real matrix
F03AGF LLT-factorisation and determinant,
 real symmetric positive-definite band matrix
F03AHF LU-factorisation and determinant, complex matrix
F03AMF Determinant of a complex Hermitian positive-definite matrix,
 after factorisation by F01BNF


M01AAF Leaving vector unchanged provide an index to its sorted order,
 real numbers, ascending order
M01ABF Leaving vector unchanged provide an index to its sorted order,
 real numbers, descending order
M01ACF Leaving vector unchanged provide an index to its sorted order,
 integers, ascending order
M01ADF Leaving vector unchanged provide an index to its sorted order,
 integers, descending order
M01AEF Sort the rows of a matrix on keys in an index column, real numbers,
 ascending order
M01AFF Sort the rows of a matrix on keys in an index column, real numbers,
 descending order
M01AGF Sort the rows of a matrix on keys in an index column, integers,
 ascending order
M01AHF Sort the rows of a matrix on keys in an index column, integers,
 descending order
M01AJF Sort a vector and provide an index to the original order, real numbers,
 ascending order
M01AKF Sort a vector and provide an index to the original order, real numbers,
 descending order
M01ALF Sort a vector and provide an index to the original order, integers,
 ascending order
M01AMF Sort a vector and provide an index to the original order, integers,
 descending order
M01ANF Sort a vector, Singleton's implementation of Quicksort, real numbers,
 ascending order
M01APF Sort a vector, Singleton's implementation of Quicksort, real numbers,
 descending order
M01AQF Sort a vector, Singleton's implementation of Quicksort, integers,
 ascending order
M01ARF Sort a vector, Singleton's implementation of Quicksort, integers,
 descending order
M01BAF Sort a vector, Singleton's implementation of Quicksort, character data,
 reverse alphanumeric order
M01BBF Sort a vector, Singleton's implementation of Quicksort, character data,
 alphanumeric order
M01BCF Sort the columns of a matrix on keys in an index row, character data,
 reverse alphanumeric order
M01BDF Sort the columns of a matrix on keys in an index row, character data,
 alphanumeric order

F05AAF Schmidt orthogonalisation of N vectors of order M
F05ABF Approximate 2-norm of a vector

G02BAF Pearson product-moment correlation coefficients, all variables,
 no missing values
G02BBF Pearson product-moment correlation coefficients, all variables,
 casewise treatment of missing values
G02BCF Pearson product-moment correlation coefficients, all variables,
 pairwise treatment of missing values
G02BDF "Correlation-like" coefficients (about zero), all variables,
 no missing values
G02BEF "Correlation-like" coefficients (about zero), all variables,
 casewise treatment of missing values
G02BFF "Correlation-like" coefficients (about zero), all variables,
 pairwise treatment of missing values
G02BGF Pearson product-moment correlation coefficients, subset of variables,
 no missing values
G02BHF Pearson product-moment correlation coefficients, subset of variables,
 casewise treatment of missing values
G02BJF Pearson product-moment correlation coefficients, subset of variables,
 pairwise treatment of missing values
G02BKF "Correlation-like" coefficients (about zero), subset of variables,
 no missing values
G02BLF "Correlation-like" coefficients (about zero), subset of variables,
 casewise treatment of missing values
G02BMF "Correlation-like" coefficients (about zero), subset of variables,
 pairwise treatment of missing values
G02BNF Kendall/Spearman non-parametric rank correlation coefficients,
 no missing values, overwriting input data
G02BPF Kendall/Spearman non-parametric rank correlation coefficients,
 casewise treatment of missing values, overwriting input data
G02BQF Kendall/Spearman non-parametric rank correlation coefficients,
 no missing values, preserving input data
G02BRF Kendall/Spearman non-parametric rank correlation coefficients,
 casewise treatment of missing values, preserving input data
G02BSF Kendall/Spearman non-parametric rank correlation coefficients,
 pairwise treatment of missing values
G02CAF Simple linear regression with constant term, no missing values
G02CBF Simple linear regression without constant term, no missing values
G02CCF Simple linear regression with constant term, missing values
G02CDF Simple linear regression without constant term, missing values
G02CEF Service routines for multiple linear regression,
 select elements from vectors and matrices
G02CFF Service routines for multiple linear regression,
 re-order elements of vectors and matrices
G02CGF Multiple linear regression,
 from correlation coefficients, with constant term
G02CHF Multiple linear regression,
 from "correlation-like" coefficients, without constant term
G02CJF Multiple linear regression,
 from original data, several dependent variables

G04ADF Three-way analysis of variance, Latin square design
G04AEF One-way analysis of variance, subgroups of unequal size
G04AFF Two-way analysis of variance,
 cross-classification, subgroups of equal size
G04AGF Two-way analysis of variance,
 hierarchial classification, subgroups of unequal size

G13AAF Univariate series, seasonal and non-seasonal differencing
G13ABF Univariate series, sample autocorrelation function
G13ACF Univariate series, partial autocorrelations from autocorrelations
G13ADF Univariate series, preliminary estimation of ARMA model
G13AEF Univariate series, estimation of seasonal ARIMA model (comprehensive)
G13AFF Univariate series, estimation of seasonal ARIMA model (easy-to-use)
G13AGF Univariate series, update state set for forecasting
G13AHF Univariate series, forecasting from state set
G13AJF Univariate series, state set and forecasts
 from fully specified seasonal ARIMA model
G13BAF Bivariate series, filtering a time series by an ARIMA model
G13BCF Bivariate series, cross correlations
G13CAF Univariate series, smoothed sample spectrum
 using rectangular, Bartlett, Tukey or Parzen lag window
G13CBF Univariate series, smoothed sample spectrum
 using spectral smoothing by the trapezium frequency (Daniell) window
G13CCF Bivariate series, smoothed sample cross spectrum
 using rectangular, Bartlett, Tukey or Parzen lag window
G13CDF Bivariate series, smoothed sample cross spectrum
 using spectral smoothing by the trapezium frequency (Daniell) window
G13CEF Bivariate series, cross amplitude spectrum, squared coherency,
 bounds for univariate and bivariate (cross) spectra
G13CFF Bivariate series, gain, phase,
 bounds for univariate and bivariate (cross) spectra
G13CGF Bivariate series, noise spectrum, bounds,
 impulse response function and its standard error

G08AAF Sign test on two paired samples
G08ABF Wilcoxon matched pairs signed ranks test on two paired samples
G08ACF Median test on two samples of unequal size
G08ADF Mann-Whitney U-test on two samples of unequal size
G08AEF Friedman two-way analysis of variance on k matched samples
G08AFF Kruskal-Wallis one-way analysis of variance on k samples of unequal size
G08BAF Mood's and David's tests on two samples of unequal size
G08CAF Kolmogorov-Smirnov one-sample distribution test
G08DAF Kendall's coefficient of concordance

X03AAF Real innerproduct added to initial value, basic/additional precision
X03ABF Complex innerproduct added to initial value, basic/additional precision

H01ABF Linear programming, simplex algorithm, one iteration
H01ADF Linear programming, revised simplex method
H01AFF Find feasible point or vertex satisfying linear constraints
H01BAF Linear programming, numerically stable form of simplex method

H02AAF Quadratic programming, Beale's method
H02BAF Integer linear programming, Gomory's method with Wilson's cuts

H03ABF Transportation problem

J06 

 J06AAF Pair of axes for the current data region, automatic annotation
 J06ABF Pair of axes for the current data region, user-specifiable
  annotation
 J06ACF Grid for the current data region, automatic annotation
 J06ADF Grid for the current data region, user-specifiable annotation
 J06AEF Scaled border for the current data region, automatic annotation
 J06AFF Scaled border for the current data region, user-specifiable
  annotation
 J06AGF Single axis under user control
 J06AHF Plot title, centred at the top of the current data region
 J06AJF Axis title, centred at the side or bottom of the current data
  region
 J06BAF Plot data points with optional straight lines and markers
 J06CAF Plot single-valued curve through data points
 J06CBF Plot single-valued curve through data points, called point-wise
 J06CCF Plot possibly multi-valued curve through data points
 J06CDF Plot possibly multi-valued curve through data points, called
  point-wise
 J06EAF Plot user-supplied function over specified range
 J06EBF Plot user-supplied function over specified range, called
  point-wise
 J06FAF Plot cubic spline in an interval, from its B-spline
  representation
 J06GAF Contour map, (easy-to-use), data on regular rectangular grid
 J06GBF Contour map, (comprehensive), data on regular rectangular grid
 J06GCF Contour map, (easy-to-use), data on irregular rectangular grid
 J06GDF Contour map, (comprehensive), data on irregular rectangular
  grid
 J06GEF Contour map, (easy-to-use), user-supplied function
 J06GFF Contour map, (comprehensive), user-supplied function
 J06GZF Key to contour plot
 J06HAF Isometric surface view, data on regular rectangular grid,
  easy-to-use
 J06HBF Isometric surface view, data on regular rectangular grid,
  comprehensive
J06AAF ROUTINE
 J06AAF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06AAF//  draws a pair of  annotated  axes  to fit  the
  current data region.

 B. Specification
 ================

        SUBROUTINE //J06AAF//

 C. Parameters
 =============

   None.

 D. Error Indicators and Warnings
 ================================

   None.

 ------
 END OF J06AAF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06ABF ROUTINE
 J06ABF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06ABF//  draws a pair of  annotated  axes  to fit  the
  current data region. The tick mark  interval on each axis
  may be specified by the user or calculated automatically.

 B. Specification
 ================

        SUBROUTINE //J06ABF// (DX, DY)
  C     //real// DX, DY

 C. Parameters
 =============

 DX - //real//.

   On entry, DX must specify the X axis tick mark  interval
   size in user co-ordinates.

   Unchanged on exit.

 DY - //real//.

   On entry, DY must specify the Y axis tick mark  interval
   size in user co-ordinates.

   Unchanged on exit.

 D. Error Indicators and Warnings
 ================================

   None.

 ------
 END OF J06ABF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06ACF ROUTINE
 J06ACF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06ACF// draws a grid (or graticule) to fit the current
  data region.

 B. Specification
 ================

        SUBROUTINE //J06ACF//

 C. Parameters
 =============

   None.

 D. Error Indicators and Warnings
 ================================

   None.

 ------
 END OF J06ACF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06ADF ROUTINE
 J06ADF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06ADF// draws a grid (or graticule) to fit the current
  data region. The grid line  interval for each axis may be
  specified by the user or calculated automatically.

 B. Specification
 ================

        SUBROUTINE //J06ADF// (DX, DY)
  C     //real// DX, DY

 C. Parameters
 =============


 DX - //real//.

   On entry, DX must specify the X axis grid line  interval
   in user co-ordinates.

   Unchanged on exit.

 DY - //real//.

   On entry, DY must specify the Y axis grid line  interval
   in user co-ordinates.

   Unchanged on exit.

 D. Error Indicators and Warnings
 ================================

   None.

 ------
 END OF J06ADF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06AEF ROUTINE
 J06AEF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06AEF//  draws a scaled border to fit the current data
  region.

 B. Specification
 ================

        SUBROUTINE //J06AEF//

 C. Parameters
 =============

   None.

 D. Error Indicators and Warnings
 ================================

   None.

 ------
 END OF J06AEF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06AFF ROUTINE
 J06AFF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06AFF//  draws a scaled border to fit the current data
  region. The tick mark  intervals  may be specified by the
  user or calculated automatically.

 B. Specification
 ================

        SUBROUTINE //J06AFF// (DX, DY)
  C     //real// DX, DY

 C. Parameters
 =============

 DX - //real//.

   On entry, DX must specify the X axis tick mark  interval
   in user co-ordinates.

   Unchanged on exit.

 DY - //real//.

   On entry, DY must specify the Y axis tick mark  interval
   in user co-ordinates.

   Unchanged on exit.

 D. Error Indicators and Warnings
 ================================

   None.

 ------
 END OF J06AFF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06AGF ROUTINE
 J06AGF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06AGF//  draws a single  axis with user  control  over
  range, annotation and positioning.

 B. Specification
 ================

        SUBROUTINE //J06AGF// (IAXIS, AMIN, AMAX,
       1   MAXINT, DINT, ILABS, THRU, LABTM,
       2   NFORM, NDIM)
  C     INTEGER IAXIS, MAXINT, ILABS,
  C    1   LABTM(NDIM), NFORM, NDIM
  C     //real// AMIN, AMAX, DINT, THRU

 C. Parameters
 =============


 IAXIS - INTEGER.

   On entry,  IAXIS must  specify  the axis to be drawn. If
   IAXIS.LE.1, the X axis will be drawn. If IAXIS.GT.1, the
   Y axis will be drawn.

   Unchanged on exit.

 AMIN - //real//.
 AMAX - //real//.

   On entry,  AMIN and AMAX must  specify  the range of the
   axis in user  co-ordinates.  If AMIN = AMAX  the call is
   ignored.

   Unchanged on exit.

 MAXINT - INTEGER.

   On entry, MAXINT must specify the maximum number of tick
   mark   intervals  required.  If  MAXINT.LT.1,  then  the
   interval size DINT is used.

   Unchanged on exit.

 DINT - //real//.

   On entry, DINT must specify the required  interval  size
   (if  MAXINT.LT.1). If DINT.LE.0.0 then an  automatically
   calculated  interval size is used. If MAXINT.GE.1,  DINT
   is not referenced.

   Unchanged on exit.

 ILABS - INTEGER.

   On entry,  ILABS must  specify the tick mark  annotation
   option required:-

     -2  user-supplied labels centred between tick
         marks

     -1  user-supplied labels centred on tick marks
     0   full automatic annotation
     1   tick marks only
     2   no annotation or tick marks

   If, on entry, ILABS is out of range, then  ILABS = 1  is
   assumed.

   Unchanged on exit.

 THRU - //real//.

   On entry, THRU must  specify the point on the other axis
   through which this axis will be drawn.

   Unchanged on exit.

 LABTM - INTEGER array of DIMENSION (NDIM).

   Before entry, LABTM must contain the user-supplied  tick
   mark labels, for use if ILABS = -1 or -2. If ILABS.GE.0,
   a dummy array of at least one element must be  supplied,
   but is not referenced.

   Unchanged on exit.

 NFORM - INTEGER.

   On entry, NFORM must specify the format of the labels in
   LABTM, if any. The labels  will be assumed to be held in
   Aw format, with w = NFORM.
   1.LE.NFORM.LE.20.

   If    NFORM.GT.20,    then  NFORM = 20  is  assumed.  If
   ILABS.LT.0 and NFORM.LT.1 then ILABS = 1 is assumed.

   Unchanged on exit.

 NDIM - INTEGER.

   On entry, NDIM must specify the  dimension  of the array
   LABTM.
   NDIM.GE.1.

   Unchanged on exit.

 D. Error Indicators and Warnings
 ================================

   None.

 ------
 END OF J06AGF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06AHF ROUTINE
 J06AHF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06AHF//  draws a centred title of up to 80  characters
  at the top of the data region.

 B. Specification
 ================

        SUBROUTINE //J06AHF// (ITITLE, NCHARS)
  C     INTEGER ITITLE(NCHARS), NCHARS

 C. Parameters
 =============


 ITITLE - INTEGER array of DIMENSION (NCHARS).

   Before  entry,  ITITLE  must  contain  the  title  to be
   output.   The  title  must   be  stored  with  //nchar//
   characters  to each word. The value of //nchar//  can be
   found  in the  appropriate  NAG  Library  implementation
   document,  in the  section  on  Chapter  M01. Note  that
   although  only the first NCHARS/n  (where n =  //nchar//
   elements  of ITITLE are used, ITITLE must be declared to
   be of length NCHARS.

   Alternatively,  a Hollerith  string of length NCHARS may
   be supplied.

   The contents of ITITLE are unchanged on exit.

 NCHARS - INTEGER.

   On entry,  NCHARS must specify the number of  characters
   in the title  (which  is equal to the  dimension  of the
   array ITITLE, if used).
   1.LE.NCHARS.LE.80.

   Unchanged on exit.

 D. Error Indicators and Warnings
 ================================

   None.

 ------
 END OF J06AHF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06AJF ROUTINE
 J06AJF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06AJF//  draws an axis title of up to 30 characters in
  length.

 B. Specification
 ================

        SUBROUTINE //J06AJF// (IAXIS, ITITLE, NCHARS)
  C     INTEGER IAXIS, ITITLE(NCHARS), NCHARS

 C. Parameters
 =============


 IAXIS - INTEGER.

   On entry,  IAXIS must  specify the axis to be titled. If
   IAXIS.LE.1,  the X axis will be titled.  If  IAXIS.GT.1,
   the Y axis will be titled.

   Unchanged on exit.

 ITITLE - INTEGER array of DIMENSION (NCHARS).

   Before  entry,  ITITLE  must  contain  the  title  to be
   output.   The  title  must   be  stored  with  //nchar//
   characters  to each word. The value of //nchar//  can be
   found  in the  appropriate  NAG  Library  implementation
   document,  in the  section  on  Chapter  M01. Note  that
   although only the first NCHARS/n (where n =   //nchar)//
   elements  of ITITLE are used, ITITLE must be declared to
   be of length NCHARS.

   Alternatively,  a Hollerith  string of length NCHARS may
   be supplied.

   The contents of ITITLE are unchanged on exit.

 NCHARS - INTEGER.

   On entry,  NCHARS must specify the number of  characters
   in the title  (which  is equal to the  dimension  of the
   array ITITLE, if used).
   1.LE.NCHARS.LE.30.

   Unchanged on exit.

 D. Error Indicators and Warnings
 ================================

   None.

 ------
 END OF J06AJF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06BAF ROUTINE
 J06BAF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06BAF//  plots a  series  of data  points,  optionally
  connecting the points with straight lines, and optionally
  marking each point with a chosen symbol.

 B. Specification
 ================

        SUBROUTINE //J06BAF// (X, Y, N, ITYPE, KSYM,
       1   IFAIL)
  C     INTEGER N, ITYPE, KSYM, IFAIL
  C     //real// X(N), Y(N)

 C. Parameters
 =============


 X - //real// array of DIMENSION at least (N).

   On entry, X(i) must contain x(i), the X  co-ordinate  of
   the i(th) data point to be plotted.

   Unchanged on exit.

 Y - //real// array of DIMENSION at least (N).

   On entry, Y(i) must contain y(i), the Y  co-ordinate  of
   the i(th) data point to be plotted.

   Unchanged on exit.

 N - INTEGER.

   On entry, N must specify the number of data points to be
   plotted. N.GE.1.

   Unchanged on exit.

 ITYPE - INTEGER.

   On entry, ITYPE must specify the option required -

    0 - symbols only are plotted
    1 - lines only
    2 - both lines and symbols
   -1 - as  for ITYPE = 1, but in  addition a line is drawn
        from   (X(N),Y(N))  to  (X(1),Y(1))  to  close  the
        polygon
   -2 - as for ITYPE = 2,  but again the polygon is closed.

   If ITYPE is out of range, then the value 1 is assumed.

   Unchanged on exit.

 KSYM - INTEGER.

   On entry, KSYM must  specify the  plotting  symbol to be
   used to mark the data points.
   (1.LE.KSYM.LE.9).

   The  symbols  available  with  each  version  of the NAG
   Graphical  Interface are  reproduced  in the Appendix to
   the Essential Introduction to the Supplement Manual.

   Unchanged on exit.

 IFAIL - INTEGER.

   Before  entry, IFAIL must be assigned a value. For users
   not familiar with this  parameter  (described in Chapter
   P01 of the NAG FORTRAN Library Manual or the NAG On-line
   Information  Supplement)  the  recommended  value  is 0.
   Unless the routine  detects an error (see next section),
   IFAIL contains 0 on exit.

 D. Error Indicators and Warnings
 ================================


 Errors detected by the routine:-


   IFAIL = 1

     N.LT.1. No data points.

 ------
 END OF J06BAF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06CAF ROUTINE
 J06CAF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06CAF// draws a smooth  single-valued  curve through a
  set of data points.

 B. Specification
 ================

        SUBROUTINE //J06CAF// (AX, AY, N, METHOD,
       1   IFAIL)
  C     INTEGER N, METHOD, IFAIL
  C     //real// AX(N), AY(N)

 C. Parameters
 =============

 AX - //real// array of DIMENSION at least (N).
 AY - //real// array of DIMENSION at least (N).

   Before    entry,   AX(i),   AY(i)  must  contain  the  X
   co-ordinate   and   Y  co-ordinate  of  the  data  point
   (x(i),y(i))           for    i = 1,2,...,n.  The  values
   AX(1),AX(2),...,AX(N)  must be either non-decreasing, or
   non-increasing.

   Unchanged on exit.

 N - INTEGER.

   On  entry, N must  specify  the  number of data  points.
   N.GE.2.

   Unchanged on exit.

 METHOD - INTEGER.

   On entry,  METHOD must specify the choice of method used
   to estimate the slopes of the curve at data points.

   METHOD = 1 - Piecewise monotonic method
   METHOD = 2 - Cubic Bessel method

   Generally     speaking,    METHOD = 1   gives  a  rather
   tight-fitting  curve, METHOD = 2 a somewhat looser curve
   (see  plots   from    example  program).  METHOD = 2  is
   recommended as an initial try.

   Unchanged on exit.

 IFAIL - INTEGER.

   For this routine, the normal use of IFAIL is extended to
   control  the  printing  of  error  messages  as well  as
   specifying  hard or soft failure (see Chapter P01 of the
   NAG FORTRAN  Library  Manual or NAG On-line  Information
   Supplement).

   Before  entry,  IFAIL  must be set to a value  with  the
   decimal  expansion ba, where each of the decimal  digits
   b, a must have the value 0 or 1.

   a = 0 specifies hard failure, otherwise soft failure.
   b = 0 suppresses    error    messages,  otherwise  error
         messages will be printed (see next section).

   The  recommended  value  for  inexperienced  users is 10
   (i.e. hard failure with error messages printed).

   Unless the routine  detects an error (see next section),
   IFAIL contains 0 on exit.

 D. Error Indicators and Warnings
 ================================

 Errors detected by the routine:-

   For each error, the routine outputs an explanatory error
   message  on the  current  error  message  unit  (see NAG
   FORTRAN Library routine  //X04AAF//),  unless suppressed
   by the value of IFAIL on entry.

   IFAIL = 1

     On entry, N.LT.2
            or METHOD.NE.1 or 2.

   IFAIL = 2

     X co-ordinates of data points not monotonic.

     AX(I), I = 1,2,...,N, must satisfy either

       AX(1).LE.AX(2).LE.....LE.AX(N)
     or
       AX(1).GE.AX(2).GE.....GE.AX(N).

   In both cases no curve is drawn.

 ------
 END OF J06CAF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06CBF ROUTINE
 J06CBF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06CBF// draws a smooth  single-valued  curve through a
  set of data  points, the routine  being  called  once for
  each point.

 B. Specification
 ================

        SUBROUTINE //J06CBF// (X, Y, IXCODE, G,
       1   IGCODE, TOLX, STORE, IFAIL)
  C     INTEGER IXCODE, IGCODE, IFAIL
  C     //real// X, Y, G, TOLX, STORE(15)

 C. Parameters
 =============

 X - //real//.
 Y - //real//.

   On entry, X,Y must contain the X and Y  co-ordinates  of
   the  next data  point on the  curve.  The  successive  X
   co-ordinates     must    be   either  non-decreasing  or
   non-increasing.

   Unchanged on exit.

 IXCODE - INTEGER.

   On entry,  IXCODE must  specify the type of point  (X,Y)
   supplied and selects the method of drawing  required, as
   follows:-


   IXCODE = 1

     means  that  (X,Y) is the  first  point  and that  the
     piecewise monotonic method is to be used.

   IXCODE = 2

     means that (X,Y) is the first point and that the cubic
     Bessel method is to be used.

   IXCODE = 0

     means that (X,Y) is an intermediate point.

   IXCODE = 9

     means that (X,Y) is the last point.

   Unchanged on exit.

 G - //real//.

   On entry, if IGCODE = 1, G must  specify to the slope of
   the curve at (X,Y) as supplied by the user.

   Unchanged on exit.

 IGCODE - INTEGER.

   On entry,  IGCODE must be set to 0 if the slope at (X,Y)
   is to be estimated by the routine,  and to 1 if supplied
   by the user in G.

   Unchanged on exit.

 TOLX - //real//.

   On entry, TOLX must be set to the smallest difference in
   successive X co-ordinates to be regarded as significant.
   Any point whose X co-ordinate  differs by less than TOLX
   from that of its predecessor will be ignored.

   Unchanged on exit.

 STORE - //real// array of DIMENSION at least (15).

   Used as  workspace.  The  contents  of STORE must not be
   altered between calls to the routine.

 IFAIL - INTEGER.

   For this routine, the normal use of IFAIL is extended to
   control  the  printing  of  error  messages  as well  as
   specifying  hard or soft failure (see Chapter P01 of the
   NAG FORTRAN  Library  manual or NAG On-line  Information
   Supplement).

   Before  entry,  IFAIL  must be set to a value  with  the
   decimal  expansion ba, where each of the decimal  digits
   b, a must have the value 0 or 1.

   a = 0 specifies hard failure, otherwise soft failure.
   b = 0 suppresses    error    messages,  otherwise  error
         messages will be printed (see next section).

   The  recommended  value  for  inexperienced  users is 10
   (i.e. hard failure with error messages printed).

   Unless the routine  detects an error (see next section),
   IFAIL contains 0 on exit.

 D. Error Indicators and Warnings
 ================================

 Errors detected by the routine:-

   For each error, the routine outputs an explanatory error
   message  on the  current  error  message  unit  (see NAG
   FORTRAN Library routine  //X04AAF//),  unless suppressed
   by the value of IFAIL on entry.

   IFAIL = 1

     Illegal  value of  IXCODE  or  IGCODE  on  entry,  see
     section C.

   IFAIL = 2

     X    co-ordinates   of   data  points  not  monotonic.
     Successive       X     co-ordinates   must  be  either
     non-decreasing or non-increasing.

   In these cases no curve section is drawn.

 ------
 END OF J06CBF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06CCF ROUTINE
 J06CCF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06CCF// draws a smooth, possibly  multi-valued,  curve
  through  a set of data  points.  The curve may be open or
  closed.

 B. Specification
 ================

        SUBROUTINE //J06CCF// (AX, AY, N, METHOD,
       1   IFAIL)
  C     INTEGER N, METHOD, IFAIL
  C     //real// AX(N), AY(N)

 C. Parameters
 =============

 AX - //real// array of DIMENSION at least (N).
 AY - //real// array of DIMENSION at least (N).

   Before  entry,  AX(i),AY(i)  must  contain  the X and  Y
   co-ordinates  of the (i)th data point,  (x(i),y(i)), for
   i = 1,2,...,N.

   Unchanged on exit.

 N - INTEGER.

   Before  entry, N must specify the number of data points.
   N.GE.2.

   Unchanged on exit.

 METHOD - INTEGER.

   On  entry,  METHOD  must  specify  the  choice  of curve
   drawing method, and whether the curve is open or closed.

   METHOD =  1 - Butland's method, open curve.
   METHOD =  2 - McConalogue's method, open curve.
   METHOD = -1 - Butland's method, closed curve.
   METHOD = -2 - McConalogue's method, closed curve.

   McConalogue's   method   is  recommended  in  the  first
   instance   - see    the   Graphical  Supplement  routine
   document.

   Unchanged on exit.

 IFAIL - INTEGER.

   For this routine, the normal use of IFAIL is extended to
   control  the  printing  of  error  messages  as well  as
   specifying  hard or soft failure (see Chapter P01 of the
   NAG FORTRAN  Library  Manual or NAG On-line  Information
   Supplement).

   Before  entry,  IFAIL  must be set to a value  with  the
   decimal  expansion ba, where each of the decimal  digits
   b, a must have the value 0 or 1.

   a = 0 specifies hard failure, otherwise soft failure.
   b = 0 suppresses    error    messages,  otherwise  error
         messages will be printed (see next section).

   The  recommended  value  for  inexperienced  users is 10
   (i.e. hard failure with error messages printed).

   Unless the routine  detects an error (see next section),
   IFAIL contains 0 on exit.

 D. Error Indicators and Warnings
 ================================


 Errors detected by the routine:-

   For each error, the routine outputs an explanatory error
   message  on the  current  error  message  unit  (see NAG
   FORTRAN Library routine  //X04AAF//),  unless suppressed
   by the value of IFAIL on entry.

   IFAIL = 1

     Error in input parameters: either N.LT.2 or METHOD not
     equal to 1,2,-1 or -2.

   In these cases no curve is drawn.

 ------
 END OF J06CCF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06CDF ROUTINE
 J06CDF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06CDF//  draws a smooth, possibly  multivalued,  curve
  through a set of data  points, the routine  being  called
  once for each point. The curve may be open or closed.

 B. Specification
 ================

        SUBROUTINE //J06CDF// (X, Y, IXCODE, GX, GY,
       1   IGCODE, TOLX, TOLY, STORE, IFAIL)
  C     INTEGER IXCODE, IGCODE, IFAIL
  C     //real// X, Y, GX, GY, TOLX, TOLY, STORE(28)

 C. Parameters
 =============

 X - //real//.
 Y - //real//.

   On entry, X, Y must contain the X and Y co-ordinates  of
   the next data point on the curve.

   Unchanged on exit.

 IXCODE - INTEGER.

   On entry,  IXCODE must  specify the type of point  (X,Y)
   supplied and selects the method of drawing  required, as
   follows:-

   IXCODE = 1

     means that (X,Y) is the first point and that Butland's
     method is to be used to draw an open curve.

   IXCODE = -1

     as IXCODE = 1 except that the curve is to be closed.

   IXCODE = 2

     means   that  (X,Y)   is  the  first  point  and  that
     McConalogue's  method  is to be used to draw  an  open
     curve.

   IXCODE = -2

     as IXCODE = 2 except that the curve is to be closed.

   IXCODE = 0

     means that (X,Y) is an intermediate point.

   IXCODE = 9

     means that (X,Y) is the last point.

   Unchanged on exit.

 GX - //real//.
 GY - //real//.

   On entry, if IGCODE = 1, GX, GY must contain information
   about the slope of the curve at (X,Y).

   The  curve  will be drawn so that its  slope at (X,Y) is
   GY/GX.

   For McConalogue's  method, only the ratio of GY to GX is
   used;  multiplying GY and GX by the same factor does not
   alter the shape of the curve. In particular,  users will
   usually  find it most  convenient  to set  GX,GY  to the
   direction cosines of the curve at (X,Y).

   For Butland's method, the individual values of GY and GX
   affect  the shape of the  curve; GX and GY must  specify
   the  derivatives  dx(t)/dt and of the curve  (x(t),y(t))
   with respect to the parameter t. The parameter  interval
   between points is 1 (i.e. t has the value 0 at the first
   point, 1 at the second point, and so on).



   Unchanged on exit.

 IGCODE - INTEGER.

   On entry,  IGCODE must be set to 0 if the slope at (X,Y)
   is to be estimated by the routine, and to 1 if the slope
   at (X,Y) is to be specified by the user in GX,GY.

   Unchanged on exit.

 TOLX - //real//.
 TOLY - //real//.

   On   entry,  TOLX,TOLY  must  be  set  to  the  smallest
   differences  in the X and Y  co-ordinates  of successive
   points to be regarded as  significant.  Any point  whose
   co-ordinates  differ by less than TOLX and TOLY from its
   predecessor will be ignored.

   Unchanged on exit.

 STORE - //real// array of DIMENSION at least (28).

   Used as  workspace.  The  contents  of STORE must not be
   altered between calls of the routine.

 IFAIL - INTEGER.

   For this routine, the normal use of IFAIL is extended to
   control  the  printing  of  error  messages  as well  as
   specifying  hard or soft failure (see Chapter P01 of the
   NAG FORTRAN  Library  Manual or NAG On-line  Information
   Supplement).

   Before  entry,  IFAIL  must be set to a value  with  the
   decimal  expansion ba, where each of the decimal  digits
   b, a must have the value 0 or 1.

   a = 0 specifies hard failure, otherwise soft failure.
   b = 0 suppresses    error    messages,  otherwise  error
         messages will be printed (see next section).

 The recommended value for inexperienced  users is 10 (i.e.
 hard failure with error messages printed).

 Unless the  routine  detects an error (see next  section),
 IFAIL contains 0 on exit.

 D. Error Indicators and Warnings
 ================================


 Errors detected by the routine:-

   For each error, the routine outputs an explanatory error
   message  on the  current  error  message  unit  (see NAG
   FORTRAN Library routine  //X04AAF//),  unless suppressed
   by the value of IFAIL on entry.

   IFAIL = 1

     Illegal  value of  IXCODE  or  IGCODE  on  entry  (see
     Section C).

   In this case no curve section is drawn.

 ------
 END OF J06CDF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06EAF ROUTINE
 J06EAF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06EAF//   draws    a  user-supplied  function  over  a
  specified range.

 B. Specification
 ================

        SUBROUTINE //J06EAF// (FUNCT, X1, X2)
  C     //real// FUNCT, X1, X2
  C     EXTERNAL FUNCT

 C. Parameters
 =============


 FUNCT - //real// FUNCTION, supplied by the user.

   FUNCT is the function which is to be drawn.
   Its specification is:-

     //real// FUNCTION FUNCT(X)
     C     //real// X

     X - //real//.

       On  entry,  X  specifies  the  point  at  which  the
       function  is to be  evaluated. X must not be changed
       by FUNCT.

   FUNCT  must be declared as EXTERNAL in the  (sub)program
   from which //J06EAF// is called.

 X1 - //real//.
 X2 - //real//.

   On entry, X1 and X2 must  specify the  endpoints  of the
   range  over which the  function  is to be drawn.  Either
   parameter may have the greater value.

   Unchanged on exit.

 D. Error Indicators and Warnings
 ================================

   None.

 ------
 END OF J06EAF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06EBF ROUTINE
 J06EBF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06EBF//  draws a  series  of  straight  line  segments
  approximating  to a series of data points,  being  called
  once for each point  (X,Y).  The  routine  may be used to
  draw a function where the user wishes to determine  which
  values of the function to compute.

 B. Specification
 ================

        SUBROUTINE //J06EBF// (X, Y, ICODE, STORE,
       1   IFAIL)
  C     INTEGER ICODE, IFAIL
  C     //real// X, Y, STORE(9)

 C. Parameters
 =============


 X - //real//.

   On entry, X must specify the X  co-ordinate  of the next
   data  point.  The  series of values  of X in  successive
   calls to //J06EBF// need not be monotonic.

   Unchanged on exit.

 Y - //real//.

   On entry, Y must specify the Y  co-ordinate  of the next
   data point.

   Unchanged on exit.

 ICODE - INTEGER.

   On entry, ICODE must specify information about the point
   (X,Y).

     ICODE
       1     first data point of a line
       9     last data point of a line
       0     any other data point

   The  user  must  ensure  that the  values  of  ICODE  in
   successive calls of //J06EBF// are in sequences in which
   the  first  value is 1, the last is 9 and all others are
   0.

   Unchanged on exit.

 STORE - //real// array of DIMENSION at least (9).

   Used as  workspace.  The  contents  of STORE must not be
   changed between calls to //J06EBF//.

 IFAIL - INTEGER.

   For this routine, the normal use of IFAIL is extended to
   control  the  printing  of  error  messages  as well  as
   specifying  hard or soft failure (see Chapter P01 of the
   NAG    FORTRAN   Library  Manual   or  the  NAG  On-line
   Information Supplement).

   Before  entry,  IFAIL  must be set to a value  with  the
   decimal  expansion ba, where each of the decimal  digits
   b, a must have the value 0 or 1.

   a = 0 specifies hard failure, otherwise soft failure.
   b = 0 suppresses    error    messages,  otherwise  error
         messages will be printed (see next section).

   The  recommended  value  for  inexperienced  users is 10
   (i.e. hard failure with error messages printed).

   Unless the routine  detects an error (see next section),
   IFAIL contains 0 on exit.

 D. Error Indicators and Warnings
 ================================

 Errors detected by the routine:-

   For each error, the routine outputs an explanatory error
   message  on the  current  error  message  unit  (see NAG
   FORTRAN Library routine  //X04AAF//),  unless suppressed
   by the value of IFAIL on entry.

   IFAIL = 1

     Illegal value of ICODE on entry - see Section C.
     No curve section will be drawn.

 ------
 END OF J06EBF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06FAF ROUTINE
 J06FAF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06FAF//  plots a  cubic  spline  function  in a  given
  interval   from   its   B-spline  representation.  It  is
  typically  used  in  conjunction  with  the  NAG  FORTRAN
  Library routine //E02BAF//.

 B. Specification
 ================

        SUBROUTINE //J06FAF// (NCAP7, K, C, X1, X2,
       1   KMARK, IFAIL)
  C     INTEGER NCAP7, KMARK, IFAIL
  C     //real// K(NCAP7), C(NCAP7), X1, X2

 C. Parameters
 =============

 NCAP7 - INTEGER.

   On entry, NCAP7 must specify NCAP + 7, where NCAP is the
   number of intervals of the spline.

   Unchanged on exit.

 K - //real// array of DIMENSION at least (NCAP7).

   Before entry, K(J) must be set to the value of the J(th)
   member      of    the    complete   set  of  knots,  for
   J = 1,2,...,NCAP7.  The K(J)  must be in  non-decreasing
   order with K(NCAP+4) greater than K(4).

   Unchanged on exit.

 C - //real// array of DIMENSION at least (NCAP7).

   Before entry, C(J) must be set to the value of the J(th)
   B-spline   coefficient,    for  J = 1,2,...,NCAP+3.  The
   remaining elements of the array are unused.

   Unchanged on exit.

 X1 - //real//.
 X2 - //real//.

   On  entry, X1 must  specify  the lower  bound and X2 the
   upper bound of the interval in which the cubic spline is
   to be plotted.

   Unchanged on exit.

 KMARK - INTEGER.

   On entry,  KMARK must  specify  the marker to be used to
   indicate the knots.
   0.LE.KMARK.LE.9. If KMARK = 0, no markers are drawn. The
   symbols available with each version of the NAG Graphical
   Interface    are  reproduced  in  the  Appendix  to  the
   Essential Introduction to the Supplement Manual.

   Unchanged on exit.

 IFAIL - INTEGER.

   For this routine, the normal use of IFAIL is extended to
   control  the  printing  of  error  messages  as well  as
   specifying  hard or soft failure (see Chapter P01 of the
   NAG    FORTRAN   Library  Manual   or  the  NAG  On-line
   Information Supplement).

   Before  entry,  IFAIL  must be set to a value  with  the
   decimal  expansion ba, where each of the decimal  digits
   b, a must have the value 0 or 1.

   a = 0 specifies hard failure, otherwise soft failure.
   b = 0 suppresses    error    messages,  otherwise  error
         messages will be printed (see next section).

   The  recommended  value  for  inexperienced  users is 10
   (i.e. hard failure with error messages printed).

   Unless the routine  detects an error (see next section),
   IFAIL contains 0 on exit.

 D. Error Indicators and Warnings
 ================================


 Errors detected by the routine:-

   For each error, the routine outputs an explanatory error
   message  on the  current  error  message  unit  (see NAG
   Library routine  //X04AAF//),  unless  suppressed by the
   value of IFAIL on entry.

   IFAIL = 1

     NCAP7.LT.8, i.e. the number of intervals not positive.

   IFAIL = 2

     Either  K(4).GE.K(NCAP+4),  i.e. the range over  which
     S(X)  is defined is null or  negative  in  length,  or
     `X1,X2!  is an invalid  interval,  i.e.  X1.GE.X2,  or
     X1.LT.K(4), or  X2.GT.K(NCAP+4).  See section 3 of the
     Graphical Supplement routine document.

   IFAIL = 3

     The knots are not in non-decreasing order.

   In these cases, no curve is drawn.

 ------
 END OF J06FAF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06GAF ROUTINE
 J06GAF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06GAF//  draws a contour  map of a surface  defined by
  M*N    surface  heights  at   the  nodes  of  a  regular,
  rectangular  mesh  having  equal  spacing  in X and equal
  spacing in Y. The map is drawn to fill the  current  data
  region.

 B. Specification
 ================

        SUBROUTINE //J06GAF// (SURFCE, M, N, NCHTS,
       1   CHTS, ICH, UNUSED, IFAIL)
  C     INTEGER M, N, NCHTS, ICH, IFAIL
  C     LOGICAL UNUSED(M,N)
  C     //real// SURFCE(M,N), CHTS(NCHTS)

 C. Parameters
 =============


 SURFCE - //real// array of DIMENSION  (M,p), where p.GE.N.

   Before entry, SURFCE should contain the surface  heights
   of the grid points arranged so that the first  dimension
   increases  as X goes from XMIN to XMAX,  and the  second
   dimension  increases  as Y goes from YMIN to YMAX, where
   XMIN,  XMAX,  YMIN,  YMAX are the  limits of the  user's
   current data region.

   Unchanged on exit.

 M - INTEGER.
 N - INTEGER.

   On entry, M,N must specify the number of surface heights
   in the X and Y directions respectively.
   M.GE.3, N.GE.3.

   Unchanged on exit.

 NCHTS - INTEGER.

   On entry,  NCHTS must  specify the number of contours to
   be drawn. NCHTS.GE.1 unless ICH = 2, in which case NCHTS
   .GE.2.

   Unchanged on exit.

 CHTS - //real// array of DIMENSION at least (NCHTS).

   See ICH.

 ICH - INTEGER.

   On entry, ICH must specify the method used to  determine
   contour heights -

     (i) ICH = 0  - The  heights in SURFCE are  scanned  to
         find the maximum and minimum. The range is divided
         into  NCHTS equal  divisions, and a contour height
         is defined at the mid-point of each division.

         On  exit,  CHTS(I),  I = 1,...,NCHTS  contain  the
         calculated contour heights.

    (ii) ICH = 1  - The contour heights are supplied by the
         user.  On entry, CHTS(I),  I = 1,...,NCHTS  should
         contain  the supplied  heights; the values in CHTS
         are unchanged on exit.

   (iii) ICH = 2   -  The   range  of  contour  heights  is
         specified  by the  user.  On  entry,  CHTS(1)  and
         CHTS(2)  should contain the extremes of the range.
         A further  (NCHTS-2)  contours are defined equally
         spaced within the range.

         On  exit,  CHTS(I),  I = 1,...,NCHTS  contains the
         calculated heights.

   ICH is unchanged on exit.

 UNUSED - LOGICAL array of DIMENSION (M,N).

   Used as working space.

 IFAIL - INTEGER.

   Before  entry, IFAIL must be assigned a value. For users
   not familiar with this  parameter  (described in Chapter
   P01 of the NAG FORTRAN Library Manual or the NAG On-line
   Information  Supplement)  the  recommended  value  is 0.
   Unless the routine  detects an error (see next section),
   IFAIL contains 0 on exit.

 D. Error Indicators and Warnings
 ================================

   Errors detected by the routine:-

   IFAIL = 1

     On entry, M.LT.3
            or N.LT.3
            or NCHTS.LT.1
            or ICH.LT.0
            or ICH.GT.2
            or ICH = 2 and NCHTS.LT.2.

 ------
 END OF J06GAF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06GBF ROUTINE
 J06GBF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06GBF//  draws a contour  map of a surface  defined by
  heights at the nodes of a regular,  rectangular mesh. The
  map is drawn to fill the  current  data  region. A set of
  options  is   available   for  annotation,  highlighting,
  straight   line   or   curved  contours,  and  choice  of
  contouring algorithms.

 B. Specification
 ================

        SUBROUTINE //J06GBF// (SURFCE, MDIM, MA, MB,
       1   NA, NB, NCHTS, CHTS, ICH, CONDRA,
       2   ILAB, IHIGH, LINDRA, IGRID, UNUSED,
       3   IFAIL)
  C     INTEGER MDIM, MA, MB, NA, NB, NCHTS, ICH,
  C    1   ILAB, IHIGH, IGRID, IFAIL
  C     LOGICAL UNUSED(MDIM,NB)
  C     //real// SURFCE(MDIM,NB), CHTS(NCHTS)
  C     EXTERNAL CONDRA, LINDRA

 C. Parameters
 =============

 SURFCE -  //real//  array  of  DIMENSION  (MDIM,p),  where
 p.GE.NB.

   Before   entry,   the  portion   of  the  array  SURFCE,
   SURFCE(I,J),     I = MA,...,MB,   J = NA,...,NB,  should
   contain  the  surface  heights  to be  contoured.  These
   should be arranged so that  SURFCE(MA,NA)  contains  the
   height at the bottom left-hand corner of the data region
   (XMIN,YMIN),  and so that the first  dimension of SURFCE
   increases  as X goes from XMIN to XMAX,  and the  second
   dimension increases as Y goes from YMIN to YMAX, where

                    (XMIN,XMAX,YMIN,YMAX)

   are the limits of the current data region.

   Unchanged on exit.

 MDIM - INTEGER.

   On entry, MDIM must specify the first  dimension  of the
   array SURFCE, as declared in the calling (sub)program.
   MDIM.GE.3.

   Unchanged on exit.

 MA - INTEGER.
 MB - INTEGER.
 NA - INTEGER.
 NB - INTEGER.

   On entry, MA, MB, NA, NB must specify the portion of the
   array SURFCE to be contoured, namely

     SURFCE(I,J),
       I = MA,...,MB, J = NA,...,NB.

   1.LE.MA.LE.MB - 2.
   MB.LE.MDIM.
   1.LE.NA.LE.NB - 2.

   Unchanged on exit.

 NCHTS - INTEGER.

   On entry,  NCHTS must  specify the number of contours to
   be drawn. NCHTS.GE.1 unless ICH = 2, in which case NCHTS
   .GE.2.

   Unchanged on exit.

 CHTS - //real// array of DIMENSION at least (NCHTS).

   See ICH.

 ICH - INTEGER.

   On entry, ICH must specify the method used to  determine
   contour heights -

     (i) ICH = 0  - The  heights in SURFCE are  scanned  to
         find the maximum and minimum. The range is divided
         into  NCHTS equal  divisions, and a contour height
         is defined at the mid-point of each division.

         On  exit,  CHTS(I),  I = 1,...,NCHTS  contain  the
         calculated contour heights.

    (ii) ICH = 1  - The contour heights are supplied by the
         user.  On entry, CHTS(I),  I = 1,...,NCHTS  should
         contain  the supplied  heights; the values in CHTS
         are unchanged on exit.

   (iii) ICH = 2   -  The   range  of  contour  heights  is
         specified  by the  user.  On  entry,  CHTS(1)  and
         CHTS(2)  should contain the extremes of the range.
         A further  (NCHTS-2)  contours are defined equally
         spaced within the range.

         On  exit,  CHTS(I),  I = 1,...,NCHTS  contains the
         calculated heights.

   Unchanged on exit.

 CONDRA  -   SUBROUTINE,  supplied  by  the  NAG  Graphical
 Supplement.

   This parameter enables the user to select the contouring
   method. Two routines are provided -

    (i) J06GBZ  - Inverse linear  interpolation  is used to
        calculate  the  intersections  of the contour lines
        with the mesh.

   (ii) J06GBY  - The surface  height at the centre of each
        rectangle  is  approximated  by the  average of the
        heights  at the  corners,  effectively  producing a
        triangular  mesh. Inverse linear  interpolation  is
        again  used to calculate where the contours cut the
        mesh lines and diagonals.

   Method (i) is faster but within certain rectangles there
   may be ambiguity as to which way the contour line should
   turn.  This is resolved by adopting  the  convention  of
   "high  ground  on   the  right".  Method  (ii)  requires
   greater   computation  time,  but  the  triangular  mesh
   resolves any ambiguity.

   J06GBZ or J06GBY must be  declared  as  EXTERNAL  in the
   (sub)program from which //J06GBF// is called.

   **N.B.** In implementations where both single and double
   precision  versions  of  the  Graphical  Supplement  are
   available,  these  routines are called GBZJ06 and GBVJ06
   in   the    alternative  precision  version,  see  local
   documentation.

 ILAB - INTEGER.

   On entry, ILAB must  specify  the  frequency  of contour
   heights  that are labelled. If ILAB = 0, no contours are
   labelled. Otherwise contours of height CHTS(1) and every
   subsequent  ILAB(th)  height are  labelled. A contour of
   height CHTS(I) is labelled with the index I, rather than
   the actual height CHTS(I). The subroutine //J06GZF// can
   be used to draw a reference table of the index I and the
   associated  contour  height.  The  size  of the  contour
   annotation is set within  //J06GBF//,  but may be scaled
   by  the  user  through  a  call  to  the  NAG  Graphical
   Interface    routine   //J06XGF//   (see  the  Essential
   Introduction  to the Supplement  Manual). In particular,
   users  should note that the shape of characters  will be
   distorted if the contour map is very  non-square  and in
   this situation a call to //J06XGF// will usually improve
   the appearance of the annotation  considerably. The size
   of the  labelling  also  affects  the  frequency  of the
   labelling  along any one contour line.  Contours are not
   labelled  if the  subroutine  estimates  that  there  is
   insufficient room.
   ILAB.GE.0.

   Unchanged on exit.

 IHIGH - INTEGER.

   On entry, IHIGH must  specify the  frequency  of contour
   heights to be highlighted. If IHIGH = 0, no contours are
   highlighted.  Otherwise  contours of height  CHTS(1) and
   every  subsequent  IHIGH(th) height are highlighted. For
   highlighting,  //J06GBF//  selects  pen number 2 to draw
   any  contour  to   be  highlighted,  and  pen  number  1
   otherwise.  The  selection of a pen involves the setting
   of a particular  colour,  linetype  and text font within
   //J06GBF//  - for full details on  highlighting  see the
   Essential Introduction to the NAG Supplement Manual. The
   default  settings of the pens ensure that pen  numbers 1
   and 2 can be  distinguished  on  most  graphical  output
   devices; the user can  "program" the pen appearances via
   the  NAG  Graphical  Interface  routine  //J06XDF//.  If
   highlighting  is  selected,  pen number 1 is in force on
   exit from //J06GBF//.  Note however that if IHIGH = 0 no
   pen selection is made within  //J06GBF//;  thus settings
   of  colour,  linetype  and text  font are as on entry to
   //J06GBF//.
   IHIGH.GE.0.

   Unchanged on exit.

 LINDRA  -   SUBROUTINE,  supplied  by  the  NAG  Graphical
 Supplement.

   This parameter  specifies whether successive points on a
   contour are to be joined by

     (i) J06GBU - straight lines
    (ii) J06GBV - a smooth curve using Butland's method
   (iii) J06GBW - a smooth curve using McConalogue's method

   The fastest  option is J06GBU, but some users may prefer
   the  smoother  contours  generated  by J06GBV or  J06GBW
   (bearing  in mind that the curve  drawn  between  points
   will  necessarily  reflect the  properties  of the curve
   drawing method rather than the surface to be contoured).
   A tighter fitting curve will be generated by J06GBV than
   J06GBW,  and so crossing  contours are less likely. Note
   however  that  J06GBW  is a  rotation-independent  curve
   drawing  method,  unlike  J06GBV. For full  details  see
   routine document //J06CCF// or //J06CDF//.

   J06GBU or J06GBV or J06GBW must be declared as  EXTERNAL
   in the (sub)program from which //J06GBF// is called.

   **N.B.** In implementations where both single and double
   precision  versions  of  the  Graphical  Supplement  are
   available,  these routines are called GBUJ06, GBVJ06 and
   GBWJ06 in the alternative  precision  version, see local
   documentation.

 IGRID - INTEGER.

   On entry, IGRID must  specify the type of border or grid
   to be drawn. If IGRID = 0 no border or grid is drawn. If
   IGRID = 1 a border only is drawn; if IGRID = 2  the mesh
   lines are drawn.

   Unchanged on exit.

 UNUSED  -  LOGICAL  array  of  DIMENSION  (MDIM,q),  where
 q.GE.NB.

   Used as working space.

 IFAIL - INTEGER.

   Before  entry, IFAIL must be assigned a value. For users
   not familiar with this  parameter  (described in Chapter
   P01 of the NAG FORTRAN Library Manual or the NAG On-line
   Information  Supplement)  the  recommended  value  is 0.
   Unless the routine  detects an error (see next section),
   IFAIL contains 0 on exit.

 D. Error Indicators and Warnings
 ================================


 Errors detected by the routine:-


   IFAIL = 1

     On entry, ICH.LT.0
            or ICH.GT.2
            or ILAB.LT.0
            or IHIGH.LT.0
            or IGRID.LT.0
            or IGRID.GT.2
            or ICH = 2 and NCHTS.LT.2.

   IFAIL = 2

     On entry, MDIM.LT.MB
            or MA.LT.1
            or MB - MA.LT.2
            or NA.LT.1
            or NB - NA.LT.2
            or NCHTS.LT.1.

 ------
 END OF J06GBF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06GCF ROUTINE
 J06GCF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06GCF//  draws a contour  map of a surface  defined by
  M.MU.N  surface  heights  at the  nodes of an  irregular,
  rectangular  mesh having unequal spacing in X and unequal
  spacing in Y.

 B. Specification
 ================

        SUBROUTINE //J06GCF// (SURFCE, XPTS, YPTS, M,
       1   N, NCHTS, CHTS, ICH, UNUSED, IFAIL)
  C     INTEGER M, N, NCHTS, ICH, IFAIL
  C     LOGICAL UNUSED(M,N)
  C     //real// SURFCE(M,N), XPTS(M), YPTS(N),
  C    1   CHTS(NCHTS)

 C. Parameters
 =============


 SURFCE - //real// array of DIMENSION  (M,p), where p.GE.N.

   Before entry, SURFCE should contain the surface  heights
   of the grid points arranged so that the first  dimension
   increases  as X goes from  XPTS(1) to  XPTS(M),  and the
   second  dimension  increases  as Y goes from  YPTS(1) to
   YPTS(N).

   Unchanged on exit.

 XPTS - //real// array of DIMENSION at least (M).

   Before entry, XPTS(I),  I = 1,...,M,  must contain the X
   co-ordinates of the vertical mesh lines.

   Unchanged on exit.

 YPTS - //real// array of DIMENSION at least (N).

   Before entry, YPTS(J),  J = 1,...,N,  must contain the Y
   co-ordinates of the horizontal mesh lines.

   Unchanged on exit.

 M - INTEGER.
 N - INTEGER.

   On  entry,  M, N must  specify  the  number  of  surface
   heights in the X and Y directions respectively.
   M.GE.3. N.GE.3.

   Unchanged on exit.

 NCHTS - INTEGER.

   On entry,  NCHTS must  specify the number of contours to
   be drawn. NCHTS.GE.1 unless ICH = 2, in which case NCHTS
   .GE.2.

   Unchanged on exit.

 CHTS - //real// array of DIMENSION at least (NCHTS).

   See ICH.

 ICH - INTEGER.

   On entry, ICH must specify the method used to  determine
   contour heights -

     (i) ICH = 0 - The  heights in SURFCE  are  scanned  to
         find the maximum and minimum. The range is divided
         into  NCHTS equal  divisions, and a contour height
         is defined at the mid-point of each division.

         On  exit,  CHTS(I),  I = 1,...,NCHTS  contain  the
         calculated contour heights.

    (ii) ICH = 1 - The  contour heights are supplied by the
         user.  On  entry,  CHTS(I),  I = 1,...,NCHTS  must
         contain  the supplied  heights; the values in CHTS
         are unchanged on exit.

   (iii) ICH = 2 - The   range    of   contour  heights  is
         specified  by the  user.  On  entry,  CHTS(1)  and
         CHTS(2)  must contain the extremes of the range. A
         further  (NCHTS-2)  contours  are defined  equally
         spaced within the range.

         On  exit,  CHTS(I),  I = 1,...,NCHTS  contains the
         calculated heights.

   Unchanged on exit.

 UNUSED - LOGICAL array of DIMENSION
   (M,q), where q.GE.N.

   Used as working space.

 IFAIL - INTEGER.

   Before  entry, IFAIL must be assigned a value. For users
   not familiar with this  parameter  (described in Chapter
   P01 of the NAG FORTRAN Library Manual or the NAG On-line
   Information  Supplement)  the  recommended  value  is 0.
   Unless the routine  detects an error (see next section),
   IFAIL contains 0 on exit.

 D. Error Indicators and Warnings
 ================================


 Errors detected by the routine:-


   IFAIL = 1

     On entry, M.LT.3
            or N.LT.3
            or NCHTS.LT.1
            or ICH.LT.0
            or ICH.GT.2
            or ICH = 2 and NCHTS.LT.2.

 ------
 END OF J06GCF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06GDF ROUTINE
 J06GDF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06GDF//  draws a contour  map of a surface  defined by
  heights at the nodes of an irregular, rectangular mesh. A
  set of options is available for annotation, highlighting,
  straight   line   or   curved  contours,  and  choice  of
  contouring algorithms.

 B. Specification
 ================

        SUBROUTINE //J06GDF// (SURFCE, XPTS, YPTS,
       1   MDIM, MA, MB, NA, NB, NCHTS, CHTS,
       2   ICH, CONDRA, ILAB, IHIGH, LINDRA,
       3   IGRID, UNUSED, IFAIL)
  C     INTEGER MDIM, MA, MB, NA, NB, NCHTS, ICH,
  C    1   ILAB, IHIGH, IGRID, IFAIL
  C     LOGICAL UNUSED(MDIM,NB)
  C     //real// SURFCE(MDIM,NB), XPTS(MB), YPTS(NB),
  C    1   CHTS(NCHTS)
  C     EXTERNAL CONDRA, LINDRA

 C. Parameters
 =============

 SURFCE - //real// array of DIMENSION
   (MDIM,p), where p.GE.NB.

   Before   entry,   the  portion   of  the  array  SURFCE,
   SURFCE(I,J),     I = MA,...,MB,   J = NA,...,NB,  should
   contain  the  surface  heights  to be  contoured.  These
   should be arranged so that  SURFCE(MA,NA)  contains  the
   height  at the  bottom  left-hand  corner  of  the  mesh
   (XPTS(MA),YPTS(NA)),  and so that the first dimension of
   SURFCE  increases as X goes from  XPTS(MA) to  XPTS(MB),
   and  the  second  dimension  increases  as Y  goes  from
   YPTS(NA) to YPTS(NB).

   Unchanged on exit.

 XPTS - //real// array of DIMENSION at least (MB).

   Before entry, XPTS(I), I = MA,...,MB, must contain the X
   co-ordinates of the vertical mesh lines.

   Unchanged on exit.

 YPTS - //real// array of DIMENSION at least (NB).

   Before entry, YPTS(I), I = NA,...,NB, must contain the Y
   co-ordinates of the horizontal mesh lines.

   Unchanged on exit.

 MDIM - INTEGER.

   On entry, MDIM must specify the first  dimension  of the
   array  SURFCE, as declared in the calling  (sub)program.
   MDIM.GE.3.

   Unchanged on exit.

 MA - INTEGER.
 MB - INTEGER.
 NA - INTEGER.
 NB - INTEGER.

   On entry, MA, MB, NA, NB must specify the portion of the
   array SURFCE to be contoured, namely

     SURFCE(I,J),
       I = MA,...,MB, J = NA,...,NB.

   1.LE.MA.LE.MB - 2.
   MB.LE.MDIM.
   1.LE.NA.LE.NB - 2.

   Unchanged on exit.

 NCHTS - INTEGER.

   On entry,  NCHTS must  specify the number of contours to
   be drawn. NCHTS.GE.1 unless ICH = 2, in which case NCHTS
   .GE.2.

   Unchanged on exit.

 CHTS - //real// array of DIMENSION at least (NCHTS).

   See ICH.

 ICH - INTEGER.

   On entry, ICH must specify the method used to  determine
   contour heights -

     (i) ICH = 0 - The  heights in SURFCE  are  scanned  to
         find the maximum and minimum. The range is divided
         into  NCHTS equal  divisions, and a contour height
         is defined at the mid-point of each division.

         On  exit,  CHTS(I),  I = 1,...,NCHTS  contain  the
         calculated contour heights.

    (ii) ICH = 1 - The  contour heights are supplied by the
         user.  On entry, CHTS(I),  I = 1,...,NCHTS  should
         contain  the supplied  heights; the values in CHTS
         are unchanged on exit.

   (iii) ICH = 2 - The   range    of   contour  heights  is
         specified  by the  user.  On  entry,  CHTS(1)  and
         CHTS(2)  should contain the extremes of the range.
         A further  NCHTS - 2  contours are defined equally
         spaced within the range.

         On  exit,  CHTS(I),  I = 1,...,NCHTS  contains the
         calculated heights.

   Unchanged on exit.

 CONDRA - SUBROUTINE, supplied by the
   NAG Graphical Supplement.

   This parameter enables the user to select the contouring
   method. Two routines are provided -

    (i) J06GBZ - Inverse  linear  interpolation  is used to
        calculate  the  intersections  of the contour lines
        with the mesh.

   (ii) J06GBY - The  surface  height at the centre of each
        rectangle  is  approximated  by the  average of the
        height  at the  corners,  effectively  producing  a
        triangular  mesh. Inverse linear  interpolation  is
        again  used to calculate where the contours cut the
        mesh lines and diagonals.

   Method (i) is faster but within certain rectangles there
   may be ambiguity as to which way the contour line should
   turn.  This is resolved by adopting  the  convention  of
   "high  ground  on   the  right".  Method  (ii)  requires
   greater   computation  time,  but  the  triangular  mesh
   resolves any ambiguity.

   J06GBZ or J06GBY must be  declared  as  EXTERNAL  in the
   (sub)program from which //J06GDF// is called.

   **N.B.** In implementations where both double and single
   precision  versions  of  the  Graphical  Supplement  are
   available,  these  routines are called GBZJ06 and GBYJ06
   in   the    alternative  precision  version,  see  local
   documentation.

 ILAB - INTEGER.

   On entry, ILAB must  specify  the  frequency  of contour
   heights  that are labelled. If ILAB = 0, no contours are
   labelled. Otherwise contours of height CHTS(1) and every
   subsequent  ILAB(th)  height are  labelled. A contour of
   height CHTS(I) is labelled with the index I, rather than
   the actual height CHTS(I). The subroutine //J06GZF// can
   be used to draw a reference table of the index I and the
   associated  contour  height.  The  size  of the  contour
   annotation is set within  //J06GDF//,  but may be scaled
   by  the  user  through  a  call  to  the  NAG  Graphical
   Interface    routine   //J06XGF//   (see  the  Essential
   Introduction  to the Supplement  Manual). In particular,
   users  should note that the shape of characters  will be
   distorted if the contour map is very  non-square  and in
   this situation a call of //J06XGF// will usually improve
   the appearance of the annotation  considerably. The size
   of the  labelling  also  affects  the  frequency  of the
   labelling  along any one contour line.  Contours are not
   labelled  if the  subroutine  estimates  that  there  is
   insufficient room.

   Unchanged on exit.

 IHIGH - INTEGER.

   On entry, IHIGH must  specify the  frequency  of contour
   heights to be highlighted. If IHIGH = 0, no contours are
   highlighted.  Otherwise  contours of height  CHTS(1) and
   every  subsequent  IHIGH(th) height are highlighted. For
   highlighting,  //J06GDF//  selects  pen number 2 to draw
   any  contour  to   be  highlighted,  and  pen  number  1
   otherwise.  The  selection of a pen involves the setting
   of a particular  colour,  linetype  and text font within
   //J06GDF//  - for full details on  highlighting  see the
   Essential  Introduction  to the  Supplement  Manual. The
   default  setting of the pens ensure  that pen  numbers 1
   and 2 can be  distinguished  on  most  graphical  output
   devices; the user can "program" the pen appearances  via
   the  NAG  Graphical  Interface  routine  //J06XDF//.  If
   highlighting  is  selected,  pen number 1 is in force on
   exit from  //J06GDF//.  Note however,  that if IHIGH = 0
   no pen selection  whatsoever is made within  //J06GDF//;
   thus  settings of colour,  linetype and text font are as
   on entry to //J06GDF//. IHIGH.GE.0.

   Unchanged on exit.

 LINDRA - SUBROUTINE, supplied by the
   NAG Graphical Supplement.

   This  parameter  enables  the  user to  specify  whether
   successive points on a contour are to be joined by

     (i) J06GBU - straight lines
    (ii) J06GBV - a smooth curve using Butland's method
   (iii) J06GBW - a smooth curve using McConalogue's method

   The fastest  option is J06GBU, but some users may prefer
   the  smoother  contours  generated  by J06GBV or  J06GBW
   (bearing  in mind that the curve  drawn  between  points
   will  necessarily  reflect the  properties  of the curve
   drawing method rather than the surface to be contoured).
   A tighter fitting curve will be generated by J06GBV than
   J06GBW,  and so crossing  contours are less likely. Note
   however,  that  J06GBW is a  rotation-independent  curve
   drawing  method,  unlike  J06GBV. For full  details  see
   routine document //J06CCF// or //J06CDF//.

   J06GBU, J06GBV or J06GBW must be declared as EXTERNAL in
   the (sub)program from which //J06GDF// is called.

   **N.B.**  Implementations  where both  single and double
   precisions  of the Graphical  Supplement are  available,
   these  routines are called GBUJ06,  GBVJ06 and GBWJ06 in
   the      alternative    precision   version,  see  local
   documentation.

 IGRID - INTEGER.

   On entry, IGRID must  specify the type of border or grid
   to be drawn. If IGRID = 0 no border or grid is drawn. If
   IGRID = 1 a border only is drawn; if IGRID = 2  the mesh
   lines are drawn.

   Unchanged on exit.

 UNUSED - LOGICAL array of DIMENSION
   (MDIM,q), where q.GE.NB.

   Used as working space.

 IFAIL - INTEGER.

   Before  entry, IFAIL must be assigned a value. For users
   not familiar with this  parameter  (described in Chapter
   P01 of the NAG FORTRAN Library Manual or the NAG On-line
   Information  Supplement)  the  recommended  value  is 0.
   Unless the routine  detects an error (see next section),
   IFAIL contains 0 on exit.

 D. Error Indicators and Warnings
 ================================

 Errors detected by the routine:-

   IFAIL = 1

     On entry, ICH.LT.0
            or ICH.GT.2
            or ILAB.LT.0
            or IHIGH.LT.0
            or IGRID.LT.0
            or IGRID.GT.2
            or ICH = 2 and NCHTS.LT.2.

   IFAIL = 2

     On entry, MDIM.LT.MB
            or MA.LT.1
            or MB - MA.LT.2
            or NA.LT.1
            or NB - NA.LT.2
            or NCHTS.LT.1.

 ------
 END OF J06GDF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06GEF ROUTINE
 J06GEF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06GEF//   draws  a  contour  map  of  a  user-supplied
  function of two variables.

 B. Specification
 ================

        SUBROUTINE //J06GEF// (HEIGHT, NV, NH, NCHTS,
       1   CHTS, ICH, IFAIL)
  C     INTEGER NV, NH, NCHTS, ICH, IFAIL
  C     //real// CHTS(NCHTS)
  C     EXTERNAL HEIGHT

 C. Parameters
 =============


 HEIGHT - SUBROUTINE, supplied by the user.

   HEIGHT  must  calculate  the  surface  height at a point
   (X,Y), and store it in Z.
   The specification is:-

     SUBROUTINE HEIGHT(X,Y,Z)
     //real// X,Y,Z

     X - //real//.
     Y - //real//.

       On  entry, X,Y contain the X and Y  co-ordinates  of
       the  point  whose  height is to be  calculated.  The
       values of X and Y must not be changed in HEIGHT.

     Z - //real//.

       On  exit,  Z must  contain  the  calculated  surface
       height at (X,Y).

   Note that the contour is traced  just  outside  the data
   region  (before being clipped to the edge) and so HEIGHT
   must be able to accept  values of X,Y which lie  outside
   the data region.

   HEIGHT  must be  declared  as  EXTERNAL  in the  calling
   (sub)program.

 NV - INTEGER.
 NH - INTEGER.

   On  entry,  NV   and  NH  must  specify  the  number  of
   equispaced  vertical and horizontal  mesh lines covering
   the data region that are used to detect the existence of
   a contour line.
   NV.GE.2. NH.GE.2. NV*NH.LE.150.

   Unchanged on exit.

   Note: NV and NH should be  sufficiently  large to form a
   mesh fine enough to detect all required contours. If the
   restriction  NV*NH.LE.150 is too severe, use //J06GFF//.

 NCHTS - INTEGER.

   On entry,  NCHTS must  specify the number of contours to
   be drawn.

   Unchanged on exit.

 CHTS - //real// array of DIMENSION at least (NCHTS).

   See ICH.

 ICH - INTEGER.

   On entry, ICH must specify the method used to  determine
   contour heights:

     (i) ICH = 0 - The heights at the nodes of the tracking
         mesh  are scanned to find the maximum and minimum.
         The  range is divided into NCHTS equal  divisions,
         and a contour  height is defined at the  mid-point
         of each division.

         On  exit,  CHTS(I),  I = 1,...,NCHTS  contain  the
         calculated contour heights.

    (ii) ICH = 1 - The  contour heights are supplied by the
         user.  On entry, CHTS(I),  I = 1,...,NCHTS  should
         contain  the supplied  heights; the values in CHTS
         are unchanged on exit.

   (iii) ICH = 2 - The   range    of   contour  heights  is
         specified  by the  user.  On  entry,  CHTS(1)  and
         CHTS(2)  should contain the extremes of the range.
         A further  (NCHTS-2)  contours are defined equally
         spaced within the range.

         On  exit,  CHTS(I),  I = 1,...,NCHTS  contains the
         calculated heights.

   ICH is unchanged on exit.

 IFAIL - INTEGER.

   Before  entry, IFAIL must be assigned a value. For users
   not familiar with this  parameter  (described in Chapter
   P01 of the NAG FORTRAN Library Manual or the NAG On-line
   Information  Supplement)  the  recommended  value  is 0.
   Unless the routine  detects an error (see next section),
   IFAIL contains 0 on exit.

 D. Error Indicators and Warnings
 ================================


 Errors detected by the routine:-


   IFAIL = 1

     On entry, ICH.LT.0
            or ICH.GT.2
            or ICH = 2 and NCHTS.LT.2
            or NCHTS.LT.1.

   IFAIL = 2

     On entry, NV.LT.2
            or NH.LT.2
            or NV*NH.GT.150.

   IFAIL = 3

     The  tracking  step length has been halved  five times
     without  being  able to detect  the next  point on the
     contour - indicating  very sharp  curvature.  Possible
     remedies  are to  alter  slightly  the  value  of  the
     contour height at which this occurs, make the tracking
     mesh  finer, or use  //J06GFF//  where the size of the
     tracking step can be specified by the user.

 ------
 END OF J06GEF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06GFF ROUTINE
 J06GFF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06GFF//   draws  a  contour  map  of  a  user-supplied
  function of two  variables. A set of options is available
  for annotation, highlighting and control of step-size.

 B. Specification
 ================

        SUBROUTINE //J06GFF// (HEIGHT, NV, NH, D,
       1   NCHTS, CHTS, ICH, ILAB, IHIGH, IGRID,
       2   LWS, NLWS, WS, NWS, IFAIL)
  C     INTEGER NV, NH, NCHTS, ICH, ILAB, IHIGH,
  C    1   IGRID, NLWS, NWS, IFAIL
  C     LOGICAL LWS(NLWS)
  C     //real// D, CHTS(NCHTS), WS(NWS)
  C     EXTERNAL HEIGHT

 C. Parameters
 =============


 HEIGHT - SUBROUTINE, supplied by the user.

   HEIGHT  must  calculate  the  surface  height at a point
   (X,Y) and store it in Z.
   The specification is:

     SUBROUTINE HEIGHT(X,Y,Z)
     //real// X,Y,Z

     X - //real//.
     Y - //real//.

       On  entry, X,Y contain the X and Y  co-ordinates  of
       the  point  whose  height is to be  calculated.  The
       values of X and Y must not be changed in HEIGHT.

     Z - //real//.

       On  exit,  Z must  contain  the  calculated  surface
       height at (X,Y).

   Note that the contour is traced  just  outside  the data
   region  (before being clipped to the edge) and so HEIGHT
   must be able to accept  values of X,Y which lie slightly
   outside the data region.

   HEIGHT  must be  declared  as  EXTERNAL  in the  calling
   (sub)program.

 NV - INTEGER.
 NH - INTEGER.

   On  entry,  NV   and  NH  must  specify  the  number  of
   equispaced  vertical and horizontal  mesh lines covering
   the data region that are used to detect the existence of
   a contour line. NV and NH should be  sufficiently  large
   to  form a mesh  fine  enough  to  detect  all  required
   contours.
   NV.GE.2. NH.GE.2.

   Unchanged on exit.

 D - //real//.

   On entry, D must specify the basic  step-size  expressed
   as  a  fraction  of   the  interval  between  successive
   tracking  mesh  lines  i.e. the basic  step-size  is the
   vector  D*(HV,HH) where HV and HH are the separations of
   the vertical and horizontal  lines of the tracking mesh.
   D  must  not  exceed  0.5  - a  suitable  value  to  try
   initially  is 0.1, the  value  used in  //J06GEF//.  The
   smaller the value of D, the smoother the  contours,  but
   the execution time is increased.

   Unchanged on exit.

 NCHTS - INTEGER.

   On entry,  NCHTS must  specify the number of contours to
   be drawn.

   Unchanged on exit.

 CHTS - //real// array of DIMENSION at least (NCHTS).

   See ICH.

 ICH - INTEGER.

   On entry, ICH must specify the method used to  determine
   contour heights:

     (i) ICH = 0 - The heights at the nodes of the tracking
         mesh  are scanned to find the maximum and minimum.
         The  range is divided  into NCHTS equal  divisions
         and a contour height is defined at the midpoint of
         each division.

         On  exit,  CHTS(I),  I = 1,...,NCHTS  contain  the
         calculated contour heights.

    (ii) ICH = 1 - The  contour heights are supplied by the
         user.  On entry, CHTS(I),  I = 1,...,NCHTS  should
         contain  the supplied  heights; the values in CHTS
         are unchanged on exit.

   (iii) ICH = 2 - The   range    of   contour  heights  is
         specified  by the  user.  On  entry,  CHTS(1)  and
         CHTS(2)  should contain the extremes of the range.
         A further  NCHTS - 2  contours are defined equally
         spaced within the range.

         On  exit,  CHTS(I),  I = 1,...,NCHTS  contains the
         calculated heights.

   ICH is unchanged on exit.

 ILAB - INTEGER.

   On entry, ILAB must  specify  the  frequency  with which
   contour  heights are to be  labelled.  If  ILAB = 0,  no
   contours  are  labelled.  Otherwise,  contours of height
   CHTS(1)  and    every  subsequent  ILAB(th)  height  are
   labelled. A contour of height  CHTS(I) is labelled  with
   the index I, rather than the actual height  CHTS(I). The
   subroutine  //J06GZF//  can be used to draw a  reference
   table of the index I and the associated  contour height.
   The  size  of  the  contour  annotation  is  set  within
   //J06GFF//,  but may be  scaled  by the user  through  a
   call to the NAG Graphical  Interface routine  //J06XGF//
   (see the Essential  Introduction  to the NAG  Supplement
   Manual). In particular  users should note that the shape
   of  characters  will be distorted  if the contour map is
   very   non-square  and  in  this  situation  a  call  to
   //J06XGF//  will usually  improve the  appearance of the
   annotation  considerably. The size of the labelling also
   affects  the  frequency of the  labelling  along any one
   contour    line.  Contours   are  not  labelled  if  the
   subroutine estimates that there is insufficient room.

   Unchanged on exit.

 IHIGH - INTEGER.

   On entry, IHIGH must  specify the  frequency  with which
   contour  heights are to be highlighted. If IHIGH = 0, no
   contours are highlighted.  Otherwise  contours of height
   CHTS(1)  and   every  subsequent  IHIGH(th)  height  are
   highlighted.  For highlighting,  //J06GFF//  selects pen
   number 2 to draw any contour to be highlighted,  and pen
   number 1 otherwise.  The selection of a pen involves the
   setting of a particular  colour,  linetype and text font
   within //J06GFF// - for full details on highlighting see
   the Essential Introduction to the NAG Supplement Manual.
   The default settings of the pens ensure that pen numbers
   1 and 2 can be  distinguished  on most graphical  output
   devices; the user can  @L0program@L1  the pen appearance
   via the NAG Graphical  Interface routine  //J06XDF//. If
   highlighting  is  selected,  pen number 1 is in force on
   exit from //J06GFF//.  Note however that if IHIGH = 0 no
   pen  selection  whatsoever  is made  within  //J06GFF//;
   thus  settings of colour,  linetype and text font are as
   on entry to //J06GFF//.

   Unchanged on exit.

 IGRID - INTEGER.

   On entry, IGRID must  specify the type of border or grid
   to be drawn. If IGRID = 0 no border or grid is drawn. If
   IGRID = 1 a border only is drawn; if IGRID = 2 the lines
   of the tracking mesh are drawn.

   Unchanged on exit.

 LWS - LOGICAL array of DIMENSION at least (NLWS).

   Used as working space.

 NLWS - INTEGER.

   On entry, NLWS must specify the  dimension  of the array
   LWS. NLWS.GE.3*NV*NH.

   Unchanged on exit.

 WS - //real// array of DIMENSION at least (NWS).

   Used as working space.

 NWS - INTEGER.

   On entry, NWS must  specify the  dimension  of the array
   WS. NWS.GE.NV*NH.

   Unchanged on exit.

 IFAIL - INTEGER.

   Before  entry, IFAIL must be assigned a value. For users
   not familiar with this  parameter  (described in Chapter
   P01 of the NAG FORTRAN Library Manual or the NAG On-line
   Information  Supplement)  the  recommended  value  is 0.
   Unless the routine  detects an error (see next section),
   IFAIL contains 0 on exit.

 D. Error Indicators and Warnings
 ================================


 Errors detected by the routine:-


   IFAIL = 1

     On entry, ICH.LT.0,
            or ICH.GT.2,
            or ILAB.LT.0,
            or IHIGH.LT.0,
            or IGRID.LT.0,
            or IGRID.GT.2,
            or D.LE.0.0,
            or D.GT.0.5,
            or ICH = 2 and NCHTS.LT.2.

   IFAIL = 2

     On entry, NV.LT.2,
            or NH.LT.2,
            or NCHTS.LT.1.

   IFAIL = 3

     On entry, NLWS.LT.3*NV*NH,
            or NWS.LT.NV*NH.

   IFAIL = 4

     The  routine has halved the tracking  step length five
     times  but has failed to locate the next  point on the
     contour. This would indicate a very sharp curvature on
     the  contour. It may be possible to  overcome  this by
     using a different  value of D, the tracking  step size
     factor,  or by  slightly  changing  the  value  of the
     contour    height   at    which  the  problem  occurs.
     Intuitively  a smaller value of D should be tried, but
     occasionally  a larger value overcomes the difficulty.
     Also it is sometimes the case that changing the values
     of NV and NH may overcome the  difficulty  as this can
     change the starting point of closed contours.

 ------
 END OF J06GFF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06GZF ROUTINE
 J06GZF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06GZF// draws a table of contour heights.

 B. Specification
 ================

        SUBROUTINE //J06GZF// (CHTS, NCHTS, IFORM,
       1   NWIDTH, NDP)
  C     INTEGER NCHTS, IFORM, NWIDTH, NDP
  C     //real// CHTS(NCHTS)

 C. Parameters
 =============


 CHTS - //real// array of DIMENSION at least (NCHTS).

   Before entry, CHTS(I),  I = 1,...,NCHTS must contain the
   contour heights to be included in the table.

   Unchanged on exit.

 NCHTS - INTEGER.

   On  entry,  NCHTS must  specify  the  number of  contour
   heights to be listed. NCHTS.GE.1.

   Unchanged on exit.

 IFORM - INTEGER.

   On entry, IFORM must  specify the output  format for the
   contour heights

     IFORM = 1 -   FORTRAN floating point
                    format
     IFORM = 2 -   FORTRAN fixed point
                    format

   If  IFORM.NE.1  or 2, the  contour  heights  will not be
   drawn,  although  the frame of the table and the contour
   indices will be drawn.

   Unchanged on exit.

 NWIDTH - INTEGER.
 NDP - INTEGER.

   On entry, NWIDTH and NDP must specify the output  format
   details  for the  contour  heights.  If  IFORM = 1,  the
   heights are output in FORTRAN floating point format with
   NDP    decimal  places,  in  a  field  of  width  NWIDTH
   characters.  If  IFORM = 2,  the  heights  are output in
   FORTRAN fixed point format with NDP decimal places, in a
   field of width NWIDTH characters.

   For floating point format, 1.LE.NWIDTH.LE.20,
   NWIDTH.GE.NDP + 7, NDP.GT.0.
   For fixed point format, 1.LE.NWIDTH.LE.20,
   NWIDTH.GT.NDP + 1, NDP.GE.0.

   If these  restrictions  are violated, no contour heights
   may be printed, or NWIDTH asterisks may be produced.

   Unchanged on exit.

 D. Error Indicators and Warnings
 ================================

   None.

 ------
 END OF J06GZF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06HAF ROUTINE
 J06HAF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06HAF//    draws    an    isometric  projection  of  a
  single-valued three-dimensional surface Z(X,Y) defined at
  points on a regular rectangular grid.

  WARNING:  When using this routine the data region  should
  be set equal to the  viewport  to avoid  distortion  (see
  section 3 of the Graphical  Supplement routine document).

 B. Specification
 ================

        SUBROUTINE //J06HAF// (HTS, M, N, IROT, IFAIL)
  C     INTEGER M, N, IROT, IFAIL
  C     //real// HTS(M,N)

 C. Parameters
 =============


 HTS - //real// array of DIMENSION (M,p), where p.GE.N.

   Before  entry,  HTS must  contain  the  surface  heights
   evaluated  on a  regular  rectangular  grid of M*N  mesh
   points.  The  elements of the array  HTS(I,J)  should be
   assigned  so  that I  increases  as X  increases,  and J
   increases as Y increases.

   Unchanged on exit.

 M - INTEGER.
 N - INTEGER.

   On entry, M,N must  specify the number of data points in
   the X and Y direction respectively.
   2.LE.M.LE.50, 2.LE.N.LE.50.

   Unchanged on exit.

 IROT - INTEGER.

   On entry, IROT must  specify the integer  multiple of 90
   degrees  through which the surface is to be rotated. For
   a  rotation of zero  degrees  (IROT=0),  the  surface is
   viewed from the corner  HTS(M,N). The surface is rotated
   clockwise about the Z axis by 90*IROT degrees. 0.LE.IROT
   .LE.3.

   Unchanged on exit.

 IFAIL - INTEGER.

   Before  entry, IFAIL must be assigned a value. For users
   not familiar with this  parameter  (described in Chapter
   P01 of the NAG FORTRAN Library Manual or the NAG On-line
   Information  Supplement)  the  recommended  value  is 0.
   Unless the routine  detects an error (see next section),
   IFAIL contains 0 on exit.

 D. Error Indicators and Warnings
 ================================


 Errors detected by this routine:-


   IFAIL = 1

     On entry, M.LT.2
            or N.LT.2.

   IFAIL = 2

     On entry, IROT.LT.0
            or IROT.GT.3.

   IFAIL = 3

     On entry, M.GT.50
            or N.GT.50.

 ------
 END OF J06HAF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06HBF ROUTINE
 J06HBF NAG GRAPHICAL SUPPLEMENT ROUTINE SUMMARY
 ======

 IMPORTANT:  For  a  complete  specification  of the use of
 this  routine  see the NAG  Graphical  Supplement  Manual.
 Terms marked //...// may be implementation dependent.

 A. Purpose
 ==========

  //J06HBF//    draws    an    isometric  projection  of  a
  single-valued three-dimensional surface Z(X,Y) defined at
  points  on   a  regular  rectangular  grid.  Options  are
  available  for adjusting  the  height/width  ratio of the
  surface, drawing upper and/or lower profiles, and drawing
  sections parallel to either or both axes.

  WARNING:  When using this routine the data region  should
  be set equal to the  viewport  to avoid  distortion  (see
  section 3 of the Graphical  Supplement routine document).

 B. Specification
 ================

        SUBROUTINE //J06HBF// (HTS, M, N, MDIM, HF,
       1   IROT, SOLID, IBASE, ZBASE, JSECT,
       2   ZMIN, ZMAX, RWS, NRWS, IFAIL)
  C     INTEGER M, N, MDIM, IROT, IBASE, JSECT,
  C    1   NRWS, IFAIL
  C     LOGICAL SOLID
  C     //real// HTS(MDIM,N), HF, ZBASE, ZMIN, ZMAX,
  C    1   RWS(NRWS)

 C. Parameters
 =============


 HTS - //real// array of DIMENSION (MDIM,p) where p.GE.N.

   Before  entry,  HTS must  contain  the  surface  heights
   evaluated  on a  regular  rectangular  grid of M*N  mesh
   points.  The  elements of the array  HTS(I,J)  should be
   assigned  so  that I  increases  as X  increases,  and J
   increases as Y increases.

   Unchanged on exit.

 M - INTEGER.
 N - INTEGER.

   On entry, M, N must specify the number of data points in
   the X and Y directions. M.GE.2. N.GE.2.

   Unchanged on exit.

 MDIM - INTEGER.

   On entry, MDIM must specify the first  dimension  of the
   array HTS as declared in the calling  (sub)program. MDIM
   .GE.M.

   Unchanged on exit.

 HF - //real//.

   On  entry, HF must  specify  the height  factor  used to
   determine  the  vertical  scale of the plotted  surface.
   This  value  allows  the user to vary  the  relationship
   between the height representation of the surface and the
   X-Y  extent.  To be  precise,  the  size of the  base as
   measured along the X axis in units of Z is taken as

                       HF*(ZMAX-ZMIN).

   A suitable  value for HF is 2.0; a larger value  results
   in a flatter surface, whereas a smaller value results in
   a steeper surface.

   Unchanged on exit.

 IROT - INTEGER.

   On entry, IROT must  specify the integer  multiple of 90
   degrees  through which the surface is to be rotated. For
   IROT = 0,   the  surface   is  viewed  from  the  corner
   HTS(M,N). The surface is rotated  clockwise  about the Z
   axis through 90 * IROT degrees. 0.LE.IROT.LE.3.

   Unchanged on exit.

 SOLID - LOGICAL.

   On entry, SOLID should be  set .TRUE.  if only the upper
   surface is to be drawn. SOLID should be  set .FALSE.  if
   the surface is a thin plate and both the lower and upper
   surfaces are to be drawn.

   Unchanged on exit.

 IBASE - INTEGER.

   On  entry,  IBASE  must  specify  the type of base to be
   drawn:

     IBASE = 0 -    no base is drawn
     IBASE = -1 -   base drawn through ZMIN
     IBASE = +1 -   base drawn through ZBASE.

   (A base can only be drawn if SOLID is set .TRUE.).

   Unchanged on exit.

 ZBASE - //real//.

   On entry, ZBASE must  specify the height  through  which
   the base is to be drawn if  IBASE = 1.  No  checking  is
   performed   to   verify  that  the  value  of  ZBASE  is
   reasonable.

   On exit, ZBASE contains the height at which the base was
   drawn (or ZMIN if no base drawn).

 JSECT - INTEGER.

   On entry,  JSECT must  specify the method to be used for
   drawing the surface:

     JSECT = -1 -    sections taken parallel to
                     Y axis
     JSECT = +1 -    sections taken parallel to
                     X axis
     JSECT =  0 -    sections taken parallel to
                     both axes.

   Unchanged on exit.

 ZMIN - //real//.
 ZMAX - //real//.

   On entry, ZMIN and ZMAX must  specify  the  minimum  and
   maximum  heights to be used in determining  the vertical
   scale of the surface plot. If on entry ZMIN is set equal
   to  ZMAX, the  subroutine  will scan the  array  HTS and
   assign the minimum and maximum values to ZMIN and ZMAX -
   this is the usual case.  However the user can set values
   in ZMIN and ZMAX;  this can be  useful  for  plotting  a
   number of surfaces to the same vertical scale.

   For  ZMIN not equal to ZMAX on  entry,  the  values  are
   unchanged  on exit;  otherwise  they  are  assigned  the
   appropriate  minimum and maximum  values  from the array
   HTS.


 RWS - //real// array of DIMENSION at least (NRWS).

   Used as working space.

 NRWS - INTEGER.

   On  entry,  NRWS  must  specify  the  dimension  of RWS.
   NRWS.GE.5*max(M,N).

 IFAIL - INTEGER.

   Before  entry, IFAIL must be assigned a value. For users
   not familiar with this  parameter  (described in Chapter
   P01 of the NAG FORTRAN Library Manual or the NAG On-line
   Information  Supplement)  the  recommended  value  is 0.
   Unless the routine  detects an error (see next section),
   IFAIL contains 0 on exit.

 D. Error Indicators and Warnings
 ================================


 Errors detected by this routine:-


   IFAIL = 1

     On entry, M.LT.2
            or N.LT.2
            or MDIM.LT.M.

   IFAIL = 2

     On entry, HF.LE.0.0.

   IFAIL = 3

     On entry,  inconsistent  values of IBASE and SOLID are
     supplied. Occurs if SOLID = .FALSE. and IBASE.NE.0, or
     if IBASE.LT.-1 or IBASE.GT.1.

   IFAIL = 4

     On entry, IROT.LT.0
            or IROT.GT.3.

   IFAIL = 5

     On entry, ZMIN.GT.ZMAX.

   IFAIL = 6

     On entry, NRWS.LT.5*max(M,N).

 ------
 END OF J06HBF GRAPHICAL SUPPLEMENT SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06WAF ROUTINE
 J06WAF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 A. Purpose
 ==========

  //J06WAF// performs two functions:

   (i) it carries out all necessary initialisations for the
       NAG graphical system;

  (ii) it  establishes a mapping of the initial data region
       onto the default viewport.

 B. Specification
 ================

        SUBROUTINE //J06WAF//

 C. Parameters
 =============

   None.

 D. Further Comments
 ===================

   Either  //J06WAF// or  //J06XAF//  must be the first NAG
   Graphical  Supplement routine called. In an overlayed or
   segmented  program, these  routines  should be placed in
   the main overlay or root segment.

   For  an  example  of the use of this  routine,  see  the
   Interface  Test  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06WAF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06WBF ROUTINE
 J06WBF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 A. Purpose
 ==========

  //J06WBF// performs two functions:

   (i) it declares the current data region;

  (ii) it  establishes  a mapping of this data region  onto
       the  current  viewport,  with the option of a margin
       around the plot.

 B. Specification
 ================

        SUBROUTINE //J06WBF// (XMIN, XMAX, YMIN, YMAX,
       1   MARGIN)
  C     INTEGER MARGIN
  C     //real// XMIN, XMAX, YMIN, YMAX

 C. Parameters
 =============

 XMIN - //real//.
 XMAX - //real//.
 YMIN - //real//.
 YMAX - //real//.

   On entry, XMIN, XMAX, YMIN, YMAX must specify the limits
   of  the  user's  data   region;  the  point  (XMIN,YMIN)
   indicates the lower  left-hand  corner, and  (XMAX,YMAX)
   the upper right-hand corner.

   Unchanged on exit.

 MARGIN - INTEGER.

   On entry, MARGIN must specify  whether a margin is to be
   left around the data region. If MARGIN = 0, no margin is
   left; if MARGIN = 1 a margin is included  equivalent  to
   10% of the height of the data region of the plot, and 5%
   at the top, and to 10% of the  width of the data  region
   at the left of the plot, and 5% at the right.

   Unchanged on exit.

 D. Further Comments
 ===================

   If  XMIN = XMAX, or YMIN = YMAX,  the call of //J06WBF//
   is ignored and a warning  message is output to the error
   message channel (see //X04AAF//).

   If   MARGIN.NE.0  or  1,  the  effect  is  the  same  as
   MARGIN = 0, and no warning is given.

   For  an  example  of the use of this  routine,  see  the
   Interface  Test  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06WBF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06WCF ROUTINE
 J06WCF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 A. Purpose
 ==========

  //J06WCF//  sets the  current  viewport  on the  plotting
  surface  and  establishes  a mapping of the current  data
  region onto this viewport.

 B. Specification
 ================

        SUBROUTINE //J06WCF// (P1, P2, Q1, Q2)
  C     //real// P1, P2, Q1, Q2

 C. Parameters
 =============

 P1 - //real//.
 P2 - //real//.
 Q1 - //real//.
 Q2 - //real//.

   On entry, P1, P2, Q1, Q2 must  specify the limits of the
   new  viewport in  normalised  device  co-ordinates  (see
   Essential   Introduction  to  the  Graphical  Supplement
   Manual for details).

   Unchanged on exit.

 D. Further Comments
 ===================

   If P1.LT.0.0, P1.GE.P2, Q1.LT.0.0, or Q1.GE.Q2, the call
   of  //J06WCF//  is  ignored,  and a warning  message  is
   output to the error message channel (see //X04AAF//).

   For  an  example  of the use of this  routine,  see  the
   Interface  Test  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06WCF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06WDF ROUTINE
 J06WDF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 A. Purpose
 ==========

  //J06WDF//  selects a new frame: on a plotter fresh paper
  is taken, on a display the screen is  cleared.  (It is an
  alternative  to  making a direct  call to the  underlying
  package for new frame selection.)

 B. Specification
 ================

        SUBROUTINE //J06WDF//

 C. Parameters
 =============

   None.

 D. Further Comments
 ===================

   This routine is intended as an  alternative  to a direct
   call to the  frame  advance  routine  in the  underlying
   package,  and   simply   increases  the  portability  of
   programs which use the NAG Graphical Supplement.

   Note  that  many  graphical  packages  offer  two  frame
   advance routines for use with interactive  displays: one
   routine clears the screen after receiving a user prompt,
   the other clears the screen  immediately. It is intended
   that, where such a choice is available, //J06WDF// calls
   the former. (If an immediate clear is required, the user
   should  make a  direct  call  to the  alternative  frame
   advance routine in the underlying package.)

   For  an  example  of the use of this  routine,  see  the
   Interface  Test  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06WDF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06WZF ROUTINE
 J06WZF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 A. Purpose
 ==========

  //J06WZF//  terminates  graphical output to the currently
  selected device. (It is an alternative to making a direct
  call to the underlying package for termination.)

 B. Specification
 ================

        SUBROUTINE //J06WZF//

 C. Parameters
 =============

   None.

 D. Further Comments
 ===================

   This routine is intended as an  alternative  to a direct
   call  to  the  termination  routine  in  the  underlying
   package,  and   simply   increases  the  portability  of
   programs which use the NAG Graphical Supplement.

   For  an  example  of the use of this  routine,  see  the
   Interface  Test  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06WZF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06XAF ROUTINE
 J06XAF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 A. Purpose
 ==========

  //J06XAF//  initialises  the NAG graphical  system. It is
  called  automatically by //J06WAF//, but if the user sets
  up  a  mapping  using  direct  calls  to  the  underlying
  package, then //J06XAF//  must be the first NAG graphical
  routine called.

 B. Specification
 ================

        SUBROUTINE //J06XAF//

 C. Parameters
 =============

   None.

 D. Further Comments
 ===================

   Either  //J06WAF// or  //J06XAF//  must be the first NAG
   Graphical  Supplement routine called. In an overlayed or
   segmented  program, these  routines  should be placed in
   the main overlay or root segment.

   Note   that   //J06XAF//  does  not  exist  in  the  NAG
   Lineprinter Interface; //J06WAF// must be used.

   In  the   Lineprinter  Interface,  //J06WAF//  sets  the
   default tolerance factor for straight line approximation
   of curves to 200. This default may be reset by a call to
   //J06XEF//  (pen  attributes,  character  qualities  and
   character and marker scaling  factors have no equivalent
   in the  Lineprinter  Interface,  and  calls to  routines
   which set them will have no effect).

 ------
 END OF J06XAF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06XBF ROUTINE
 J06XBF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 A. Purpose
 ==========

  //J06XBF//  indicates  the user's data  region to the NAG
  graphical    system.  It    is  called  automatically  by
  //J06WBF//,  but if the  user  sets  up a  mapping  using
  direct calls to the underlying  package, then  //J06XBF//
  should be called to pass the data region  information  to
  the NAG system.

 B. Specification
 ================

        SUBROUTINE //J06XBF// (XMIN, XMAX, YMIN, YMAX)
  C     //real// XMIN, XMAX, YMIN, YMAX

 C. Parameters
 =============

 XMIN - //real//.
 XMAX - //real//.
 YMIN - //real//.
 YMAX - //real//.

   On entry, XMIN, XMAX, YMIN, YMAX must specify the limits
   of the user's data  region: the point  (XMIN,YMIN)  must
   indicate   the    lower   left-hand  corner  point,  and
   (XMAX,YMAX) the upper right-hand corner point.

   Unchanged on exit.

 D. Further Comments
 ===================

   This  routine has no graphical  function;  the user must
   specify the required  mapping onto the plotting  surface
   in appropriate calls to the underlying graphics package.

   Note   that   //J06XBF//  does  not  exist  in  the  NAG
   Lineprinter Interface; //J06WBF// must be used.

 ------
 END OF J06XBF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06XDF ROUTINE
 J06XDF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 A. Purpose
 ==========

  //J06XDF//  defines  attributes of colour,  linestyle and
  text  font  for   a  particular  "pen";  it  is  used  in
  conjunction with NAG Graphical  Supplement routines which
  offer a highlighting option.

 B. Specification
 ================

        SUBROUTINE //J06XDF// (IPEN, ICOL, ILSTYL,
       1   IFONT)
  C     INTEGER IPEN, ICOL, ILSTYL, IFONT

 C. Parameters
 =============

 IPEN - INTEGER.

   On entry, IPEN must  specify  the  particular  pen being
   defined (1.LE.IPEN.LE.4).

   Unchanged on exit.

 ICOL - INTEGER.
 ILSTYL - INTEGER.
 IFONT - INTEGER.

   On entry, ICOL,  ILSTYL,  IFONT must specify the colour,
   linestyle  and  text  font  values  respectively  of pen
   number IPEN.

   Unchanged on exit.

 D. Further Comments
 ===================

   If  IPEN.LT.1 or  IPEN.GT.4,  or any of ICOL,  ILSTYL or
   IFONT is outside the range  defined  for the  particular
   implementation  of the Interface, the call to //J06XDF//
   is ignored and a warning  message is output to the error
   message channel (see //X04AAF//).

   For  an  example  of the use of this  routine,  see  the
   Interface  Test  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06XDF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06XEF ROUTINE
 J06XEF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 A. Purpose
 ==========

  //J06XEF// sets the tolerance factor used in the straight
  line approximation of curves.

 B. Specification
 ================

        SUBROUTINE //J06XEF// (ITOLF)
  C     INTEGER ITOLF

 C. Parameters
 =============


 ITOLF - INTEGER.

   On entry,  ITOLF must  specify  the  required  tolerance
   factor.

   Unchanged on exit.

 D. Further Comments
 ===================

   If  ITOLF.LE.0, the call to //J06XEF// is ignored, and a
   warning  message is output to the error message  channel
   (see //X04AAF//).

   For  an  example  of the use of this  routine,  see  the
   Interface  Test  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06XEF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06XFF ROUTINE
 J06XFF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 A. Purpose
 ==========

  //J06XFF//  selects  character and marker quality; medium
  and high qualities are available.

 B. Specification
 ================

        SUBROUTINE //J06XFF// (IQUAL)
  C     INTEGER IQUAL

 C. Parameters
 =============

 IQUAL - INTEGER.

   On entry,  IQUAL must  specify  the  required  character
   quality.  IQUAL = 1  selects medium  quality;  IQUAL = 2
   selects  high quality. By default,  ITOLF is set to 2000
   (except in the Lineprinter  Interface where it is set to
   200).

   Unchanged on exit.

 D. Further Comments
 ===================

   If  IQUAL.LT.1 or IQUAL.GT.2,  the call to //J06XFF// is
   ignored,  and a warning  message  is output to the error
   message channel (see //X04AAF//).

   For  an  example  of the use of this  routine,  see  the
   Interface  Test  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06XFF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06XGF ROUTINE
 J06XGF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 A. Purpose
 ==========

  //J06XGF// sets character size scaling factors.

 B. Specification
 ================

        SUBROUTINE //J06XGF// (CSCW, CSCH)
  C     //real// CSCW, CSCH

 C. Parameters
 =============

 CSCW - //real//.
 CSCH - //real//.

   On entry, CSCW, CSCH must specify scale  factors for the
   width  and  height   of  all  characters  drawn  by  NAG
   Graphical Supplement routines.

   Unchanged on exit.

 D. Further Comments
 ===================

   If CSCW.LE.0.0 or CSCH.LE.0.0, the call to //J06XGF// is
   ignored,  and a warning  message  is output to the error
   message channel (see //X04AAF//).

   For  an  example  of the use of this  routine,  see  the
   Interface  Test  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06XGF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06XHF ROUTINE
 J06XHF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 A. Purpose
 ==========

  //J06XHF// sets the marker size scaling factor.

 B. Specification
 ================

        SUBROUTINE //J06XHF// (AMSC)
  C     //real// AMSC

 C. Parameters
 =============

 AMSC - //real//.

   On entry, AMSC must specify a scale  factor for the size
   of all markers drawn.

   Unchanged on exit.

 D. Further Comments
 ===================

   If AMSC.LE.0.0, the call to //J06XHF// is ignored, and a
   warning  message is output to the error message  channel
   (see //X04AAF//).

   For  an  example  of the use of this  routine,  see  the
   Interface  Text  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06XHF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06YAF ROUTINE
 J06YAF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement.  Terms  marked
 // ... // may be implementation dependent.

 This  routine  may be called  directly  by users,  but its
 specification  may  change  at  Mark  2 to  reflect  moves
 towards standardisation of graphical interfaces.

 A. Purpose
 ==========

  //J06YAF//  moves the pen to the  position  (X,Y) in user
  co-ordinates. No line is drawn.

 B. Specification
 ================

        SUBROUTINE //J06YAF// (X, Y)
  C     //real// X, Y

 C. Parameters
 =============

 X - //real//.
 Y - //real//.

   On entry, X, Y must specify the X and Y co-ordinates  of
   the new pen position.

   Unchanged on exit.

 D. Further Comments
 ===================

   For  an  example  of the use of this  routine,  see  the
   Interface  Test  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06YAF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06YBF ROUTINE
 J06YBF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 This  routine  may be called  directly  by users,  but its
 specification  may  change  at  Mark  2 to  reflect  moves
 towards standardisation of graphical interfaces.

 A. Purpose
 ==========

  //J06YBF//  increments  the  pen  position  by an  amount
  (DX,DY) in user co-ordinates. No line is drawn.

 B. Specification
 ================

        SUBROUTINE //J06YBF// (DX, DY)
  C     //real// DX, DY

 C. Parameters
 =============

 DX - //real//.
 DY - //real//.

   On  entry,  DX,   DY   must  specify  the  pen  position
   increments.

   Unchanged on exit.

 D. Further Comments
 ===================

   For  an  example  of the use of this  routine,  see  the
   Interface  Test  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06YBF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06YCF ROUTINE
 J06YCF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 This  routine  may be called  directly  by users,  but its
 specification  may  change  at  Mark  2 to  reflect  moves
 towards standardisation of graphical interfaces.

 A. Purpose
 ==========

  //J06YCF//  draws a line from the current pen position to
  the position (X,Y) in user co-ordinates. The pen position
  is updated to (X,Y).

 B. Specification
 ================

        SUBROUTINE //J06YCF// (X, Y)
  C     //real// X, Y

 C. Parameters
 =============

   X - //real//.
   Y - //real//.

   On entry, X,Y must specify the X and Y  co-ordinates  of
   the point to which the line is to be drawn.

   Unchanged on exit.

 D. Further Comments
 ===================

   For  an  example  of the use of this  routine,  see  the
   Interface  Test  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06YCF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06YDF ROUTINE
 J06YDF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 This  routine  may be called  directly  by users,  but its
 specification  may  change  at  Mark  2 to  reflect  moves
 towards standardisation of graphical interfaces.

 A. Purpose
 ==========

  //J06YDF//  draws a line from the current  pen  position,
  advancing by an increment  (DX,DY) in user  co-ordinates.
  The current pen position is incremented by (DX,DY).

 B. Specification
 ================

        SUBROUTINE //J06YDF// (DX, DY)
  C     //real// DX, DY

 C. Parameters
 =============

 DX - //real//.
 DY - //real//.

   On entry, DX, DY must specify the X and Y increments  of
   the line to be drawn.

   Unchanged on exit.

 D. Further Comments
 ===================

   For  an  example  of the use of this  routine,  see  the
   Interface  Test  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06YDF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06YGF ROUTINE
 J06YGF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 This  routine  may be called  directly  by users,  but its
 specification  may  change  at  Mark  2 to  reflect  moves
 towards standardisation of graphical interfaces.

 A. Purpose
 ==========

  //J06YGF//  draws a marker,  centred at the  current  pen
  position. The current pen position itself is unchanged.

 B. Specification
 ================

        SUBROUTINE //J06YGF// (IMARK)
  C     INTEGER IMARK

 C. Parameters
 =============

 IMARK - INTEGER.

   On  entry,  IMARK must  specify  the  particular  marker
   required. 1.LE.IMARK.LE.9.

   Unchanged on exit.

   The          appearance      of    each  symbol  may  be
   Interface-dependent,       implementation-dependent  and
   hardware device-dependent.

   A simple test  program to generate  them all is probably
   the easiest way of determining their precise appearance.

   For   those    Interface   versions  supported  by  NAG,
   approximate  symbol  shapes are given in the Appendix to
   the Essential Introduction.

 D. Further Comments
 ===================

   If   IMARK.LT.1   or  IMARK.GT.9,  marker  number  1  is
   selected.  If it proves  impossible to draw a particular
   marker  in  a  certain  implementation,  an  alternative
   symbol will be used.

   For  an  example  of the use of this  routine,  see  the
   Interface  Test  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06YGF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06YHF ROUTINE
 J06YHF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 This  routine  may be called  directly  by users,  but its
 specification  may  change  at  Mark  2 to  reflect  moves
 towards standardisation of graphical interfaces.

 A. Purpose
 ==========

  //J06YHF// draws a sequence of N characters  stored in A1
  format in the array  ICHAR,  starting at the current  pen
  position.

  On  exit,  the  current  pen  position  follows  the last
  character drawn.

 B. Specification
 ================

        SUBROUTINE //J06YHF// (ICHAR, N)
  C     INTEGER ICHAR(N), N

 C. Parameters
 =============


 ICHAR - INTEGER array of DIMENSION at least (N).

   On entry,  ICHAR(I),  I = 1,...,N,  must  contain  the N
   characters  to  be  drawn,  stored  in  A1  format.  The
   available character set is

     ABCDEFGHIJKLMNOPQRSTUVWXYZ
     0123456789
     -+*/=(),. and blank.

   Unchanged on exit.

 D. Further Comments
 ===================

   For  an  example  of the use of this  routine,  see  the
   Interface  Test  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06YHF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06YJF ROUTINE
 J06YJF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 This  routine  may be called  directly  by users,  but its
 specification  may  change  at  Mark  2 to  reflect  moves
 towards standardisation of graphical interfaces.

 A. Purpose
 ==========

  //J06YJF// sets the size of markers.

 B. Specification
 ================

        SUBROUTINE //J06YJF// (SIZE)
  C     //real// SIZE

 C. Parameters
 =============

 SIZE - //real//.

   On entry,  SIZE must  specify  the width of markers in X
   axis units.

   Unchanged on exit.

 D. Further Comments
 ===================

   //J06YJF//  is  called  by  Supplement  routines  to set
   marker size. The actual size drawn is scaled by a factor
   which is set to 1.0 at initialisation,  but which may be
   altered by the user through a call to //J06XHF//.

   If SIZE.LE.0.0, the call to //J06YJF// is ignored.

   For  an  example  of the use of this  routine,  see  the
   Interface  Test  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06YJF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06YKF ROUTINE
 J06YKF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 This  routine  may be called  directly  by users,  but its
 specification  may  change  at  Mark  2 to  reflect  moves
 towards standardisation of grahical interfaces.

 A. Purpose
 ==========

  //J06YKF// sets the width and height of characters.

 B. Specification
 ================

        SUBROUTINE //J06YKF// (WIDTH, HEIGHT)
  C     //real// WIDTH, HEIGHT

 C. Parameters
 =============


 WIDTH - //real//.

   On entry, WIDTH must specify the width of characters  in
   X axis units.

   Unchanged on exit.

 HEIGHT - //real//.

   On entry,  HEIGHT must specify the height of  characters
   in Y axis units.

   Unchanged on exit.

 D. Further Comments
 ===================

   //J06YKF//  is  called  by  Supplement  routines  to set
   character size. The actual size drawn is scaled by width
   and    height    factors,   which  are  set  to  1.0  at
   initialisation  but  which  may be  altered  by the user
   through a call to //J06XGF//.

   Note that the fitting of a character  within a character
   box may depend on the  character  quality  selected  see
   section  3 of the  //J06YHF//  routine  document  in the
   Graphical Supplement Manual.

   If WIDTH.LE.0.0 or HEIGHT.LE.0.0, the call to //J06YKF//
   is ignored.

   For  an  example  of the use of this  routine,  see  the
   Interface  Test  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06YKF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06YLF ROUTINE
 J06YLF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 This  routine  may be called  directly  by users,  but its
 specification  may  change  at  Mark  2 to  reflect  moves
 towards standardisation of graphical interfaces.

 A. Purpose
 ==========

  //J06YLF// sets the spacing between characters.

 B. Specification
 ================

        SUBROUTINE //J06YLF// (DX, DY)
  C     //real// DX, DY

 C. Parameters
 =============

 DX - //real//.
 DY - //real//.

   On  entry,  DX, DY  must  specify  the  movement  of the
   current pen position in the X and Y directions,  after a
   character is drawn.

   Unchanged on exit.

 D. Further Comments
 ===================

   //J06YLF//  is  called  by  Supplement  routines  to set
   character  spacing. When the routines are executed,  the
   actual spacing is scaled by any width and height factors
   set by the user in a call to  //J06XGF//,  i.e. the same
   scale  factors as are applied to character size are also
   applied to character spacing.

   Note also that a positive  increment  in the X direction
   is taken as a  left-to-right  increment on the  plotting
   surface, and a positive  increment in the Y direction as
   a  bottom-to-top  increment  -  this  is to  accommodate
   situations  where  the user  specifies  his data  region
   limits  the "wrong way  round",  i.e.  XMIN.GT.XMAX,  or
   YMIN.GT.YMAX, or both.

   For  an  example  of the use of this  routine,  see  the
   Interface  Test  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06YLF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06YMF ROUTINE
 J06YMF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 This  routine  may be called  directly  by users,  but its
 specification  may  change  at  Mark  2 to  reflect  moves
 towards standardisation of graphical interfaces.

 A. Purpose
 ==========

  //J06YMF// selects a particular pen.

 B. Specification
 ================

        SUBROUTINE //J06YMF// (IPEN)
  C     INTEGER IPEN

 C. Parameters
 =============


 IPEN - INTEGER.

   On entry, IPEN must  specify the  particular  pen number
   required.

   Unchanged on exit.

 D. Further Comments
 ===================

   If IPEN.LT.1 or IPEN.GT.4, pen number 1 is selected.

   For  an  example  of the use of this  routine,  see  the
   Interface  Test  Program  in  the  Graphical  Supplement
   Manual.

 ------
 END OF J06YMF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06ZAF ROUTINE
 J06ZAF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 A. Purpose
 ==========

  //J06ZAF// draws a text string.

 B. Specification
 ================

        SUBROUTINE //J06ZAF// (ICHARS, NCHARS)
  C     INTEGER ICHARS(NCHARS), NCHARS

 C. Parameters
 =============

 ICHARS - INTEGER array of DIMENSION
   at  least  (NCHARS),  or  Hollerith  constant  of length
   NCHARS.

   On entry,  ICHARS must contain the text to be output. If
   ICHARS  is an  INTEGER  array,  the  characters  must be
   stored in An format, where n is the number of characters
   which can be stored in one integer location.

   Unchanged on exit.

 NCHARS - INTEGER.

   On entry,  NCHARS must specify the number of  characters
   to be drawn. NCHARS.LE.80.

   If  NCHARS.GT.80,  only the first 80 characters  will be
   drawn.

   Unchanged on exit.

 D. Further Comments
 ===================

   None.

 ------
 END OF J06ZAF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06ZBF ROUTINE
 J06ZBF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 A. Purpose
 ==========

  //J06ZBF// draws an integer in FORTRAN integer format.

 B. Specification
 ================

        SUBROUTINE //J06ZBF// (NUM, NWIDTH)
  C     INTEGER NUM, NWIDTH

 C. Parameters
 =============


 NUM - INTEGER.

   On entry, NUM must contain the integer to be drawn.

   Unchanged on exit.

 NWIDTH - INTEGER.

   On entry, NWIDTH must specify the format for NUM.

   Unchanged on exit.

 D. Further Comments
 ===================

   None.

 ------
 END OF J06ZBF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06ZCF ROUTINE
 J06ZCF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 A. Purpose
 ==========

  //J06ZCF//  draws a //real//  number in FORTRAN  floating
  point format.

 B. Specification
 ================

        SUBROUTINE //J06ZCF// (FNUM, NWIDTH, NDP)
  C     INTEGER NWIDTH, NDP
  C     //real// FNUM

 C. Parameters
 =============


 FNUM - //real//.

   On entry, FNUM must contain the number to be drawn.

   Unchanged on exit.

 NWIDTH - INTEGER.
 NDP - INTEGER.

   On entry,  NWIDTH, NDP must specify the format for FNUM.
   If NWIDTH.GT.0, FNUM is drawn right-justified in a field
   of total  width  NWIDTH  character  positions,  with NDP
   figures after the decimal point.
   8.LE.NWIDTH.LE.20
   1.LE.NDP.LE.NWIDTH-7.

   If NWIDTH.LE.0,  FNUM is drawn  left-justified  with NDP
   figures after the decimal point.
   1.LE.NDP.LE.13.

   In each case, one place is received for the sign.

   Unchanged on exit.

 D. Further Comments
 ===================

   None.

 ------
 END OF J06ZCF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------
J06ZDF ROUTINE
 J06ZDF NAG GRAPHICAL INTERFACE ROUTINE SUMMARY
 ======

 IMPORTANT: For a complete specification of the use of this
 routine see the NAG  Graphical  Supplement  Manual.  Terms
 marked // ... // may be implementation dependent.

 A. Purpose
 ==========

  //J06ZDF// draws a //real// number in FORTRAN fixed point
  format.

 B. Specification
 ================

        SUBROUTINE //J06ZDF// (FNUM, NWIDTH, NDP)
  C     INTEGER NWIDTH, NDP
  C     //real// FNUM

 C. Parameters
 =============


 FNUM - //real//.

   On entry, FNUM must contain the real number to be drawn.

   Unchanged on exit.

 NWIDTH - INTEGER.
 NDP - INTEGER.

   On  entry,  NWIDTH,  NDP  specify  the format  for FNUM.
   NWIDTH  must  specify the total  width of the field, and
   NDP must specify the number of figures after the decimal
   point.

   If  NWIDTH.GT.0,  FNUM   is  drawn  right-justified  and
   2.LE.NWIDTH.LE.20,
   0.LE.NDP.LE.NWIDTH-2.

   If NWIDTH.GE.0, 0.LE.NDP.LE.18.

   Unchanged on exit.

 D. Further Comments
 ===================

   None.

 ------
 END OF J06ZDF GRAPHICAL INTERFACE SUMMARY - MARK 1
 NOVEMBER 1981
 ------

S07AAF Tan(x)

S09AAF Arcsin(x)
S09ABF Arccos(x)

S10AAF Tanh(x)
S10ABF Sinh(x)
S10ACF Cosh(x)

S11AAF Arctanh(x)
S11ABF Arcsinh(x)
S11ACF Arccosh(x)

S13AAF Exponential integral, E1(x)
S13ACF Cosine integral, Ci(x)
S13ADF Sine integral, Si(x)

S14AAF Gamma function
S14ABF Log Gamma function

S15ABF Cumulative normal distribution function, P(x)
S15ACF Complement of cumulative normal distribution function, Q(x)
S15ADF Complement of error function, erfc(x)
S15AEF Error function, erf(x)
S15AFF Dawson's integral

S17ACF Bessel functions, Y0(x)
S17ADF Bessel functions, Y1(x)
S17AEF Bessel functions, J0(x)
S17AFF Bessel functions, J1(x)
S17AGF Airy functions, Ai(x)
S17AHF Airy functions, Bi(x)
S17AJF Airy functions, Ai'(x)
S17AKF Airy functions, Bi'(x)

S18ACF Modified Bessel functions, K0(x)
S18ADF Modified Bessel functions, K1(x)
S18AEF Modified Bessel functions, I0(x)
S18AFF Modified Bessel functions, I1(x)
S18CCF Modified Bessel functions, exp(x)*K0(x)
S18CDF Modified Bessel functions, exp(x)*K1(x)
S18CEF Modified Bessel functions, exp(-abs(x))*I0(x)
S18CFF Modified Bessel functions, exp(-abs(x))*I1(x)

S20ACF Fresnel integrals, S(x)
S20ADF Fresnel integrals, C(x)

S21BAF Elliptic integrals, degenerate symmetrised integral of 1st kind, Rc(x,y)
S21BBF Elliptic integrals, symmetrised integral of 1st kind, Rf(x,y,z)
S21BCF Elliptic integrals, symmetrised integral of 2nd kind, Rd(x,y,z)
S21BDF Elliptic integrals, symmetrised integral of 3rd kind, Rj(x,y,z,r)

P01AAF Return value of error indicator/terminate with error message

C02ADF All zeros of polynomial, Grant and Hitchins' method, complex coefficients
C02AEF All zeros of polynomial, Grant and Hitchins' method, real coefficients

X01AAF Pi
X01ABF Euler's constant, Gamma

X02AAF Smallest possible e such that 1.0+e > 1.0
X02ABF Smallest representable positive real number
X02ACF Largest representable positive real number
X02ADF Ratio of X02ABF to X02AAF
X02AEF Largest negative permissible argument for EXP
X02AFF Largest positive permissible argument for EXP
X02AGF Smallest representable positive real number with reciprocal also
 representable
X02AHF Largest permissible argument for SIN and COS
X02BAF Base of floating-point arithmetic
X02BBF Largest representable integer
X02BCF Largest positive integer power to which 2.0 can be raised
 without overflow
X02BDF Largest negative integer power to which 2.0 can be raised
 without underflow
X02BEF Maximum number of decimal digits that can be represented
X02CAF Estimate of active-set size (for paged virtual store machines)
X02DAF Switch for taking precautions to avoid underflow

X04AAF Return or set unit number for error messages
X04ABF Return or set unit number for advisory messages

SUMMARY
                   NAG FORTRAN MARK 10 LIBRARY CONCISE SUMMARY

     N.B. This summary does not include routines which have been scheduled
          for withdrawal at Mark 11.

 A02	complex arithmetic
 C02	zeros of polynomials
 C05	roots of one or more transendental equations
 C06	summation of series
 D01	quadrature
 D02	ordinary differential equations
 D03	partial differential equations
 D04	numerical differentiation
 D05	integral equations
 E01	interpolation
 E02	curve and surface fitting
 E04	minimizing or maximizing a function
 F01	matrix operations, including inversion
 F02	eigenvalues and eigenvectors
 F03	determinants
 F04	simultaneous linear equations
 F05	orthogonalisation
 G01	simple calculations on statistical data
 G02	correlation and regression analysis
 G04	analysis of variance
 G05	random number generators
 G08	nonparametric statistics
 G13	time series analysis
 H	operations research
 J06    NAG mark 1 graphical supplement
 M01	sorting
 P01	error trapping
 S	approximations of special functions
 X01	mathematical constants
 X02	machine constants
 X03	innerproducts
 X04	input/output utilities
C06ACF Circular convolution of two real vectors of period 2**M
C06ADF Discrete Fourier transform, F.F.T. algorithm,
 complex data values within a multi-variable transform
C06BAF Acceleration of convergence of a sequence, by epsilon algorithm
C06DBF Sum of a Chebyshev series
C06EAF Discrete Fourier transform, F.F.T. algorithm,
 no extra workspace, real data values
C06EBF Discrete Fourier transform, F.F.T. algorithm,
 no extra workspace, complex data values (Hermitian sequence)
C06ECF Discrete Fourier transform, F.F.T. algorithm,
 no extra workspace, complex data values (general sequence)
C06FAF Discrete Fourier transform, F.F.T. algorithm,
 extra workspace for greater speed, real data values
C06FBF Discrete Fourier transform, F.F.T. algorithm,
 extra workspace for greater speed, complex data values (Hermitian sequence)
C06FCF Discrete Fourier transform, F.F.T. algorithm,
 extra workspace for greater speed, complex data values (general sequence)
C06GBF Complex conjugate of complex data values, Hermitian sequence
C06GCF Complex conjugate of complex data values, general sequence

D01AHF Quadrature for one-dimensional integrals,
 adaptive integration of a function over a finite interval,
 strategy due to Patterson, suitable for well-behaved integrands
D01AJF Quadrature for one-dimensional integrals,
 adaptive integration of a function over a finite interval,
 strategy due to Piessens & de Doncker, allowing for badly-behaved integrands
D01AKF Quadrature for one-dimensional integrals,
 adaptive integration of a function over a finite interval,
 method suitable for oscillating functions
D01ALF Quadrature for one-dimensional integrals,
 adaptive integration of a function over a finite interval,
 allowing for singularities at user-specified points
D01AMF Quadrature for one-dimensional integrals,
 adaptive integration of a function over an infinite or semi-infinite interval
D01ANF Quadrature for one-dimensional integrals,
 adaptive integration of a function over a finite interval,
 weight function cos(wx) or sin(wx)
D01APF Quadrature for one-dimensional integrals,
 adaptive integration of a function over a finite interval,
 weight function with end-point singularities of algebraico-logarithmic type
D01AQF Quadrature for one-dimensional integrals,
 adaptive integration of a function over a finite interval,
 weight function 1/(x-c) (Hilbert transform)
D01ARF Quadrature for one-dimensional integrals,
 adaptive integration of a function over a finite interval,
 with provision for indefinite integrals also
D01BAF Quadrature for one-dimensional integrals, Gaussian rule-evaluation
D01BBF Weights and abscissae for Gaussian quadrature rules,
 restricted choice of rule, using pre-computed weights and abscissae
D01BCF Weights and abscissae for Gaussian quadrature rules,
 more general choice of rule, calculating the weights and abscissae
D01BDF Quadrature for one-dimensional integrals,
 non-adaptive integration over a finite interval
D01DAF Quadrature for two-dimensional integrals over a finite region
D01FBF Quadrature for multi-dimensional integrals, over a hyper-rectangle,
 Gaussian rule-evaluation
D01FCF Quadrature for multi-dimensional integrals, over a hyper-rectangle,
 adaptive method
D01FDF Quadrature for multi-dimensional integrals,
 over a general product region, Sag-Szekeres method (also over n-sphere)
D01GAF Quadrature for one-dimensional integrals,
 integration of a function defined by data values only
D01GBF Quadrature for multi-dimensional integrals, over a hyper-rectangle,
 Monte-Carlo method
D01GCF Quadrature for multi-dimensional integrals,
 over a general product region, number-theoretic method
D01GYF Korobov optimal coefficients for use in D01GCF,
 when number of points is prime
D01GZF Korobov optimal coefficients for use in D01GCF,
 when number of points is a product of 2 primes
D01JAF Quadrature for multi-dimensional integrals, over an n-sphere (n<=4),
 allowing for badly behaved integrands
D01PAF Quadrature for multi-dimensional integrals, over an n-simplex

E04ABF Minimum, function of one variable using function values only
E04BBF Minimum, function of one variable, using first derivative
E04CCF Unconstrained minimum, function of several variables, (comprehensive),
 using function values only, simplex algorithm
E04CGF Unconstrained minimum, function of several variables, (easy-to-use),
 using function values only, quasi-Newton algorithm
E04DBF Unconstrained minimum, function of several variables, (comprehensive),
 using first derivatives, conjugate direction algorithm
E04DEF Unconstrained minimum, function of several variables, (easy-to-use),
 using first derivatives, quasi-Newton algorithm
E04DFF Unconstrained minimum, function of several variables, (easy-to-use),
 using first derivatives, modified Newton algorithm
E04EBF Unconstrained minimum, function of several variables, (easy-to-use),
 using first and second derivatives, modified Newton algorithm
E04FCF Unconstrained minimum, function of several variables, sum of squares,
 (comprehensive), using function values only,
 combined Gauss-Newton and modified Newton algorithm
E04FDF Unconstrained minimum, function of several variables, sum of squares,
 (easy-to-use), using function values only,
 combined Gauss-Newton and modified Newton algorithm
E04GBF Unconstrained minimum, function of several variables, sum of squares,
 (comprehensive), using first derivatives,
 combined Gauss-Newton and quasi-Newton algorithm
E04GCF Unconstrained minimum, function of several variables, sum of squares,
 (easy-to-use), using first derivatives,
 combined Gauss-Newton and quasi-Newton algorithm
E04GDF Unconstrained minimum, function of several variables, sum of squares,
 (comprehensive), using first derivatives,
 combined Gauss-Newton and modified Newton algorithm
E04GEF Unconstrained minimum, function of several variables, sum of squares,
 (easy-to-use), using first derivatives,
 combined Gauss-Newton and modified Newton algorithm
E04HBF Finite-difference intervals for estimating first derivatives
E04HCF Check user's routine calculating first derivatives of function
E04HDF Check user's routine calculating second derivatives of function
E04HEF Unconstrained minimum, function of several variables, sum of squares,
 (comprehensive), using second derivatives,
 combined Gauss-Newton and modified Newton algorithm
E04HFF Unconstrained minimum, function of several variables, sum of squares,
 (easy-to-use), using second derivatives,
 combined Gauss-Newton and modified Newton algorithm
E04JAF Minimum, function of several variables, simple bounds, (easy-to-use),
 using function values only, quasi-Newton algorithm
E04JBF Minimum, function of several variables, simple bounds, (comprehensive),
 using function values only, quasi-Newton algorithm
E04KAF Minimum, function of several variables, simple bounds, (easy-to-use),
 using first derivatives, quasi-Newton algorithm
E04KBF Minimum, function of several variables, simple bounds, (comprehensive),
 using first derivatives, quasi-Newton algorithm
E04KCF Minimum, function of several variables, simple bounds, (easy-to-use),
 using first derivatives, modified Newton algorithm
E04KDF Minimum, function of several variables, simple bounds, (comprehensive),
 using first derivatives, modified Newton algorithm
E04LAF Minimum, function of several variables, simple bounds, (easy-to-use),
 using first and second derivatives, modified Newton algorithm
E04LBF Minimum, function of several variables, simple bounds, (comprehensive),
 using first and second derivatives, modified Newton algorithm
E04UAF Minimum, function of several variables, general non-linear constraints,
 using function and constraint values only,
 sequential augmented Lagrangian quasi-Newton method
E04VAF Minimum, function of several variables, general non-linear constraints,
 using first derivatives, sequential augmented Lagrangian quasi-Newton method
E04VBF Minimum, function of several variables, general non-linear constraints,
 using first derivatives,
 sequential augmented Lagrangian modified Newton method
E04WAF Minimum, function of several variables, general non-linear constraints,
 using first and second derivatives,
 sequential augmented Lagrangian modified Newton method
E04YAF Check user's routine calculating Jacobian of first derivatives
E04YBF Check user's routine calculating second derivative term
 in Hessian matrix of sum of squares
E04ZAF Check user's routines calculating
 first derivatives of function and constraints
E04ZBF Check user's routines calculating
 second derivatives of function and constraints

F04AAF Simultaneous linear equations, (black box), real matrix,
 approximate solution, multiple right hand sides
F04ABF Simultaneous linear equations, (black box),
 real symmetric positive-definite matrix, accurate solution,
 multiple right hand sides
F04ACF Simultaneous linear equations, (black box),
 real symmetric positive-definite band matrix,
 approximate solution, multiple right hand sides
F04ADF Simultaneous linear equations, (black box), complex matrix,
 approximate solution, multiple right hand sides
F04AEF Simultaneous linear equations, (black box), real matrix,
 accurate solution, multiple right hand sides
F04AFF Simultaneous linear equations, (coefficient matrix already factorised),
 real symmetric positive definite matrix, accurate solution
F04AGF Simultaneous linear equations, (coefficient matrix already factorised),
 real symmetric positive-definite matrix,
 approximate solution (factorisation by F03AEF)
F04AHF Simultaneous linear equations, (coefficient matrix already factorised),
 real matrix, accurate solution
F04AJF Simultaneous linear equations, (coefficient matrix already factorised),
 real matrix, approximate solution (factorisation by F03AFF)
F04AKF Simultaneous linear equations, (coefficient matrix already factorised),
 complex matrix, approximate solution
F04ALF Simultaneous linear equations, (coefficient matrix already factorised),
 real symmetric positive-definite band matrix, approximate solution
F04AMF Least-squares, m real equations in n unknowns, rank =n, m>=n,
 accurate solution (black box)
F04ANF Least-squares, m real equations in n unknowns, rank =n, m>=n,
 approximate solution (after factorisation by F01AXF)
F04AQF Simultaneous linear equations, (coefficient matrix already factorised),
 real symmetric positive-definite matrix,
 approximate solution (factorisation by F01BQF)
F04ARF Simultaneous linear equations, (black box), real matrix,
 approximate solution, one right hand side
F04ASF Simultaneous linear equations, (black box),
 real symmetric positive-definite matrix, accurate solution, one right hand side
F04ATF Simultaneous linear equations, (black box), real matrix,
 accurate solution, one right hand side
F04AWF Simultaneous linear equations, (coefficient matrix already factorised),
 complex Hermitian positive-definite matrix, approximate solution
F04AXF Simultaneous linear equations, (coefficient matrix already factorised),
 real sparse matrix, approximate solution
F04AYF Simultaneous linear equations, (coefficient matrix already factorised),
 real matrix, approximate solution (factorisation by F01BTF)
F04AZF Simultaneous linear equations, (coefficient matrix already factorised),
 real symmetric positive-definite matrix,
 approximate solution (factorisation by F01BXF)
F04JAF Least-squares, m real equations in n unknowns, rank<=n, m>=n,
 minimal least-squares solution
F04JDF Least-squares, m real equations in n unknowns, rank<=n, m<=n,
 minimal least-squares solution
F04JGF Least-squares, m real equations in n unknowns, rank<=n, m>=n,
 least-squares solution if rank=n, otherwise minimal least-squares solution
F04LDF Simultaneous linear equations, (coefficient matrix already factorised),
 real band matrix, approximate solution
F04MCF Simultaneous linear equations, (coefficient matrix already factorised),
 real symmetric positive-definite variable-bandwidth matrix,
 approximate solution