NAG Library Manual

# NAG LibraryMark 25 NAG Fortran Library News

## 1  Introduction

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.

## 2  New Routines

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

## 3  Internal Changes Affecting Users

There have been no internal changes at this mark.

## 4  Withdrawn Routines

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

## 5  Routines Scheduled for Withdrawal

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