Mark 25 NAG Fortran Library News

At Mark 25 of the NAG Library new functionality has been introduced in addition to improvements in existing areas. The Library now contains 1844 user-callable routines, all of which are documented, of which 81 are new at this mark.

Chapter C06 (Summation of Series) has replacement routines for real symmetric discrete Fourier transforms with simplified interface.

Chapter C09 (Wavelet Transforms) has new routines for inserting coefficients into and extracting coefficients from the compact form used in the multilevel two-dimensional routines and all three-dimensional routines, which make working with the DWT functions easier as demonstrated in the examples. There are also routines for the maximal overlap discrete wavelet transform (MODWT) and its inverse in one dimension, which are useful in time series analysis.

Chapter D01 (Quadrature) has a routine for high dimensional quadrature using sparse grids.

Chapter D02 (Ordinary Differential Equations) has a threadsafe replacement for the the general nonlinear boundary value problem solver using collocation.

Chapter E01 (Interpolation) has a routine for the triangulation of a two-dimensional scattered grid, and a routine for the barycentric interpolation on function values on a triangulated scattered grid.

Chapter E02 (Curve and Surface Fitting) has a replacement routine for minimax polynomial fitting of a set of data points.

Chapter F01 (Matrix Operations, Including Inversion) has
greatly extended its range of matrix routines. New and improved algorithms are available for the matrix logarithm, the matrix square root, the matrix exponential and general matrix powers. We also now have routines for computing Fréchet derivatives.

Chapter F02 (Eigenvalues and Eigenvectors) has
routines for the solution of the real and complex quadratic eigenvalue problem, and
a driver routine for calculating selected eigenvalues/vectors of symmetric sparse matrices.

Chapter F08 (Least Squares and Eigenvalue Problems (LAPACK)) has routines for recursive, explicitly blocked $QR$ factorization and applying $Q$ for general matrices and for triangular-pentagonal matrices, and has routines for the complete CS decomposition of an orthogonal or unitary matrix.

Chapter F11 (Large Scale Linear Systems) has a routine for the bandwidth reduction of a sparse symmetric matrix by reverse Cuthill–McKee reordering.

Chapter F16 (Further Linear Algebra Support Routines) has
a routine for scaled accumulated dot product (BLAS_DDOT).

Chapter G01 (Simple Calculations on Statistical Data) has a routine for computing probabilities for the Dickey–Fuller unit root test.

Chapter G02 (Correlation and Regression Analysis) has routines for performing Least Angle Regression (LARS), Least Absolute Shrinkage and Selection Operator (LASSO) and forward stagewise regression. There is also an additional nearest correlation matrix routine that allows the leading principal submatrix to be preserved.

Chapter G05 (Random Number Generators) has routines for generating training and validation datasets suitable for use in cross-validation.

Chapter G10 (Smoothing in Statistics) has a thread safe replacement for kernel density estimation using a Gaussian kernel.

Chapter G13 (Time Series Analysis) has routines for computing: the Dickey–Fuller unit root test statistic; applying the unscented Kalman filter to a nonlinear state-space model with additive noise; and change point analysis using the PELT algorithm or using binary segmentation.

Chapter H (Operations Research) has a routine for solving mixed integer nonlinear programming problems; optional settings for this are supplied and interrogated via two new option routines. Additionally, there is a routine for approximating solutions to the classical travelling salesman problem.

Chapter S (Approximations of Special Functions) has routines for evaluating the Gauss hypergeometric function for real arguments and for computing the European option price from Heston's stochastic volatility model with term structure.

Chapter X06 (OpenMP Utilities) is a new chapter of routines that provide utilities for controlling the OpenMP environment for your program.

It should also be noted that we have made changes to the Essential Introduction at this mark. We have provided clarification of the term 'Direct and Reverse Communication Routines', see Section 3.2.3 in the Essential Introduction, and also taken the decision to document a number of error conditions, i.e., Dynamic Memory Allocation (see Section 3.6 in the Essential Introduction), License Management (see Section 3.7 in the Essential Introduction) and Unexpected Errors (see Section 3.8 in the Essential Introduction). The Essential Introduction is a useful document providing information advice on how to use the Library and its Documentation and how to get support from NAG.

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

RoutineName |
Purpose |

C06REF | Multiple discrete sine transforms, simple |

C06RFF | Multiple discrete cosine transforms, simple |

C06RGF | Multiple discrete quarter-wave sine transforms, simple |

C06RHF | Multiple discrete quarter-wave cosine transforms, simple |

C09DAF | One-dimensional maximal overlap discrete wavelet transform (MODWT) |

C09DBF | One-dimensional inverse maximal overlap discrete wavelet transform (IMODWT) |

C09DCF | One-dimensional multi-level maximal overlap discrete wavelet transform (MODWT) |

C09DDF | One-dimensional inverse multi-level maximal overlap discrete wavelet transform (IMODWT) |

C09EYF | Two-dimensional discrete wavelet transform coefficient extraction |

C09EZF | Two-dimensional discrete wavelet transform coefficient insertion |

C09FYF | Three-dimensional discrete wavelet transform coefficient extraction |

C09FZF | Three-dimensional discrete wavelet transform coefficient insertion |

D01ESF | Multi-dimensional quadrature using sparse grids |

D02TLF | Ordinary differential equations, general nonlinear boundary value problem, collocation technique (thread safe) |

E01EAF | Triangulation of two-dimensional scattered grid, method of Renka and Cline |

E01EBF | Barycentric interpolation on function values provided on a two-dimensional scattered grid |

E02ALF | Minimax curve fit by polynomials |

