Mark 24 NAG Library for SMP & Multicore News

At Mark 24 of the NAG Library for SMP & Multicore new functionality has been introduced in addition to improvements in existing areas. The Library now contains 1784 user-callable routines of which 139 are new at this mark.

New Chapter X07 (IEEE Arithmetic) has been introduced, providing routines relating to IEEE arithmetic such as determining or creating an infinite value or a NaN (Not a Number). There have also been extensions in functionality included in the areas of statistics, wavelets, ordinary differential equations, interpolation, surface fitting, optimization, matrix operations, linear algebra, operations research, and special functions.

Chapter C06 (Summation of Series) has Fast Fourier Transforms (FFTs) for two-dimensional and three-dimensional real data.

Chapter C09 (Wavelet Transforms) has three-dimensional discrete wavelet transforms.

Chapter D01 (Quadrature) has a comprehensive one-dimensional adaptive quadrature routine and a variant for badly behaved integrands.

Chapter D02 (Ordinary Differential Equations) has threadsafe versions of the suite implementing Runge–Kutta methods.

Chapter E01 (Interpolation) has the modified Shepard's method for interpolating in dimensions greater than $5$.

Chapter E02 (Curve and Surface Fitting) has a two-stage approximation method for two-dimensional scattered data.

Chapter E04 (Minimizing or Maximizing a Function) has non-negative least squares and an improved MPS data reader.

Chapter E05 (Global Optimization of a Function) has multi-start versions of general nonlinear programming and least squares routines.

Chapter F01 (Matrix Operations, Including Inversion) has greatly extended its range of matrix function routines including the calculation of condition numbers and the action on another matrix.

Chapter F02 (Eigenvalues and Eigenvectors) has a driver routine for calculating selected eigenvalues/vectors of real sparse general matrices.

Chapter F04 (Simultaneous Linear Equations) has norm estimators for rectangular matrices.

Chapter F11 (Large Scale Linear Systems) has a block diagonal (possibly overlapping) preconditioner and associated solver for real and complex nonsymmetric sparse matrices.

Chapter F12 (Large Scale Eigenproblems) has a driver for selected eigenvalues/vectors of general banded complex eigenproblems.

Chapter F16 (Further Linear Algebra Support Routines) has two additions from the BLAST set of routines.

Chapter G01 (Simple Calculations on Statistical Data) has routines for combining summary statistics from blocks of data, probabilities from a multivariate Student's $t$-distribution, and a large set of vectorized versions of routines for probabilities and density functions.

Chapter G02 (Correlation and Regression Analysis) has routines for weighted nearest correlation matrix and combining two sums of squares.

Chapter G03 (Multivariate Methods) has a Gaussian mixture model routine.

Chapter G05 (Random Number Generators) has Brownian bridge and random field routines.

Chapter G13 (Time Series Analysis) has moving averages for inhomogeneous time series.

Chapter H (Operations Research) has routines for computing best subsets.

Chapter S (Approximations of Special Functions) has added special functions: confluent hypergeometric, log beta and incomplete beta; additionally a large set of vectorized versions of existing special functions.

Chapter X07 (IEEE Arithmetic) has a set of IEEE routines including testing and setting Infs and NaNs.

SMP parallelism has been added to new routines introduced at Mark 24 in the areas of discrete Fourier transforms, 3-D wavelets, multi-dimensional interpolation, cubic splines, global optimization, matrix functions, the mean and standard deviation of an arbitrary-sized data stream using a rolling window, Gaussian mixture model, Brownian bridge and univariate inhomogenous time series. An existing routine for Heston's model option pricing formula with Greeks has also been parallelized.

The 139 new user-callable routines included in the NAG Library at Mark 24 are as follows.

RoutineName |
Purpose |

C06PVF | Two-dimensional real-to-complex discrete Fourier transform |

C06PWF | Two-dimensional complex-to-real discrete Fourier transform |

C06PYF | Three-dimensional real-to-complex discrete Fourier transform |

C06PZF | Three-dimensional complex-to-real discrete Fourier transform |

C09ACF | Three-dimensional wavelet filter initialization |

C09FAF | Three-dimensional discrete wavelet transform |

C09FBF | Three-dimensional inverse discrete wavelet transform |

C09FCF | Three-dimensional multi-level discrete wavelet transform |

