IMSL(R) Fortran
Numerical Library: Change Log
If you have problems installing/using any product, contact IMSL
Customer Support. The Customer Support group researches and answers your
questions about all IMSL products. Contact information can be found in
the README file located in this directory.
For release dates and maintenance and support schedules, see Perforce
Product Lifecycle Information.
2026.1
- Announcements
- Math/Library
- Chapter 1: Linear Systems
LFTXG, LFSXG, LSLXG (and the
complex-precision equivalents LFTZG, LFSZG,
LSLZG):
- These routines are deprecated and will be removed in a future
release. The recommended replacement is the
linear_operators module using the .ix.
operator with the d_hbc_sparse / s_hbc_sparse
derived types (and z_hbc_sparse / c_hbc_sparse
for complex). See the Sparse Matrix Computations chapter for
details.
- Improvements
- Math/Library
- Chapter 1: Linear Systems
LSLXD, L2LXD:
- Added error checks for insufficient workspace allocation.
- Chapter 8: Optimization
TRAN:
- Corrected the sign of the dual solution returned by optional
argument
DUAL.
- Corrected implementation of the revised simplex method for cases
where the sum of warehouse capacities is smaller than the sum of store
requirements.
- Stat/Library
- Chapter 1: Basic Statistics
UVSTA:
- Corrected the default value of
NVAR to properly reflect
whether the frequency (IFRQ) and/or weight
(IWT) arguments are provided.
- Chapter 14: Multidimensional Scaling
MSIDV:
- Corrected internal computational errors that affected numerical
accuracy of the individual-differences multidimensional scaling
algorithm.
- Fixed incorrect variable indexing in error handling.
- Corrected weighting factors in gradient and Hessian
computations.
- Improved conditional printing behavior.
MSINI:
- Corrected internal variable indexing error in regression-based
initial estimate calculations.
MSSTN:
- Fixed reciprocal conversion (
ICNVT=2) for similarity to
dissimilarity transformation by correcting array indexing and
initialization in reciprocal conversion calculations.
2025.1
- Announcements
- Notice to customers using IFX oneAPI 2025.1 on Linux platforms: the
F90 standard requires explicit interfaces for external procedures that
have certain characteristics, for example, those with optional arguments
and assumed-shape arrays as dummy arguments. FNL .f90 document examples
having such procedures, declared as "EXTERNAL", should instead be given
explicit interfaces to run correctly. These are the affected doc
examples: BCPOL, DAESL, LIN_CON_TRUST_REGION, QDAG1D, QDAG2D, QDAG3D,
FEYNMAN_KAC, ZUNI.
- Improvements
- Math/Library
- Chapter 1: Linear Systems
LFSCG:
- Added nonsingularity check for the
U factor in array
FACT in the LAPACK case.
L2QRR:
- Fixed data type error in ScaLAPACK version.
L2CDH:
- Fixed data type error in ScaLAPACK version.
- Chapter 4: Integration and Differentiation
QDAG2D:
- Corrected interface for user-supplied function
F in
module QDAG2D_INT.
QDAG3D:
- Corrected interface for user-supplied function
F in
module QDAG3D_INT.
- Chapter 10: Linear Algebra Operators and Generic Functions
.ix., .xi., COND:
- Implemented use of ISO_C_BINDING module from Fortran 2003 in order
to standardize and simplify the internal SuperLU calls from FNL.
2024.1
- Improvements
- Introduced support for Intel oneAPI IFX compiler.
2022.1
- Improvements
- Upgraded internally used LAPACK version from 3.2.2 to newest version
3.10.0.
- Math/Library
- Chapter 2: Eigensystem Analysis
ARPACK_SVD:
- Removed
ARPACK_Regular_Inverse from the list of
feasible values for optional argument CATEGORY. Since
ARPACK_Regular is now the only remaining feasible value,
the optional argument CATEGORY was removed from the
documentation as well. For backward compatibility reasons,
ARPACK_SVD can still be called with this optional
argument.
- Chapter 7: Nonlinear Equations
NEQBF:
- Corrected internal error handling for the case of infeasible
IPARAM or RPARAM values.
NEQBJ:
- Corrected internal error handling for the case of infeasible
IPARAM or RPARAM values.
- Chapter 10: Linear Algebra Operators and Generic Functions
.ix., .xi., COND:
- Upgraded internally used SuperLU version from 3.0 to newest version
5.3.0.
2021.0.0
- Announcements
- The environment variable
FNL_LICENSE_NUMBER has been
deprecated and is no longer in use.
2020.0.0
- Improvements
- Corrected behavior of installer incorrectly modifying the
permissions of the specified install directory.
2018.0.2
- Improvements
- Corrected behavior of installing into a non-default directory.
- Installer now treats the library as a non-editable component of the
installation.
2018.0.1
- Improvements
- Added support for unattended installation of the product.
2018.0.0
- Announcements
- Notice to customers using Oracle Solaris platforms: IMSL Fortran
2018 will be the last planned version to support Oracle Solaris
platforms. Please contact your Rogue Wave account representative or
Rogue Wave support with any questions concerning this announcement.
- Notice to customers using the IMSL Fortran
CUBLAS_LIBRARY module: IMSL Fortran 2018 will not support
the NVIDIA CUDA CUBLAS Library. Please contact your Rogue Wave account
representative or Rogue Wave support with any questions concerning this
announcement.
- IMSL is transitioning toward online only documentation. Currently
documentation is available with the installation of the product and on
our website at IMSL Fortran
Documentation. In future releases documentation will be available
only on the web.
- IMSL has transitioned to the use of a Change Log documenting the
running list of all changes that have occurred to the product over the
course of multiple releases, rather than distributing a new file
containing notes that are specific to the particular release.
- the MKL-enabled FNL libs are always installed and enabled by
default. To disable MKL, users must switch to using the
LINK_*_IMSL environment variables as described in the
Link Options section of the product README file.
- Additions
- Math/Library
- Chapter 8: Optimization
LIN_CON_TRUST_REGION:
- Minimizes a function of n variables subject to linear constraints
using a derivative-free, interpolation-based trust-region method.
- Improvements
- Math/Library
- Chapter 1: Linear Systems
GMRES:
- Added printing functionality for intermediate solutions at the end
of each
GMRES cycle.
- Fixed infinite loop problem that occurred if the starting point for
the iteration is identical to the solution of the linear system
A*x=b.
LSVRR, LSVCR:
- Corrected sign in formula for shift calculation.
- Chapter 2: Eigensystem Analysis
EVCRH:
- Modified document example.
- Chapter 3: Interpolation and Approximation
SURFND:
- Added a check that the elements in each row of
XDATA
are strictly monotonic.
- Chapter 8: Optimization
BCPOL:
- Corrected descriptions of optional arguments
FTOL and
MAXFCN.
- Corrected formula under criteria 2 of the Description.
DENSE_LP:
- Corrected behavior for constraints with constraint type 4 (ignore
constraint).
- Stat/Library
- Chapter 2: Regression
PLSR:
- Corrected first dimension of an internal array related to input
argument
PRESS.
- Corrected internal computation of the number of dependent and
predictor variables.
- The condition
2 <= K <= NOBS, K the
number of folds, is now always tested.
- Added tests that check for the correct extents of the output
arrays.
7.1.1
- Announcements
- Additions
- Improvements
- Math/Library
- Chapter 8: Optimization
BCPOL:
- Optional argument
XCPLX added allowing users to specify
the initial complex points.
- Optional argument
REFLCOEF added allowing user to
specify the reflection coefficient.
- Optional argument
EXPNCOEF added allowing user to
specify the expansion coefficient.
- Optional argument
CNTRCOEF added allowing user to
specify the contraction coefficient.
7.1.0
- Announcements
- License management has been removed
- Additions
- Improvements
- Math/Library
- Chapter 1: Linear Systems
LCLSQ:
- The matrix columns for fixed variables are not used any longer in
computing a matrix norm.
LFSXG:
- Updated permutation test to avoid overflow.
LFSZG:
- Updated permutation test to avoid overflow.
LOFCF:
- Corrected the returned
pvalue argument.
LSACG:
- Made computation of the condition number the default when used with
the default values of Integer Option 17.
LSLCG:
- Made computation of the condition number the default when used with
the default values of Integer Option 17.
LSLXG/L2LXG:
- Improved workspace documentation.
LSVCR:
- Improved Fortran 90 interface.
LSVRR:
- Improved Fortran 90 interface.
- Corrected
LSVRR ScaLAPACK implementation so that it can
handle a wider range of problems. Updated associated documentation.
PARALLEL_BOUNDED_LSQ:
- Updated example 1 and associated documentation.
- Added example 2 output to documentation.
RNKSM:
- Use of a correction term has been modified so that negative p-values
do not occur.
- Chapter 5: Differential Equations
IVOAM:
- Modified the default initial stepsize to avoid an "initial step
length too small" error message.
- Changed definition of optional argument EQNERR when a value of zero
is specified.
IVPAG:
- Corrected a typographical error in manual example 4.
- Chapter 6: Tranforms
c_fast_dft:
- Added High Performance icons to the documentation. These icons
specify that the routines leverage vendor-supplied libraries.
c_fast_2dft:
- Added High Performance icons to the documentation. These icons
specify that the routines leverage vendor-supplied libraries.
c_fast_3dft:
- Added High Performance icons to the documentation. These icons
specify that the routines leverage vendor-supplied libraries.
- Chapter 8: Optimization
BCONF:
- Initialized the elements of an array to 0.
DENSE_LP:
- Initialized an internally used variable.
- Corrected the size of internally used arrays.
NNLPF:
- Modified so that infeasible initial guesses are projected into the
set of bound constraints.
NNLPG:
- Correct the optional argument order in the documentation.
- Modified so that infeasible initial guesses are projected into the
set of bound constraints.
QPROG:
- Avoided infinite loops by not allowing iterative refinement to
proceed if the objective function could not be improved upon because of
numerical issues.
READ_MPS:
- Computation of upper bounds for type
G (Greater than or
equal) constraints with entries in the RANGES section was
corrected.
SLPRS:
- Corrected documentation of workspace arguments
IPARAM(7), IPARAM(8), LW, and
LIW.
- Chapter 10: Linear Algebra Operators and Generic Functions
DET:
- Improve the displayed error messages.
- Chapter 11: Utilities
RAND_GEN:
- Removed manual example 4.
- Stat/Library
- Chapter 8: Time Series Analysis and Forecasting
MAX_ARMA:
- Added tests to check if the gradient of the current iterate is
numerically zero.
NSBJF:
- Corrected an error in the documentation example.
REG_ARIMA:
- Corrected the size requirement for the optional argument
XLEAD.
- Chapter 10: Discriminant Analysis
DSCRM:
- Use of optional arguments
PRIOR, NI,
XMEAN is now mandatory for certain IDO
values.
- Corrected result when
IDO=6.
- Added an example to the documentation to demonstrate the use of the
routine when
IDO=4.
- Clarified the description of output argument
COEF.
- Corrected the
XMEAN description.
- Chapter 17: Probability Distribution Functions and Inverses
MLE:
- Swapped the starting value assignments and corrected the ratio
calculation.
CHIDF:
- Corrected the example output.
- Math/Library Special Functions
- Chapter 6: Bessel Functions
CBYS:
- Modified to implement the Yousif and Melka (Y&M) approximation
of Bessel Function
Y(xnu,z=x+i*y) when either
x or y has an absolute value which is near
zero and generalized to allow argument properties:
xnu > 1 and
output-array-size < (order + 1);
xnu real > -1.;
x and/or y can be negative. Implementation
of Y&M algorithm insures that Im(Y(xnu,z)) = 0 when
Im(z) = 0 and Re(z) > 0.
CBJS:
- Modified to implement the Yousif and Melka (Y&M) approximation
of Bessel Function
J(xnu,z=x+i*y) when either
x or y has an absolute value which is near
zero and generalized to allow argument properties:
xnu > 1 and
output-array-size < (order + 1);
xnu real > -1.;
x and/or y can be negative.
7.0.0
- Announcements
- Users have the option of using Basic Linear Algebra Subroutines
(BLAS) which take advantage of the computational power of NVIDIA graphic
cards through the use of the NVIDIA CUDA Toolkit.
- Integration of vendor supplied FFTs into IMSL code.
- Online documentation is provided as HTML files in addition to Adobe
Acrobat PDF files.
- The ARPACK package is incorporated in the product with a Fortran
2003 interface.
- By default the LINK environment variables link with the supported
high performance library. Refer to the description of the LINK options
in the accompanying README file.
- Additions
- Math/Library
- Chapter 2: Eigensystem Analysis
ARPACK_SYMMETRIC:
- Computes the eigenvalues and eigenvectors of a generalized real
symmetric eigenvalue problem.
ARPACK_SVD:
- Computes the singular values and the left and right singular vectors
of a real rectangular matrix.
ARPACK_NONSYMMETRIC:
- Computes the eigenvalues and eigenvectors of a generalized
eigenvalue problem.
ARPACK_COMPLEX:
- Computes the eigenvalues and eigenvectors of a generalized
eigenvalue problem.
- Chapter 3: Interpolation and Approximation
SURFND:
- Multidimensional interpolation and differentiation.
- Chapter 4: Integration and Differentiation
QDAG1D:
- Integrates a function with a possible internal or endpoint
singularity.
QDAG2D:
- Integrates a function of two variables with a possible internal or
end point singularity.
QDAG3D:
- Integrates a function of three variables with a possible internal or
endpoint singularity.
- Chapter 5: Differential Equations
DAESL:
- Solves a first order differential-algebraic system of equations,
g(t, y, y') = 0, with optional additional constraints and
user-defined linear system solver.
IVOAM:
- Solves an initial-value problem for a system of ordinary
differential equations of order one or two using a variable order Adams
method.
MMOLCH:
- Solves a system of partial differential equations of the form
ut = f(x, t, u, ux, uxx) using the method of lines. The
solution is represented with cubic Hermite polynomials.
FEYNMAN_KAC:
- Solves the generalized Feynman-Kac PDE on a rectangular grid using a
finite element Galerkin method. Initial and boundary conditions are
provided. The solution is represented by a series of C2 Hermite quintic
splines.
HQSVAL:
- This rank-1 array function evaluates a Hermite quintic spline or one
of its derivatives for an array of input points. In particular, it
computes solution values for the Feynman-Kac PDE handled by routine
FEYNMAN_KAC.
- Chapter 7: Nonlinear Equations
ZUNI:
- Finds a zero of a real univariate function.
- Chapter 8: Optimization
DDJAC:
- Approximates the Jacobian of
M functions in
N unknowns using divided differences.
TRAN:
- Solves a transportation problem.
- Chapter 9: Basic Vector/Matrix Operations
SSPMV/DSPMV:
- Performs the matrix-vector operation
y := alpha*A*x + beta*y where alpha and
beta are scalars, x and y are
n element vectors and A is an n
by n symmetric matrix, supplied in packed form.
SSPR/DSPR:
- Performs the symmetric rank 1 operation
A := alpha*x*x' + A where alpha is a real
scalar, x is an n element vector and A is an
n by n symmetric matrix, supplied in packed
form.
SSPR2/DSPR2:
- Performs the symmetric rank 2 operation
A := alpha*x*y' + alpha*y*x' + A where alpha
is a scalar, x and y are n
element vectors and A is an n by
n symmetric matrix, supplied in packed form.
STPMV/DTPMV:
- Performs one of the matrix-vector operations
x := A*x, or x := A'*x where x is an
n element vector and A is an n by
n unit, or non-unit, upper or lower triangular matrix,
supplied in packed form.
STPSV/DTPSV:
- Solves one of the systems of equations
A*x = b, or
A'*x = b where b and x are
n element vectors and A is an n by
n unit, or non-unit, upper or lower triangular matrix,
supplied in packed form.
CHPMV/ZHPMV:
- Performs the matrix-vector operation
y := alpha*A*x + beta*y where alpha and
beta are scalars, x and y are
n element vectors and A is an n by
n hermitian matrix, supplied in packed form.
CHPR/ZHPR:
- Performs the hermitian rank 1 operation
A := alpha*x*conjg( x' ) + A where alpha is a
real scalar, x is an n element vector and
A is an n by n hermitian matrix,
supplied in packed form.
CHPR2/ZHPR2:
- Performs the hermitian rank 2 operation
A := alpha*x*conjg( y' ) + conjg( alpha )*y*conjg( x' ) + A
where alpha is a scalar, x and y
are n element vectors and A is an
n by n hermitian matrix, supplied in packed
form.
CTPMV/ZTPMV:
- Performs one of the matrix-vector operations
x := A*x,
or x := A'*x, or x := conjg( A' )*x where
x is an n element vector and A is
an n by n unit, or non-unit, upper or lower
triangular matrix, supplied in packed form.
CTPSV/ZTPSV:
- Solves one of the systems of equations
A*x = b, or
A'*x = b, or conjg( A' )*x = b where
b and x are n element vectors and
A is an n by n unit, or non-unit,
upper or lower triangular matrix, supplied in packed form.
- Math/Library Special Functions
- Chapter 4: Gamma Function and Related Functions
PSI1:
- Evaluates the second derivative of the log gamma function.
- Chapter 11: Probability Distribution Functions and Inverses
BETNDF:
- Evaluates the noncentral beta cumulative distribution function
(CDF).
BETNIN:
- Evaluates the inverse of the noncentral beta cumulative distribution
function (CDF).
BETNPR:
- Evaluates the noncentral beta probability density function.
FNDF:
- Evaluates the noncentral F cumulative distribution function
(CDF).
FNPR:
- Evaluates the noncentral F probability density function.
FNIN:
- Evaluates the inverse of the noncentral F cumulative distribution
function (CDF).
TNPR:
- Evaluates the noncentral Student's t probability density
function.
CSNPR:
- Evaluates the noncentral chi-squared probability density
function.
- Stat/Library
- Chapter 2: Regression
PLSR:
- Performs partial least squares regression for one or more response
variables and one or more predictor variables.
- Chapter 7: Test of Goodness of Fit
ADNRM:
- Performs an Anderson-Darling test for normality.
CVMNRM:
- Performs a Cramer-von Mises test for normality.
- Chapter 8: Time Series and Forecasting
REG_ARIMA:
- Fits a univariate, non-seasonal ARIMA time series model with the
inclusion of one or more regression variables.
TS_OUTLIER_IDENTIFICATION:
- Detects and determines outliers and simultaneously estimates the
model parameters in a time series whose underlying outlier free series
follows a general seasonal or nonseasonal ARMA model.
TS_OUTLIER_FORECAST:
- Computes forecasts, associated probability limits and weights for an
outlier contaminated time series.
AUTO_ARIMA:
- Automatically identifies time series outliers, determines parameters
of a multiplicative seasonal ARIMA model and produces forecasts that
incorporate the effects of outliers whose effects persist beyond the end
of the series.
AUTO_PARM:
- Estimates structural breaks in non-stationary univariate time
series.
- Chapter 17: Probability Distribution Functions and Inverses
BETNDF:
- This function evaluates the noncentral beta cumulative distribution
function (CDF).
BETNIN:
- This function evaluates the inverse of the noncentral beta
cumulative distribution function (CDF).
BETNPR:
- This function evaluates the noncentral beta probability density
function.
FNDF:
- This function evaluates the noncentral F cumulative distribution
function (CDF).
FNPR:
- This function evaluates the noncentral F probability density
function.
FNIN:
- This function evaluates the inverse of the noncentral F cumulative
distribution function (CDF).
TNPR:
- This function evaluates the noncentral Student's t probability
density function.
CSNPR:
- This function evaluates the noncentral chi-squared probability
density function.
- Chapter 18: Random Number Generation
RNMVGC:
- Given a Cholesky factorization of a correlation matrix, generates
pseudorandom numbers from a Gaussian Copula distribution.
RNMVTC:
- Given a Cholesky factorization of a correlation matrix, generates
pseudorandom numbers from a Student's T Copula distribution.
CANCOR:
- Given an input array of deviate values, generates a canonical
correlation array.
MLE:
- Calculates maximum likelihood estimates for the parameters of one of
several univariate probability distributions.
- Improvements
- Math/Library
- Chapter 1: Eigensystem Analysis
C_LIN_SOL_LSQ:
- Corrected the calculation of the sign for the imaginary part.
- Chapter 3: Interpolation and Approximation
CSIEZ:
- Modified so that the reordering of the XVEC argument does not
occur.
SURF:
- Resolved conflicting answers between IMSL v5 and v6.
- Chapter 4: Integration and Differentiation
QDAGI:
- Added a comment to the Comments section of the documentation
explaining transformation limitations.
- Chapter 6: Transforms
FFT2B:
- Corrected code so as to yield correct results when input array
COEF is 1 by N.
- Chapter 8: Optimization
QPROG:
- Added optional arguments
MAXITN and SMALL
which allows users to set the maximum iterations allowed and the
convergence criteria of a constraint violation.
- The default values for
MAXITN and SMALL
have been changed. These values were not previously accessible to the
user.
NNLPF:
- Added optional arguments
LGMULT and
CONSTRES providing access to the Lagrange Multipliers and
Constraint Residuals respectively.
- Changed an internal COMMON block name so
NNLPF and
NNLPG do not use common blocks with the same name.
NNLPG:
- Added optional arguments
LGMULT and
CONSTRES providing access to the Lagrange Multipliers and
Constraint Residuals respectively.
UNLSF:
- Code modified to prevent infinite looping. Also effects
BCLSF, BCLSJ, NSLSE, and
UNLSJ.
- Chapter 10: Linear Algebra Operators and Generic Functions
.DET.:
- Resolved wrong sign issue in the imaginary part of the return
value.
.IX.:
- Recompilation with newer compiler resolved segmentation fault issue
ocurring on some environments.
SPARSE_LINEAR_OPERATORS:
- Improved performance and accuracy of optional
(
hbc_sparse%options%accumulate) sparse matrix accumulation
algorithm.
- Math/Library Special Functions
- Chapter 3: Exponential Integrals and Related Functions
CI:
- Corrected an equation in the documentation.
- Chapter 4: Gamma Function and Related Functions
BETAI:
- Complementary probabilities are used to calculate
BETAI
only when a direct CDF calculation demonstrates that the
BETAI value is in the extreme right tail (i.e. very close
to 1) to improve accuracy.
- Chapter 11: Probability Distribution Functions and Inverses
CHIDF:
- Added optional argument
COMPLEMENT to indicate the
complement of the distribution function is to be determined.
- Modified the algorithm to increase accuracy.
CHIIN:
- Modified the algorithm to increase accuracy.
CSNDF:
- Modified the algorithm to increase accuracy.
FDF:
- Added optional argument
COMPLEMENT to indicate the
complement of the distribution function is to be determined.
- Modified the algorithm to increase accuracy.
TDF:
- Added optional argument
COMPLEMENT to indicate the
complement of the distribution function is to be determined.
- Modified the algorithm to increase accuracy.
- Stat/Library
- Chapter 2: Regression
RNLIN:
- Modified code to prevent possible infinite looping.
- Chapter 5: Categorical and Discrete Data Analysis
CTGLM:
- Changed the default allocation size of optional argument
CLVAL to adjust according to values of
NCLVAR.
- Added documentation to clarify the differences in log-likelihood
values between models.
- Chapter 7: Tests of Goodness of Fit and Randomness
KSTWO:
- Corrected an equation in the documentation.
- Chapter 8: Time Series Analysis and Forecasting
AUTO_UNI_AR:
- Reduced memory requirements.
MAX_ARMA:
- Added error check to confirm that at least one of the arguments,
PAR and PMA, has a length greater than 0.
- Added optional arguments
WMEAN (an estimate of the
mean), CNST (an estimate of a constant term),
F (-2*log-likelihood) and EWS (an array of
residuals).
NSBJF:
- Corrected an equation in the documentation.
- Chapter 17: Probability Distribution Functions and Inverses
CHIDF:
- Added optional argument
COMPLEMENT to indicate the
complement of the distribution function is to be determined.
- Modified the algorithm to increase accuracy.
CHIIN:
- Modified the algorithm to increase accuracy.
CSNDF:
- Modified the algorithm to increase accuracy.
FDF:
- Added optional argument
COMPLEMENT to indicate the
complement of the distribution function is to be determined.
- Modified the algorithm to increase accuracy.
TDF:
- Added optional argument
COMPLEMENT to indicate the
complement of the distribution function is to be determined.
- Modified the algorithm to increase accuracy.
- Chapter 19: Utilities
SROWR:
- Corrected sort when
NCOL is not equal to
LDX.
- Chapter 20: Mathematical Support
CHFAC:
- Corrected
TOL argument in interface to be double
precision.
6.0.0
- Announcements
- The license management software which IMSL Fortran Numerical Library
uses has been upgraded to FLEXnet Licensing. FLEXlm 9.2 was used for the
previous release. FLEXnet Licensing is the next generation of FLEXlm.
The user should not see any difference in license management
behavior.
- The directory structure for IMSL Fortran Numerical Library has been
updated.
- The IMSL Fortran Numerical Library is thread-safe.
- The IMSL Fortran Numerical Library leverages ScaLAPACK for improved
performance.
- The environment variable
LM_LICENSE_FILE, which is used
by FLEXlm to locate the license file, has been changed to be a directory
name. Therefore users are no longer restricted to using the name
specified by the LM_LICENSE_FILE environment variable. Any
name ending with a .lic filename extension, which resides
in the directory specified by LM_LICENSE_FILE, will be
searched for the correct FEATURE name.
- Additions
- Math/Library
- Chapter 8: Optimization
dense_lp:
- Solves a dense linear programming problem.
mps_free:
- Deallocates the space allocated for the IMSL derived
types_MPS. This routine is usually used in conjunction with
READ_MPS.
read_mps
- Reads an MPS file containing a linear programming problem or a
quadratic programming problem.
- Chapter 10: Linear Algebra and Generic Functions
- OPERATORS
.X., .TX., .XT.,
.XH., .T., .H., .I.,
.XI.
- Added sparse arguments
- Chapter 11: Utilities
MPI_SETUP:
- Initializes or finalizes MPI. This existed in previous releases but
was not documented.
RNGE32:
- Retrieves the current table used in the 32-bit Mersenne Twister
generator.
RNIN32:
- Initializes the 32-bit Mersenne Twister generator using an
array.
RNSE32:
- Sets the current table used in the 32-bit Mersenne Twister
generator.
RNGE64:
- Retrieves the current table used in the 64-bit Mersenne Twister
generator.
RNIN64:
- Initializes the 64-bit Mersenne Twister generator using an
array.
RNSE64:
- Sets the current table used in the 64-bit Mersenne Twister
generator.
ScaLAPACK_EXIT:
- This routine exits ScaLAPACK mode for the IMSL Library routines. All
processors in the
BLACS context call the routine.
ScaLAPACK_GETDIM:
- This routine calculates the row and column dimensions of a local
distributed array based on the size of the array to be distributed and
the row and column blocking factors to be used.
ScaLAPACK_MAP:
- This routine maps array data from a global array to local arrays in
the two-dimensional block-cyclic form required by ScaLAPACK
routines.
ScaLAPACK_SETUP:
- This routine sets up a processor grid and calculates default values
for various entities to be used in mapping a global array to a processor
grid.
ScaLAPACK_UNMAP:
- This routine unmaps array data from local distributed arrays to a
global array. The data in the local arrays must have been stored in the
two-dimensional block-cyclic form required by ScaLAPACK routines.
- Math/Library Special Functions
- Chapter 8: Airy Functions
CAI:
- Evaluates the Airy function of the first kind for complex
arguments.
CBI:
- Evaluates the Airy function of the second kind for complex
arguments.
CAID:
- Evaluates the derivative of the Airy function of the first kind for
complex arguments.
CBID:
- Evaluates the derivative of the Airy function of the second kind for
complex arguments.
- Chapter 11: Probability Distribution Functions and Inverses
ALNDF:
- Evaluates the lognormal cumulative probability distribution
function.
ALNIN:
- Evaluates the inverse of the lognormal cumulative probability
distribution function.
ALNPR:
- Evaluates the lognormal probability density function.
ANORPR:
- Evaluates the normal probability density function.
BETPR:
- Evaluates the beta probability density function.
CHIPR:
- Evaluates the chi-squared probability density function.
EXPDF:
- Evaluates the exponential cumulative distribution function.
EXPIN:
- Evaluates the inverse of the exponential cumulative distribution
function.
EXPPR:
- Evaluates the exponential probability density function.
EXVDF:
- Evaluates the extreme value cumulative distribution function.
EXVIN:
- Evaluates the inverse of the extreme value cumulative distribution
function.
EXVPR:
- Evaluates the extreme value probability density function.
FPR:
- Evaluates the F probability density function.
GAMPR:
- Evaluates the gamma probability density function.
GEODF:
- Evaluates the discrete geometric cumulative probability distribution
function.
GEOIN:
- Evaluates the inverse of the geometric cumulative probability
distribution function.
GEOPR:
- Evaluates the discrete geometric probability density function.
RALDF:
- Evaluates the Rayleigh cumulative distribution function.
RALIN:
- Evaluates the inverse of the Rayleigh cumulative distribution
function.
RALPR:
- Evaluates the Rayleigh probability density function.
TPR:
- Evaluates the Student's
t probability density
function.
UNDDF:
- Evaluates the discrete uniform cumulative distribution
function.
UNDF:
- Evaluates the uniform cumulative distribution function.
UNDIN:
- Evaluates the inverse of the discrete uniform cumulative
distribution function.
UNDPR:
- Evaluates the discrete uniform probability density function.
UNIN:
- Evaluates the inverse of the uniform cumulative distribution
function.
UNPR:
- Evaluates the uniform probability density function.
WBLDF:
- Evaluates the Weibull cumulative distribution function.
WBLIN:
- Evaluates the inverse of the Weibull cumulative distribution
function.
WBLPR:
- Evaluates the Weibull probability density function.
- Stat/Library
- Chapter 8: Time Series Analysis and Forecasting
estimate_missing:
- Estimates missing values in a time series.
seasonal_fit:
- Determines an optimal differencing for seasonal adjustment of a time
series.
- Chapter 17: Probability Distribution Functions and Inverses
ALNDF:
- Evaluates the lognormal cumulative probability distribution
function.
ALNIN:
- Evaluates the inverse of the lognormal cumulative probability
distribution function.
ALNPR:
- Evaluates the lognormal probability density function.
ANORPR:
- Evaluates the normal probability density function.
BETPR:
- Evaluates the beta probability density function.
CHIPR:
- Evaluates the chi-squared probability density function.
EXPDF:
- Evaluates the exponential cumulative distribution function.
EXPIN:
- Evaluates the inverse of the exponential cumulative distribution
function.
EXPPR:
- Evaluates the exponential probability density function.
EXVDF:
- Evaluates the extreme value cumulative distribution function.
EXVIN:
- Evaluates the inverse of the extreme value cumulative distribution
function.
EXVPR:
- Evaluates the extreme value probability density function.
FPR:
- Evaluates the
F probability density function.
GAMPR:
- Evaluates the gamma probability density function.
GEODF:
- Evaluates the discrete geometric cumulative probability distribution
function.
GEOIN:
- Evaluates the inverse of the geometric cumulative probability
distribution function.
GEOPR:
- Evaluates the discrete geometric probability density function.
RALDF:
- Evaluates the Rayleigh cumulative distribution function.
RALIN:
- Evaluates the inverse of the Rayleigh cumulative distribution
function.
RALPR:
- Evaluates the Rayleigh probability density function.
TPR:
- Evaluates the Student's
t probability density
function.
UNDDF:
- Evaluates the discrete uniform cumulative distribution
function.
UNDF:
- Evaluates the uniform cumulative distribution function.
UNDIN:
- Evaluates the inverse of the discrete uniform cumulative
distribution function.
UNDPR:
- Evaluates the discrete uniform probability density function.
UNIN:
- Evaluates the inverse of the uniform cumulative distribution
function.
UNPR:
- Evaluates the uniform probability density function.
WBLDF:
- Evaluates the Weibull cumulative distribution function.
WBLIN:
- Evaluates the inverse of the Weibull cumulative distribution
function.
WBLPR:
- Evaluates the Weibull probability density function.
- Chapter 18: Random Number Generation
RNGE32:
- Retrieves the current table used in the 32-bit Mersenne Twister
generator.
RNIN32:
- Initializes the 32-bit Mersenne Twister generator using an
array.
RNSE32:
- Sets the current table used in the 32-bit Mersenne Twister
generator.
RNGE64:
- Retrieves the current table used in the 64-bit Mersenne Twister
generator.
RNIN64:
- Initializes the 64-bit Mersenne Twister generator using an
array.
RNSE64:
- Sets the current table used in the 64-bit Mersenne Twister
generator.
RNEXV:
- Generates pseudorandom numbers from an extreme value
distribution.
RNFDF:
- Generates pseudorandom numbers from the
F
distribution.
RNRAL:
- Generates pseudorandom numbers from a Rayleigh distribution.
- Improvements
- Math/Library
- Miscellaneous
umpol_int (interface module)
- Corrected intent on the optional arguments.
cond_int (interface module)
- Added optional argument
norm_choice to calculate the
condition number using 1-norm, 2-norm, and
inf-norm. linear_operators (interface
module)
- Added sparse data type as valid arguments.
- Chapter 1: Linear Systems
lchrg:
LCHRG documentation specified that the input matrix
must be positive semi-definite, when, in fact, it must be positive
definite. The error message was changed to reflect this.
lftrb:
- Changed the way A is copied to FAC so that A and FAC can share the
same storage. This correction was necessary for the LAPACK algorithm
only.
lqrsl:
- Increased the amount of workspace used. Fixed bug in using
wk for computing X.
lsqrr:
- Initialize data when using the LAPACK algorithm.
lsvcr:
- Initialize data when using the LAPACK algorithm.
lsvrr:
- Changed
jobu option to return "All" left or right
singular vectors even when even when m is not equal to n when using the
LAPACK algorithm.
- Chapter 5: Differential Equations
daspg:
- Correct the way that
atol and rtol are
handled when input as arrays.
sleig:
- Corrected code so that correct data is printed witherror
messages.
- Chapter 8: Optimization
dlprs:
- Added code to avoid the situation when
n=0 which causes
an invalid array access.
lconf:
- Moved the location where the objective function value at the optimal
point was being saved. Previously, it was possible to get an objective
function value at a point other than the optimal point.
lcong:
- Moved the location where the objective function value at the optimal
point was being saved. Previously, it was possible to get an objective
function value at a point other than the optimal point.
min_uncon_multivar:
- Added a check to avoid a possible divide by zero. If the divide by
zero occurs the code would end up in an infinite loop because of the
presence of NaNs.
nnlpf:
- Allocate more memory to prevent access violation.
nnlpg:
- Allocate more memory to prevent access violation.
umpol:
- Remove warning message for s less than zero. Change application of
random number when
s=0.0 and
xguess<1.0.
- Chapter 11: Utilities
verml - Use environment variables instead of reading
from a file to get info.
- Stat/Library
- Miscellaneous
c1f:
- Changed how P values are calculated to avoid loss of precision for
very small p-values. Used internally by numerous IMSL routines.
mp_types (interface module):
- Added new types for
read_mps.
mpi_setup_int (interface module):
- Chapter 1: Basic Statistics
uvsta:
- Added code to set
stat(15,:) to stat(10,:)
when iwt = 0. Before, it was not initialized.
- Chapter 2: Regression
rbest:
- Code was added to prevent an out-of-bounds exception. Added a
warning message in the case of an almost exact fit with Mallows CP
criterion calculations. Initialized data which would sometimes cause a
"Terminal Error".
- Chapter 8: Time Series Analysis and Forecasting
diff:
- Corrected the case when
d=0 and s>0 was
being handled.
nslse:
- Corrected code which caused an infinite loop condition.
- Chapter 11: Cluster Analysis
cdist:
- Initialize some variables which might cause the routine to
erroneously report that workspace could not be allocated.
- Chapter 13: Survival Analysis, Life Testing and Reliability
phglm:
- Avoid assigning data to areas which have not been allocated. This
only happens in a "Terminal Error" condition.
- Chapter 17: Probability Distribution Functions and Inverses
bindf:
- Changed input argument name from P to PIN and adjusted error message
accordingly.
binpr:
- Changed input argument name from P to PIN and adjusted error message
accordingly.
tndf:
- Change
TNDF error code 2 (underflow) from TERMINAL to
FATAL.
- Chapter 18: Random Number Generation
r1int:
- Implement the new Mersenne Twister algorithm. Used to initialize the
random number generator.
rnopt:
- Add implementation of Mersenne Twister.
rnun:
- Add implementation of Mersenne Twister.
rnunf:
- Add implementation of Mersenne Twister.
- Chapter 19: Utilities
versl:
- Use environment variables instead of reading from a file to get
info.
5.0.1
- Announcements
- The IMSL Fortran Numerical Library, Version 5.01 leverages LAPACK
for improved performance.
- Additions
- Improvements
gmres:
- Additional error checking is implemented.
rnsef:
- Corrected problem where the 1st element of input is not copied into
the table.
surf:
- Correct workspace allocation.
u3lsf:
- Call
lqrsl instead of u10sf to accomodate LAPACK.
u3lsj:
- Call
lqrsl instead of u10sf to accomodate LAPACK.
5.0.0
- Announcements
- The license management software which IMSL Fortran Numerical
Library, Version 5.01 uses has been updated to FLEXlm 9.5. FLEXlm 6.1
was used for IMSL Fortran Library 5.0.
- Hyperjump capability in the documentation has been improved.
- Workspace allocation is now done using the Fortran 90
ALLOCATE/DEALLOCATE commands. In the past, workspace was allocated and
deallocated in C.
- SMP capability using OpenMP directives was added to selected
routines. Since this list is environment-specific, refer to the
environment-specific README files for more information.
- Generic interface modules have been added to assist the user in
calling IMSL Fortran Numerical Library routines. Among the advantages of
using interface modules are the following:
- Identifies usage errors during compilation which otherwise would
have resulted in a run-time error and would have been difficult to
identify.
- Incorporates optional arguments making calling sequences of routines
simpler.
- Makes the calls to IMSL routines precision independent. This allows
for fewer required changes when switching data types within an
application.
- Users wishing to use the generic interface modules with their
current applications will most likely be required to change the calling
sequences to the IMSL routines. Current applications DO NOT need to be
modified if the interface modules are not used.
- Additions
FAURE_FREE:
- Frees the structure containing information about the FAURE
structure.
FAURE_INIT:
- Shuffled FAURE sequence initialization.
FAURE_NEXT:
- Computes a shuffled Faure sequence.
QMC:
- Integrates a function over a hyper rectangle using a quasi-Monte
Carlo method.
MAX_ARMA:
- Exact maximum likelihood estimation of the parameters in a
univariate ARMA (auto-regressive, moving average) time series
model.
AUTO_UNI_AR:
- Automatic selection and fitting of a univariate autoregressive time
series model. The lag for the model is automatically selected using
Akaike's Information Criterion (AIC). Estimates of the autoregressive
parameters for the model with minimum AIC are calculated using method of
moments or maximum likelihood.
AUTO_FPE_UNI_AR:
- Automatic selection and fitting of a univariate autoregressive time
series model using Akaike's FPE (Final Prediction Error) criteria.
Estimates of the autoregressive parameters for the model with minimum
FPE are calculated using the methodology described in Akaike, H., et. al
(1979).
AUTO_MUL_AR:
- Automatic selection and fitting of a multivariate autoregressive
time series model. This is the multivariate version of
AUTO_UNI_AR. The lag for the model is automatically
selected using Akaike's Information Criterion (AIC).
AUTO_FPE_MUL_AR:
- Automatic selection and fitting of a multivariate autoregressive
time series model using Akaike's Final Prediction Error (FPE)
criteria.
BAY_SEA:
- Bayesian seasonal adjustment modeling. The model allows for a
decomposition of a time series into trend, seasonal, and an error
component.
GARCH:
- Computes estimates of the parameters of a
GARCH(p,q)
model.
OPT_DES:
- Optimal controller design based upon the methodology of Akaike and
Nakagaw (1972). The routine allows for multiple channels for both the
controlled and manipulated variables. The gain matrix is computed after
automatically selecting the best autoregressive model using minimum
multivariate final prediction error (MFPE).
ARMA_SPEC:
- Calculates the rational power spectrum for an ARMA model. It also
computes the rational power spectrum for AR and MA models by setting the
number of MA or AR coefficients to zero, respectively.
NNLPF:
- Solve a general nonlinear programming problem using a sequential
equality quadratic programming method with an alternative usage of a
fully regularized mixed constrained subprogram in case of non-regular
constraints. It uses a slightly modified version of the Pantoja-Mayne
update for the Hessian of the Lagrangian, variable dual scaling, and an
improved Armijo-type stepsize algorithm.
NNLPG:
- Solve a general nonlinear programming problem using a sequential
equality quadratic programming method with an alternative usage of a
fully regularized mixed constrained subprogram in case of non-regular
constraints, and user-supplied gradient. It uses a slightly modified
version of the Pantoja-Mayne update for the Hessian of the Lagrangian,
variable dual scaling, and an improved Armijo-type stepsize
algorithm.
- Improvements
anest:
- Corrected problem with printing incorrect labels on means.
bclsf:
- Moved initialization of
XSCALE in b3lsf to
correct a problem where XGUESS was returned without
iterating.
bclsj:
- Moved initialization of
XSCALE in b3lsf to
correct a problem where XGUESS was returned without
iterating.
bcoah:
- Corrected problem occurring when a new iterate point was on the
boundary, which could potentially cause an infinite loop. Moved tests
for maximum iterations and evaluations ahead of scaled gradient
test.
bconf:
- Modified
b5onf to avoid a potential divide by 0.
bnrdf:
- Replaced code for computation of Owen's T-function. This corrects a
problem where
bnrdf was incorrectly returning zero for some
values of x and y.
bs1gd:
- Removed code that caused resetting
ncoef in the
code.
bsies:
- Added code to handle the large
x case.
bsj1:
- Changed double precision to return results which are consistent with
single precision in the case where
x<0.
cbis:
- Changed computation method in cases when
|z| is greater
than 25. This change resolves problems with accuracy that were showing
up with large z.
cbins:
- Fixed computations for large
X. Added code to handle
z in quadrants 2 and 3, real z, and large
z.
cdist:
- Changed some internal computations in
m1ran to use
integer*8 to avoid a potential segmentation fault with
large input arrays.
cpsec:
- Implement using Fortran intrinsic.
csscv:
- Use a more precise value for golden ratio.
csswp:
- Removed check for
F in range pi,-pi.
cswed:
- Added statement to restore
F after scaling for option
IFSCAL=1.
cswep:
- Removed check for
F in range pi,-pi.
ctepr:
- Replaced
nrow with ldtabl in areas where
TABLE(I, J) was accessed linearly
(table(I+(J-1)*nrow). ldtabl is required in
these cases. This fixes some problems with workspace corruption when
LDTABL .gt. NROW.
ctglm:
- Modified centering adjustment in the computation of the first
element of the covariance matrix. Also, to avoid failure with a
segmentation fault for large input arrays, changed some internal
computations in m1ran to use
integer*8.
cttwo:
- Replaced code for Fisher Exact Test
2-tail probability
computation.
dlprs:
- Fixed a bug that occurred when an unrestricted nonbasic variable
enters the basis. In such cases, it would never leave.
evlrg:
- Changed check of subdiagonal element against tolerance rather than
zero.
gamdf:
- Changed initialization of CUT to amach(4) to improve accuracy.
ggues:
- Changed some internal computations to use
integer*8 to
avoid potential overflow.
hyppr:
- Changed the return value from 1 to 0 in case
k > n.Eliminate K = M special case.
iercd:
- Added
iercd to numerical_libraries
interface.
ivprk:
- Corrected problem with computation of final step size. This occurred
when trying to force the step size to a constant value by inputting an
equal minimum and maximum step size (
HMIN and
HMAX). The returned trial step size (HTRIAL)
was sometimes half the input step size.
kalmn:
- Modified code to avoid potential divide by zero coming from
u8inf.
kstwo:
- Correct workspace problem.
lfsxg:
- Modified to accept zero
NL.
lfszg:
- Modified to accept zero
NL.
lftcg:
- Use an algorithm which takes advantage of the SMP capabilities in
the Sun Performance Library.
lftdh:
- Use an algorithm which takes advantage of the SMP capabilities in
the Sun Performance Library.
lftds:
- Use an algorithm which takes advantage of the SMP capabilities in
the Sun Performance Library.
dlftrg:
- Use an algorithm which takes advantage of the SMP capabilities in
the Sun Performance Library.
lftxg: - Replaced check for duplicate
row,col to avoid possible integer overflow.
lftzg:
- Replaced check for duplicate
row,col to avoid possible
integer overflow.
lftxg:
- Changed some internal computations to
integer*8 to
avoid overflows.
lnfxd:
- Avoid workspace allocation error.
lscxd:
- Added code to set
invper when
ijob=0 or 1.
lslxd:
- Incorrectly outputs terminal error 10. Corrected initialization
problem in
l6cxd. Replaced check for duplicate
row,col to avoid possible integer overflow.
lslxg:
- Replaced code to check for duplicate rows and columns, and changed
some internal computations to use
integer*8 to avoid
potential overflows.
lslzd:
- Replaced check for duplicate
row,col to avoid possible
integer overflow.
lslzg:
- Replaced check for duplicate
row,col to avoid possible
integer overflow.
msidv:
- Correct logic which determines an error message.
nconf:
- Allow the the number of allowable constraints to change from 500 to
10000.
ncong:
- Allow the the number of allowable constraints to change from 500 to
10000.
neqnj:
- Fixed a typo DLETA should be DELTA.
nslse:
- Corrected problem with internal overflow.
pcgrc:
- Correct typo that had
tri2 not having save
attribute.
pde_1d_mg:
- Cannot make a new call to
pde_1d_mg after a fatal
error. Added code to release workspace for D2SPG in case of
error condition.
qdawf:
- Corrected dimension of
IWK, which caused incorrect
results in some problems.
qdder:
- Corrected logic in
q3der to locate index on grid
closest to x.
qand:
- Modified check for
maxfcn.
rcovb:
- Changed argument
covb to intent(out) in
numerical_libraries interface.
rglm:
- Results may vary depending upon column ordering. Corrected problem
with internal call to
g1glm.
rnnof:
- Added to
numerical_libraries interface.
rnun:
- Use an algorithm which takes advantage of the machine
architecture.
rnunf:
- Added
rnunf to numerical_libraries
interface.
sswp:
- Removed check for
F in range pi, -pi.
svglm:
- Modified centering adjustment in computation of the first element of
the covariance matrix.
swed:
- Modified
s2ed to restore F to its original
contents before exiting.
swep:
- Removed check for
F in range pi, -pi.
swwd:
- Modified
s2wd to restore F to its original
contents before exiting.
ds6rf:
- Made
s3rf call a precision specific call.
tdate:
- Implement using a Fortran intrinsic.
timdy:
- Implement using a Fortran intrinsic.
tndf:
- Added terminal error message when underflow condition is
detected.
tnin:
- Added terminal error message when underflow condition is
detected.
uvsta:
- Modified internal computations of mean to use double the default
precision to improve the accuracy of the result.
unit:
- Incorrect results for complex numbers. Corrected norm computation in
c_norm2 and Z_norm2.