F01ENF | Real matrix square root |

F01EPF | Real upper quasi-triangular matrix square root |

F01EQF | General power of a real matrix |

F01FNF | Complex matrix square root |

F01FPF | Complex upper triangular matrix square root |

F01FQF | General power of a complex matrix |

F01JDF | Condition number for square root of real matrix |

F01JEF | Condition number for real matrix power |

F01JFF | Fréchet derivative of real matrix power |

F01JGF | Condition number for real matrix exponential |

F01JHF | Fréchet derivative of real matrix exponential |

F01JJF | Condition number for real matrix logarithm |

F01JKF | Fréchet derivative of real matrix logarithm |

F01KDF | Condition number for square root of complex matrix |

F01KEF | Condition number for complex matrix power |

F01KFF | Fréchet derivative of complex matrix power |

F01KGF | Condition number for complex matrix exponential |

F01KHF | Fréchet derivative of complex matrix exponential |

F01KJF | Condition number for complex matrix logarithm |

F01KKF | Fréchet derivative of complex matrix logarithm |

F02FKF | Selected eigenvalues and eigenvectors of a real symmetric sparse matrix |

F02JCF | Solves the quadratic eigenvalue problem for real matrices |

F02JQF | Solves the quadratic eigenvalue problem for complex matrices |

F08ABF | Performs a $QR$ factorization of real general rectangular matrix, with explicit blocking |

F08ACF | Applies the orthogonal transformation determined by F08ABF (DGEQRT) |

F08APF | Performs a $QR$ factorization of complex general rectangular matrix using recursive algorithm |

F08AQF | Applies the unitary transformation determined by F08APF (ZGEQRT) |

F08BBF | $QR$ factorization of real general triangular-pentagonal matrix |

F08BCF | Applies the orthogonal transformation determined by F08BBF (DTPQRT) |

F08BPF | $QR$ factorization of complex triangular-pentagonal matrix |

F08BQF | Applies the unitary transformation determined by F08BPF (ZTPQRT) |

F08RAF | Computes the CS decomposition of an orthogonal matrix partitioned into four real submatrices |

F08RNF | Computes the CS decomposition of a unitary matrix partitioned into four complex submatrices |

F11YEF | Reverse Cuthill–McKee reordering of a sparse symmetric matrix in CCS format |

F16EAF | Dot product of two vectors, allows scaling and accumulation. |

G01EWF | Computes probabilities for the Dickey–Fuller unit root test |

G02ANF | Computes a correlation matrix from an approximate matrix with fixed submatrix |

G02MAF | Least angle regression (LARS), least absolute shrinkage and selection operator (LASSO) and forward stagewise regression |

G02MBF | Least Angle Regression (LARS), Least Absolute Shrinkage and Selection Operator (LASSO) and forward stagewise regression using the cross-products matrix |

G02MCF | Additional parameter calculate following Least Angle Regression (LARS), Least Absolute Shrinkage and Selection Operator (LASSO) or forward stagewise regression |

G05PVF | Permutes a matrix, vector, vector triplet into a form suitable for $K$-fold cross validation |

G05PWF | Permutes a matrix, vector, vector triplet into a form suitable for random sub-sampling validation |

G10BBF | Kernel density estimate using Gaussian kernel (thread safe) |

G13AWF | Computes (augmented) Dickey–Fuller unit root test statistic |

G13EJF | Combined time and measurement update, one iteration of the Unscented Kalman Filter for a nonlinear state space model, with additive noise (reverse communication) |

G13EKF | Combined time and measurement update, one iteration of the Unscented Kalman Filter for a nonlinear state space model, with additive noise |

G13NAF | Change point detection, using the PELT algorithm |

G13NBF | Change points detection using the PELT algorithm, user supplied cost function |

G13NDF | Change point detection, using binary segmentation |

G13NEF | Change point detection, using binary segmentation, user supplied cost function |

H02DAF | Mixed integer nonlinear programming |

H02ZKF | Option setting routine for H02DAF |

H02ZLF | Option getting routine for H02DAF |

H03BBF | Travelling Salesman Problem, simulated annealing |

S22BEF | Real Gauss hypergeometric function ${}_{2}F_{1}\left(a,b;c;x\right)$ |

S22BFF | Real Gauss hypergeometric function ${}_{2}F_{1}\left(a,b;c;x\right)$ in scaled form. |

S30NCF | Heston's model option pricing with term structure |

X06AAF | Sets the number of threads for OpenMP parallel regions |

X06ABF | The number of OpenMP threads in the current team |

X06ACF | An upper bound on the number of threads in the next parallel region |

X06ADF | The OpenMP thread number of the calling thread |

X06AFF | Tests for an active OpenMP parallel region |

X06AGF | Enables or disables nested OpenMP parallelism |

X06AHF | Tests the status of nested OpenMP parallelism |

There have been no internal changes at this mark.

The following routines have been withdrawn from the NAG Library at Mark 25. Warning of their withdrawal was included in the NAG Library Manual at Mark 24, 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) |

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

Routines Scheduledfor Withdrawal |
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 | C06REF |

C06HBF | C06RFF |

C06HCF | C06RGF |

C06HDF | C06RHF |

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 |

F04YCF | F04YDF |

F04ZCF | F04ZDF |

G01AAF | G01ATF |

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

SupersededRoutine |
Replacement Routine(s) |

D01RBF | No replacement required |

D02TKF | D02TLF |

E02ACF | E02ALF |

F02SDF | F12AGF and F12FGF |

F02WDF | F02WUF and F08AEF (DGEQRF) |

G10BAF | G10BBF |