C09FDF | Three-dimensional inverse multi-level discrete wavelet transform |

D01RAF | One-dimensional quadrature, adaptive, finite interval, multiple integrands, vectorized abscissae, reverse communication |

D01RBF | Diagnostic routine for D01RAF |

D01RCF | Determine required array dimensions for D01RAF |

D01RGF | One-dimensional quadrature, adaptive, finite interval, strategy due to Gonnet, allowing for badly behaved integrands |

D01TBF | Pre-computed weights and abscissae for Gaussian quadrature rules, restricted choice of rule |

D01UAF | One-dimensional Gaussian quadrature, choice of weight functions |

D01ZKF | Option setting routine |

D01ZLF | Option getting routine |

D02PEF | Ordinary differential equations, initial value problem, Runge–Kutta method, integration over range with output |

D02PFF | Ordinary differential equations, initial value problem, Runge–Kutta method, integration over one step |

D02PQF | Ordinary differential equations, initial value problem, setup for D02PEF and D02PFF |

D02PRF | Ordinary differential equations, initial value problem, resets end of range for D02PFF |

D02PSF | Ordinary differential equations, initial value problem, interpolation for D02PFF |

D02PTF | Ordinary differential equations, initial value problem, integration diagnostics for D02PEF and D02PFF |

D02PUF | Ordinary differential equations, initial value problem, error assessment diagnostics for D02PEF and D02PFF |

E01ZMF | Interpolating function, modified Shepard's method, $d$ dimensions |

E01ZNF | Interpolated values, evaluate interpolant computed by E01ZMF, function and first derivatives, $d$ dimensions |

E02BFF | Evaluation of fitted cubic spline, function and optionally derivatives at a vector of points |

E02JDF | Spline approximation to a set of scattered data using a two-stage approximation method |

E02JEF | Evaluation at a vector of points of a spline computed by E02JDF |

E02JFF | Evaluation at a mesh of points of a spline computed by E02JDF |

E02ZKF | Option setting routine |

E02ZLF | Option getting routine |

E04MXF | Reads MPS data file defining LP, QP, MILP or MIQP problem |

E04PCF | Computes the least squares solution to a set of linear equations subject to fixed upper and lower bounds on the variables. An option is provided to return a minimal length solution if a solution is not unique |

E05UCF | Global optimization using multi-start, nonlinear constraints |

E05USF | Global optimization of a sum of squares problem using multi-start, nonlinear constraints |

F01EJF | Real matrix logarithm |

F01EKF | Exponential, sine, cosine, sinh or cosh of a real matrix (Schur–Parlett algorithm) |

F01ELF | Function of a real matrix (using numerical differentiation) |

F01EMF | Function of a real matrix (using user-supplied derivatives) |

F01FJF | Complex matrix logarithm |

F01FKF | Exponential, sine, cosine, sinh or cosh of a complex matrix (Schur–Parlett algorithm) |

F01FLF | Function of a complex matrix (using numerical differentiation) |

F01FMF | Function of a complex matrix (using user-supplied derivatives) |

F01GAF | Action of a real matrix exponential on a real matrix |

F01GBF | Action of a real matrix exponential on a real matrix (reverse communication) |

F01HAF | Action of a complex matrix exponential on a complex matrix |

F01HBF | Action of a complex matrix exponential on a complex matrix (reverse communication) |

F01JAF | Condition number for the exponential, logarithm, sine, cosine, sinh or cosh of a real matrix |

F01JBF | Condition number for a function of a real matrix (using numerical differentiation) |

F01JCF | Condition number for a function of a real matrix (using user-supplied derivatives) |

F01KAF | Condition number for the exponential, logarithm, sine, cosine, sinh or cosh of a complex matrix |

F01KBF | Condition number for a function of a complex matrix (using numerical differentiation) |

F01KCF | Condition number for a function of a complex matrix (using user-supplied derivatives) |

F02EKF | Selected eigenvalues and eigenvectors of a real sparse general matrix |

F04YDF | Norm estimation (for use in condition estimation), real rectangular matrix |

F04ZDF | Norm estimation (for use in condition estimation), complex rectangular matrix |

F11DFF | Real sparse nonsymmetric linear system, incomplete $LU$ factorization of local or overlapping diagonal blocks |

F11DGF | Solution of real sparse nonsymmetric linear system, RGMRES, CGS, Bi-CGSTAB or TFQMR method, incomplete $LU$ block diagonal preconditioner computed by F11DFF |

F11DTF | Complex sparse nonsymmetric linear system, incomplete $LU$ factorization of local or overlapping diagonal blocks |

F11DUF | Solution of complex sparse nonsymmetric linear system, RGMRES, CGS, Bi-CGSTAB or TFQMR method, incomplete $LU$ block diagonal preconditioner computed by F11DTF |

F12ATF | Initialization routine for (F12AUF) computing selected eigenvalues and, optionally, eigenvectors of a complex banded (standard or generalized) eigenproblem. |

F12AUF | Selected eigenvalues and, optionally, eigenvectors of complex non-Hermitian banded eigenproblem, driver |

F16ECF | Real scaled vector accumulation |

F16GCF | Complex scaled vector accumulation |

G01ATF | Computes univariate summary information: mean, variance, skewness, kurtosis |

G01AUF | Combines multiple sets of summary information, for use after G01ATF |

G01HDF | Computes the probability for the multivariate Student's $t$-distribution |

G01KKF | Computes a vector of values for the probability density function of the gamma distribution |

G01KQF | Computes a vector of values for the probability density function of the Normal distribution |

G01LBF | Computes a vector of values for the probability density function of the multivariate Normal distribution |

G01SAF | Computes a vector of probabilities for the standard Normal distribution |

G01SBF | Computes a vector of probabilities for the Student's $t$-distribution |

G01SCF | Computes a vector of probabilities for ${\chi}^{2}$ distribution |

G01SDF | Computes a vector of probabilities for $F$-distribution |

G01SEF | Computes a vector of probabilities for the beta distribution |

G01SFF | Computes a vector of probabilities for the gamma distribution |

G01SJF | Computes a vector of probabilities for the binomial distribution |

G01SKF | Computes a vector of probabilities for the Poisson distribution |

G01SLF | Computes a vector of probabilities for the hypergeometric distribution |

G01TAF | Computes a vector of deviates for the standard Normal distribution |

G01TBF | Computes a vector of deviates for Student's $t$-distribution |

G01TCF | Computes a vector of deviates for ${\chi}^{2}$ distribution |

G01TDF | Computes a vector of deviates for $F$-distribution |

G01TEF | Computes a vector of deviates for the beta distribution |

G01TFF | Computes a vector of deviates for the gamma distribution |

G01WAF | Computes the mean and standard deviation using a rolling window |

G02AJF | Computes the nearest correlation matrix to a real square matrix, using element-wise weighting |

G02BZF | Combines two sums of squares matrices, for use after G02BUF |

G03GAF | Fits a Gaussian mixture model |

G05XAF | Initializes the Brownian bridge generator |

G05XBF | Generate paths for a free or non-free Wiener process using the Brownian bridge algorithm |

G05XCF | Initializes the generator which backs out the increments of sample paths generated by a Brownian bridge algorithm |

G05XDF | Backs out the increments from sample paths generated by a Brownian bridge algorithm |

G05XEF | Creates a Brownian bridge construction order out of a set of input times |

G05ZMF | Setup for simulating one-dimensional random fields, user-defined variogram |

G05ZNF | Setup for simulating one-dimensional random fields |

G05ZPF | Generates realisations of a one-dimensional random field |

G05ZQF | Setup for simulating two-dimensional random fields, user-defined variogram |

G05ZRF | Setup for simulating two-dimensional random fields, preset variogram |

G05ZSF | Generates realisations of a two-dimensional random field |

G05ZTF | Generates realisations of fractional Brownian motion |

G13MEF | Computes the iterated exponential moving average for a univariate inhomogeneous time series |

G13MFF | Computes the iterated exponential moving average for a univariate inhomogeneous time series, intermediate results are also returned |

G13MGF | Computes the exponential moving average for a univariate inhomogeneous time series |

H05AAF | Best $m$ subsets of size $p$ (reverse communication) |

H05ABF | Best $m$ subsets of size $p$ (direct communication) |

S14CBF | Logarithm of the beta function $\mathrm{ln}\left(B,a,b\right)$ |

S14CCF | Incomplete beta function ${I}_{x}\left(a,b\right)$ and its complement $1-{I}_{x}$ |

S17AQF | Bessel function vectorized ${Y}_{0}\left(x\right)$ |

S17ARF | Bessel function vectorized ${Y}_{1}\left(x\right)$ |

S17ASF | Bessel function vectorized ${J}_{0}\left(x\right)$ |

S17ATF | Bessel function vectorized ${J}_{1}\left(x\right)$ |

S17AUF | Airy function vectorized $\mathrm{Ai}\left(x\right)$ |

S17AVF | Airy function vectorized $\mathrm{Bi}\left(x\right)$ |

S17AWF | Airy function vectorized ${\mathrm{Ai}}^{\prime}\left(x\right)$ |

S17AXF | Airy function vectorized ${\mathrm{Bi}}^{\prime}\left(x\right)$ |

S18AQF | Modified Bessel function vectorized ${K}_{0}\left(x\right)$ |

S18ARF | Modified Bessel function vectorized ${K}_{1}\left(x\right)$ |

S18ASF | Modified Bessel function vectorized ${I}_{0}\left(x\right)$ |

S18ATF | Modified Bessel function vectorized ${I}_{1}\left(x\right)$ |

S18CQF | Scaled modified Bessel function vectorized ${e}^{x}{K}_{0}\left(x\right)$ |

S18CRF | Scaled modified Bessel function vectorized ${e}^{x}{K}_{1}\left(x\right)$ |

S18CSF | Scaled modified Bessel function vectorized ${e}^{-\left|x\right|}{I}_{0}\left(x\right)$ |

S18CTF | Scaled modified Bessel function vectorized ${e}^{-\left|x\right|}{I}_{1}\left(x\right)$ |

S19ANF | Kelvin function vectorized $\mathrm{ber}x$ |

S19APF | Kelvin function vectorized $\mathrm{bei}x$ |

S19AQF | Kelvin function vectorized $\mathrm{ker}x$ |

S19ARF | Kelvin function vectorized $\mathrm{kei}x$ |

S20AQF | Fresnel integral vectorized $S\left(x\right)$ |

S20ARF | Fresnel integral vectorized $C\left(x\right)$ |

S22BAF | Real confluent hypergeometric function ${}_{1}F_{1}\left(a;b;x\right)$ |

S22BBF | Real confluent hypergeometric function ${}_{1}F_{1}\left(a;b;x\right)$ in scaled form |

X07AAF | Determines whether its argument has a finite value |

X07ABF | Determines whether its argument is a NaN (Not A Number) |

X07BAF | Creates a signed infinite value. |

X07BBF | Creates a NaN (Not A Number) |

X07CAF | Gets current behaviour of floating point exceptions |

X07CBF | Sets behaviour of floating point exceptions |

The following is a list of user-callable routines that have been parallelized, or otherwise optimized, since the last release. There are 28 of these routines at this release in the areas of
Fourier and wavelet transforms, interpolation, cubic splines, global optimization, matrix functions, simple and multivariate statistics, random number generators (RNGs), time series analysis and option pricing.
See the document ‘Tuned and Enhanced Routines in the NAG Library for SMP & Multicore’ for a full list of tuned routines.

RoutineName |
Purpose |

C06PVF | Two-dimensional real-to-complex discrete Fourier transform |

C06PWF | Two-dimensional complex-to-real discrete Fourier transform |

C06PYF | Three-dimensional real-to-complex discrete Fourier transform |

C06PZF | Three-dimensional complex-to-real discrete Fourier transform |

C09FAF | Three-dimensional discrete wavelet transform |

C09FBF | Three-dimensional inverse discrete wavelet transform |

C09FCF | Three-dimensional multi-level discrete wavelet transform |

C09FDF | Three-dimensional inverse multi-level discrete wavelet transform |

E01ZMF | Interpolating function, modified Shepard's method, $d$ dimensions |

E01ZNF | Interpolated values, evaluate interpolant computed by E01ZMF, function and first derivatives, $d$ dimensions |

E02BFF | Evaluation of fitted cubic spline, function and optionally derivatives at a vector of points |

E05UCF | Global optimization using multi-start, nonlinear constraints |

E05USF | Global optimization of a sum of squares problem using multi-start, nonlinear constraints |

F01EJF | Real matrix logarithm |

F01EKF | Exponential, sine, cosine, sinh or cosh of a real matrix (Schur–Parlett algorithm) |

F01EMF | Function of a real matrix (using user-supplied derivatives) |

F01FJF | Complex matrix logarithm |

F01FKF | Exponential, sine, cosine, sinh or cosh of a complex matrix (Schur–Parlett algorithm) |

F01FMF | Function of a complex matrix (using user-supplied derivatives) |

G01ATF | Computes univariate summary information: mean, variance, skewness, kurtosis |

G01WAF | Computes the mean and standard deviation using a rolling window |

G03GAF | Fits a Gaussian mixture model |

G05XBF | Generate paths for a free or non-free Wiener process using the Brownian bridge algorithm |

G05XDF | Backs out the increments from sample paths generated by a Brownian bridge algorithm |

G13MEF | Computes the iterated exponential moving average for a univariate inhomogeneous time series |

G13MFF | Computes the iterated exponential moving average for a univariate inhomogeneous time series, intermediate results are also returned |

G13MGF | Computes the exponential moving average for a univariate inhomogeneous time series |

S30NBF | Heston's model option pricing formula with Greeks |

These routines call one or more of the tuned routines as part of their core operations and may thereby exhibit improved performance and scalability. There are 24 newly enhanced routines at this Mark; these include the areas of
curve and surface fitting, matrix functions, sparse linear algebra, correlation and regression analysis and random number generators (RNGs).
See the document ‘Tuned and Enhanced Routines in the NAG Library for SMP & Multicore’ for a full list of enhanced routines.

RoutineName |
Purpose |

E02JDF | Spline approximation to a set of scattered data using a two-stage approximation method |

F01ELF | Function of a real matrix (using numerical differentiation) |

F01FLF | Function of a complex matrix (using numerical differentiation) |

F01GAF | Action of a real matrix exponential on a real matrix |

F01GBF | Action of a real matrix exponential on a real matrix (reverse communication) |

F01HAF | Action of a complex matrix exponential on a complex matrix |

F01HBF | Action of a complex matrix exponential on a complex matrix (reverse communication) |

F01JAF | Condition number for the exponential, logarithm, sine, cosine, sinh or cosh of a real matrix |

F01JBF | Condition number for a function of a real matrix (using numerical differentiation) |

F01JCF | Condition number for a function of a real matrix (using user-supplied derivatives) |

F01KAF | Condition number for the exponential, logarithm, sine, cosine, sinh or cosh of a complex matrix |

F01KBF | Condition number for a function of a complex matrix (using numerical differentiation) |

F01KCF | Condition number for a function of a complex matrix (using user-supplied derivatives) |

F02EKF | Selected eigenvalues and eigenvectors of a real sparse general matrix |

F11DGF | Solution of real sparse nonsymmetric linear system, RGMRES, CGS, Bi-CGSTAB or TFQMR method, incomplete $LU$ block diagonal preconditioner computed by F11DFF |

F11DUF | Solution of complex sparse nonsymmetric linear system, RGMRES, CGS, Bi-CGSTAB or TFQMR method, incomplete $LU$ block diagonal preconditioner computed by F11DTF |

F12AUF | Selected eigenvalues and, optionally, eigenvectors of complex non-Hermitian banded eigenproblem, driver |

G01LBF | Computes a vector of values for the probability density function of the multivariate Normal distribution |

G02AJF | Computes the nearest correlation matrix to a real square matrix, using element-wise weighting |

G05ZPF | Generates realisations of a one-dimensional random field |

G05ZQF | Setup for simulating two-dimensional random fields, user-defined variogram |

G05ZRF | Setup for simulating two-dimensional random fields, preset variogram |

G05ZSF | Generates realisations of a two-dimensional random field |

G05ZTF | Generates realisations of fractional Brownian motion |

The following routines have been withdrawn from the NAG Library at Mark 24. Warning of their withdrawal was included in the NAG Library Manual at Mark 23, together with advice on which routines to use instead. See the document ‘Advice on Replacement Calls for Withdrawn/Superseded Routines’ for more detailed guidance.

WithdrawnRoutine |
Replacement Routine(s) |

E04CCF | E04CBF |

E04ZCF | No longer required |

G05HKF | G05PDF |

G05HLF | G05PEF |

G05HMF | G05PFF |

G05HNF | G05PGF |

G05KAF | G05SAF |

G05KBF | G05KFF |

G05KCF | G05KGF |

G05KEF | G05TBF |

G05LAF | G05SKF |

G05LBF | G05SNF |

G05LCF | G05SDF |

G05LDF | G05SHF |

G05LEF | G05SBF |

G05LFF | G05SJF |

G05LGF | G05SQF |

G05LHF | G05SPF |

G05LJF | G05SFF |

G05LKF | G05SMF |

G05LLF | G05SJF |

G05LMF | G05SSF |

G05LNF | G05SLF |

G05LPF | G05SRF |

G05LQF | G05SGF |

G05LXF | G05RYF |

G05LYF | G05RZF |

G05LZF | G05RZF |

G05MAF | G05TLF |

G05MBF | G05TCF |

G05MCF | G05THF |

G05MDF | G05TFF |

G05MEF | G05TKF |

G05MJF | G05TAF |

G05MKF | G05TJF |

G05MLF | G05TEF |

G05MRF | G05TGF |

G05MZF | G05TDF |

G05NAF | G05NCF |

G05NBF | G05NDF |

G05PAF | G05PHF |

G05PCF | G05PJF |

G05QAF | G05PXF |

G05QBF | G05PYF |

G05QDF | G05PZF |

G05RAF | G05RDF |

G05RBF | G05RCF |

G05YCF | G05YLF |

G05YDF | G05YMF |

G05YEF | G05YLF |

G05YFF | G05YMF |

G05YGF | G05YLF |

G05YHF | G05YMF |

G13DCF | G13DDF |

P01ABF | No longer required |

X02DAF | No longer required |

X02DJF | No longer required |

The routines listed below are scheduled for withdrawal from the NAG Library, because improved routines have now been included in the Library. You are advised to stop using routines which are scheduled for withdrawal immediately and to use recommended replacement routines instead. See the document ‘Advice on Replacement Calls for Withdrawn/Superseded Routines’ for more detailed guidance, including advice on how to change a call to the old routine into a call to its recommended replacement.

The following routines will be withdrawn at Mark 25.

Routines Scheduledfor Withdrawal |
Replacement Routine(s) |

C05ADF | C05AYF |

C05AGF | C05AUF |

C05AJF | C05AWF |

C05NBF | C05QBF |

C05NCF | C05QCF |

C05NDF | C05QDF |

C05PBF | C05RBF |

C05PCF | C05RCF |

C05PDF | C05RDF |

C05ZAF | C05ZDF |

C06DBF | C06DCF |

F03AAF | F07ADF (DGETRF) and F03BAF |

F03ABF | F07FDF (DPOTRF) and F03BFF |

F03ACF | F07HDF (DPBTRF) and F03BHF |

F03ADF | F07ARF (ZGETRF) and F03BNF |

F03AEF | F07FDF (DPOTRF) and F03BFF |

F03AFF | F07ADF (DGETRF) and F03BAF |

F04AFF | No replacement routine required |

F04AGF | No replacement routine required |

F04AHF | No replacement routine required |

F04AJF | No replacement routine required |

The following routines have been superseded, but will not be withdrawn from the Library until Mark 26 at the earliest.

SupersededRoutine |
Replacement Routine(s) |

C06EAF | C06PAF |

C06EBF | C06PAF |

C06ECF | C06PCF |

C06EKF | C06FKF |

C06FRF | C06PSF |

C06FUF | C06PUF |

C06GBF | No replacement required |

C06GCF | No replacement required |

C06GQF | No replacement required |

C06GSF | No replacement required |

C06HAF | C06RAF |

C06HBF | C06RAF |

C06HCF | C06RCF |

C06HDF | C06RDF |

D01BAF | D01UAF |

D01BBF | D01TBF |

D02PCF | D02PEF and associated D02P routines |

D02PDF | D02PFF and associated D02P routines |

D02PVF | D02PQF |

D02PWF | D02PRF |

D02PXF | D02PSF |

D02PYF | D02PTF |

D02PZF | D02PUF |

E04MZF | E04MXF |

F04YCF | F04YDF |

F04ZCF | F04ZDF |

G01AAF | G01ATF |