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 file README located in this directory.

For release dates and maintenance and support schedules, see Rogue Wave Product Lifecycle Information.

- Announcements
- none

- Additions
- Information about the OpenMP "schedule(runtime)" clause has been added to Math and Stat User Guide under the OpenMP Usage section in the Introduction.
- Information about the OpenMP OMP_NUM_THREADS and OMP_NESTED environment variables has been added to Math and Stat User Guide under the OpenMP Usage section in the Introduction.
- Math/Library
- Chapter 1: Linear Systems
`lin_sol_gen (real/complex)`

- Added optional argument
`IMSL_ITERATIVE_REFINEMENT`

to enable iterative refinement.

- Added optional argument

- Chapter 1: Linear Systems

- Removals
- Support of Graphics Processing Units (NVIDIA) has been removed.

- Improvements
- Math/Library
- General
- The internally used IMSL function
`imsl_fi_power`

was replaced either by a direct computation of the power or a version of`imsl_fi_power`

that doesn't use the IMSL error handler. These changes might improve performance of the CMATH library.

- The internally used IMSL function
- Chapter 1: Linear Systems
`lin_sol_gen_coordinate (real/complex)`

- Fixed some memory leak issues.
- Fixed bugs in the handling of singular matrices.

`superlu (real/complex)`

- Fixed bug in the handling of singular matrices.

`lin_sol_gen_band (real)`

- Fixed initialization bug for matrices of order 1.
- Incorporated BLAS calls in the factorization routine.

- Chapter 3: Interpolation and Approximation
`cub_spline_tcb`

- Fixed memory leak issue.

`cub_spline_interp_e_cnd`

- Implemented various performance improvements.

`cub_spline_interp_shape`

- Implemented various performance improvements for large interpolation sets.

`spline_least_squares`

- Improved performance for large data sets and large spline space dimensions.

`spline_interp`

- Implemented performance improvements for large interpolation sets.

`spline_2D_interp`

- Implemented performance improvements for large two-dimensional interpolation sets.

- Chapter 4: Quadrature
`gauss_quad_rule`

- Improved performance for large numbers of quadrature points through OpenMP parallelism.

- Chapter 5: Differential Equations
`ode_runge_kutta`

- Improved performance by replacing Level 1 BLAS calls by Level 2 BLAS calls where appropriate.
- Fixed memory leak issue.

- Chapter 8: Optimization
`quadratic_prog`

- Corrected handling of constraint inconsistencies.
- Slightly relaxed error tolerance used in the check for constraint dependencies to allow for a wider range of problems to be solved.

`constrained_nlp`

- Fixed some problems related to memory deallocation.
- Implemented various performance improvements.
- Modified code so that now an error message is issued in case the algorithm converges to an infeasible stationary point of the minimization problem.

`min_uncon_multivar`

- Fixed bug in the internal parallel computation of the numerical gradient.
- Fixed function pointer initialization error.
- Corrected returned objective value in case the function issues an IMSL_NO_FURTHER_PROGRESS warning message.

- Chapter 9: Special Functions
`bessel_Jx`

- Implemented performance improvements in case that many Bessel function evaluations are required.

`bessel_Yx`

- Implemented performance improvements in case that many Bessel function evaluations are required.

`bessel_Ix`

- Implemented performance improvements in case that many Bessel function evaluations are required.

`bessel_Kx`

- Implemented performance improvements in case that many Bessel function evaluations are required.

`bivariate_normal_cdf`

- Replaced algorithm that computes Owen's T-function by a more efficient algorithm of Patefield and Tandy.

`internal_rate_of_return`

- Modified underlying algorithm in order to get more accurate solutions.
- Added new optional argument
`IMSL_MAX_EVALS`

in order to be able to control the maximum number of iterations of the root finder.

- Chapter 12: Utilities
`mat_mul_rect (real/complex)`

- Implemented various performance improvements including OpenMP support.

- Error handling:
`imslerr.dat`

- Fixed some misspellings in error messages.

- Fixed bug in the internal handling of error messages.

- General
- Stat/Library
- General
- The internally used IMSL function
`imsls_fi_power`

which computes the integer powers of a floating point number was inlined where possible. This change might improve performance of the CSTAT library.

- The internally used IMSL function
- Chapter 2: Regression
`hypothesis_partial`

- Corrected argument check for input variable
`nu`

so that - in accordance with the documentation - an error is now issued if`nu`

is equal to zero. - Corrected column number of array
`g`

(see optional arguments`IMSLS_G`

and`IMSLS_G_USER`

) from`n_dependent`

to`nu`

. - Corrected output of matrix returned in array
`g`

(see optional arguments`IMSLS_G`

and`IMSLS_G_USER`

). Amongst others, if`nh`

is less than`nhp`

the unused rows in`g`

remain now unchanged by`hypothesis_partial`

if`g`

is user-defined via`IMSLS_G_USER`

. - Corrected output in array
`h`

returned through optional argument`IMSLS_H_MATRIX_USER`

: If`nh`

is less than`nhp`

the unused rows in`h`

remain now unchanged by`hypothesis_partial`

.

- Corrected argument check for input variable
`nonlinear_regression`

- Corrected internal initialization of several tolerance values.

`pls_regression`

- Added a check and terminal error for input data with constant columns.
- Corrected the PRESS calculation to recenter the training data in each fold of the cross-validation procedure.
- Corrected cross-validation sampling.

- Chapter 5: Categorical and Discrete Data Analysis
`categorical_glm`

- Corrected internal centering of initial intercept if optional argument
`IMSLS_INITIAL_EST_INPUT`

is used. - Improved documentation for optional argument
`IMSLS_INITIAL_EST_INPUT`

. (Documentation) - Corrected size of array
`iterations`

related to optional arguments`IMSLS_ITERATIONS`

and`IMSLS_ITERATIONS_USER`

. (Code and documentation) - Corrected pdf formula for model 2 in the table of the Description section. (Documentation)

- Corrected internal centering of initial intercept if optional argument

- Chapter 8: Time Series and Forecasting
`ts_outlier_identification`

- Improved performance of outlier detection, resulting in significant improvements in overall performance for time series with many potential outliers. These changes might also affect positively the performance of
`ts_outlier_identification`

calling function`auto_arima`

.

- Improved performance of outlier detection, resulting in significant improvements in overall performance for time series with many potential outliers. These changes might also affect positively the performance of

- Chapter 11: Probability Distribution Functions and Inverses
`multivariate_normal_cdf`

- Corrected documentation of required argument
`sigma`

: The function now permits solely the variance-covariance matrix as input. - Corrected correlation coefficients and bounds used in the trivariate case.
- Corrected computation of probabilities in case of equicorrelated multivariate normal distributions.
- Corrected and improved algorithm that orders upper integration bounds and permutes the correlation matrix accordingly.
- Fixed one missing memory allocation and some memory leak issues.

- Corrected documentation of required argument

- Chapter 12: Random Number Generation
`random_substream_seed_get`

- Fixed internal initialization error.

- Error handling:
- Fixed bug in the internal handling of error messages.

- General

- Math/Library

- Announcements
- none

- Additions
- none

- Improvements
- Math/Library
- Chapter 9: Special Functions
`internal_rate_of_return`

- Modified underlying algorithm in order to get more accurate solutions.
- Added new optional argument
`IMSL_MAX_EVALS`

in order to be able to control the maximum number of iterations of the root finder.

- Chapter 9: Special Functions

- Math/Library

- Announcements
- Notice to customers using Oracle Solaris platforms: IMSL C 2016 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 C
`CUBLAS_LIBRARY`

module: IMSL C 2016 will be the last planned version to support the NVIDIA CUDA CUBLAS Library. Please contact your Rogue Wave account representative or Rogue Wave support with any questions concerning this announcement. - CUDA Toolkit Libraries support upgraded to 8.0
- IMSL is transitioning toward online only documentation. Currently documentation is available with the installation of the product and on our website https://www.roguewave.com/help-support/documentation/imsl-numerical-libraries#C. In future releases documentation will be available only at https://www.roguewave.com/help-support/documentation/imsl-numerical-libraries#C
- 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.

- Additions
- Stat/Library
- Chapter 8: Time Series and Forecasting
`arima`

:- Fits regular and seasonal autoregressive and moving average parameters along with optional regression variables.

- Chapter 8: Time Series and Forecasting

- Stat/Library
- Improvements
- Math/Library
- Chapter 1: Linear Systems
`lin_svd_gen`

(real/complex)- Corrected storage order of the left singular vectors in array U when input array A and U share the same storage locations. Corrected sign in formula for shift calculation.

`lin_svd_gen`

(real/complex)- Added possibility to call LAPACK routine
`?GESDD (?=S,D/C,Z)`

, a divide-and-conquer SVD implementation, via a new optional argument`IMSL_METHOD`

.

- Added possibility to call LAPACK routine

- Chapter 1: Linear Systems
- Stat/Library
- Chapter 13: Data Mining
`decision_tree`

:- Corrected a memory allocation error for response variables of ordinal type.

- Chapter 13: Data Mining

- Math/Library

- Announcements
- OpenMP-enabled IMSL functions use the "schedule(runtime)" clause for the parallelized FOR-loops to give users more control of scheduling. Please go to http://openmp.org for more information.

- Additions
- Math/Library
- Chapter 8: Optimization
`transport`

- Solves a transportation problem.

`min_con_polytope`

- Minimizes a function of n variables subject to bounds on the variables using a direct search complex algorithm.

`min_con_lin_trust_region`

- Minimizes a function of n variables subject to linear constraints using a derivative-free, interpolation-based trust-region method.

- Chapter 8: Optimization
- Stat/Library
- Chapter 13: Data Mining
`decision_tree`

- Now has options for random forest ensemble learning.

`gradient_boosting`

- Performs stochastic gradient boosting for decision trees.

- Chapter 13: Data Mining

- Math/Library
- Improvements
- Math/Library
- none

- Stat/Library
- Chapter 2: Regression
`pls_regression`

- Replaced ALERT message
`IMSLS_RESIDUAL_CONVERGED`

by WARNING message`IMSLS_PLS_REGRESSION_CONVERGED`

.

- Replaced ALERT message

- Chapter 8: Time Series and Forecasting
`arma`

- Added optimality check for the starting point of the
`ARMA`

parameter optimization.

- Added optimality check for the starting point of the

- Chapter 12: Random Number Generation
`random_normal_multivariate`

- Now generates the same values in multiple runs as in a single run with the same seed.

- Chapter 2: Regression

- Math/Library

- Announcements
- The general look and feel of the online documentation has been changed.
- CUDA 7.5 is supported.

- Additions
- Math/Library
- Chapter 8: Optimization
`min_uncon_polytope`

- Minimizes a function of n variables using a direct search polytope algorithm.

- Chapter 8: Optimization
- Stat/Library
- Chapter 13: Data Mining
`decision_tree`

- Added optional argument
`IMSLS_CRITERIA`

which allows users to specify which criteria the`ALACART`

method and the C4.5 method should use in the gain calculations to determine the best split at each node.

- Added optional argument

- Chapter 13: Data Mining

- Math/Library
- Improvements
- Math/Library
- Chapter 3: Interpolation and Approximation
`cub_spline_tcb`

- Corrected value assignment of optional argument
`IMSL_RIGHT`

. Document Example 2 output updated to reflect this correction.

- Corrected value assignment of optional argument

- Chapter 8: Optimization
`sparse_lin_prog`

- Updated the function description (Documentation)

- Chapter 12: Utilities
`output_file`

- Corrected document example 2 (Documentation)

- Error handling:
`imslerr.dat`

- Various error message corrections.

- Chapter 3: Interpolation and Approximation
- Stat/Library
- Chapter 2: Regression
`pls_regression`

- Various performance improvements
- Resolved cross validation memory issues
- Corrected description for
`IMSLS_N_FOLD`

(Documentation)

- Chapter 5: Categorical and Discrete Data Analysis
`logistic_regression`

- Fixed error in the initial values.

`logistic_reg_predict`

- Fixed problems with the prediction intervals and improper indexing

- Chapter 7: Tests of Goodness of Fit
`chi_squared_test`

- Corrected index out of bounds problem

- Chapter 8: Time Series and Forecasting
`auto_arima`

- Resolved resource error associated with parallel code
- Relaxed search for optimum ARMA model when the optimum model found by
`seasonal_fit`

cannot be handled by`ts_outlier_identification`

- Chapter 12: Random Number Generation
`random_table_get`

- Updated the function description (Documentation)

`random_GFSR_table_get`

- Updated the function description (Documentation)

`random_weibull`

- Updated the example description (Documentation)

- Chapter 13: Data Mining
`apriori`

- Increased resource allocation and improved union accuracy for frequent item sets
- Improved performance of candidate itemsets identification
- Optional argument
`IMSLS_MIN_SUPPORT`

changed to type double only. - Corrected the description of the array x in multiple references from type
`float`

to type`int`

(Documentation) - Corrected confidence value calculations.

`aggr_apriori`

- Corrected the description of the array x in multiple references from type
`float`

to type`int`

(Documentation)

- Corrected the description of the array x in multiple references from type
`decision_tree`

- Improved memory efficiency to correct for out of memory errors. Corrected problems associated with memory allocation for cross validation.
- Corrected the function description (Documentation)
- Added description for the deviance criterion to the documentation.

- Chapter 15: Utilities
`data_sets`

- Added check to assure mutually exclusive arguments are not selected together.

- Chapter 2: Regression

- Math/Library

- Announcements
- License management has been removed for paid-up licenses.
- Made error handling more robust when no heap memory is available.
- It is possible that some memory is retained between calls to IMSL C Numerical Library functions for error handling purposes. This memory may be reported as a memory leak by some leak detection tools. The following functions free the allocated memory associated with the error handler for each thread:
`imsl_free_error_handlers()`

- Frees memory associated with C Math Library error handlers.

`imsls_free_error_handlers()`

- Frees memory associated with C Stat Library error handlers.

- A deprecated function is one that is no longer used by anything in the library but is being included in the product for those users who may be referencing it in their application. However future versions of C Numerical Library may not include these functions. If any of these are being called within your application, it is recommended that you change your code to call the replacement function or retain the deprecated function before replacing this library with the next version.
- deprecated
`ode_adams_gear`

and replaced by`ode_adams_krogh`

. - deprecated
`ode_adams_2nd_order`

and replaced by`ode_adams_krogh`

. - deprecated
`pde_method_of_lines`

and replaced by`modified_method_of_lines`

. - deprecated
`dea_petzold_gear`

and replaced by`differential_algebraic_eqs`

. - deprecated
`initialize`

without replacement.

- deprecated

- Additions
- Math/Library
- Reference Material
`initialize_error_handler`

- Initialize the IMSL C Math Library error handling system.

`set_user_fcn_return_flag`

- Indicates a condition has occurred in a user-supplied function necessitating a return to the calling function.

- Chapter 1: Linear Systems
`superlu_smp`

- Computes the LU factorization of a general sparse matrix by a left-looking column method using OpenMP parallelism, and solves the real sparse linear system of equations
`Ax = b`

.

- Computes the LU factorization of a general sparse matrix by a left-looking column method using OpenMP parallelism, and solves the real sparse linear system of equations
`superlu_smp`

(complex)- Computes the LU factorization of a general complex sparse matrix by a left-looking column method using OpenMP parallelism and solves the complex sparse linear system of equations
`Ax = b`

.

- Computes the LU factorization of a general complex sparse matrix by a left-looking column method using OpenMP parallelism and solves the complex sparse linear system of equations
`sparse_cholesky_smp`

- Computes the Cholesky factorization of a sparse real symmetric positive definite matrix A by an OpenMP parallelized supernodal algorithm and solves the sparse real positive definite system of linear equations
`Ax = b`

.

- Computes the Cholesky factorization of a sparse real symmetric positive definite matrix A by an OpenMP parallelized supernodal algorithm and solves the sparse real positive definite system of linear equations
`sparse_cholesky_smp`

(complex)- Computes the Cholesky factorization of a sparse Hermitian positive definite matrix A by an OpenMP parallelized super-nodal algorithm and solves the sparse Hermitian positive definite system of linear equations
`Ax = b`

.

- Computes the Cholesky factorization of a sparse Hermitian positive definite matrix A by an OpenMP parallelized super-nodal algorithm and solves the sparse Hermitian positive definite system of linear equations

- Chapter 8: Optimization
`jacobian`

- Approximates the Jacobian of m functions in n unknowns using divided differences.

- Reference Material
- Stat/Library
- Reference Material
`initialize_error_handler`

- Initialize the IMSL C Stat Library error handling system.

`set_user_fcn_return_flag`

- Indicates a condition has occurred in a user-supplied function necessitating a return to the calling function.

- Chapter 8: Time Series and Forecasting
`bayesian_seasonal_adj`

- Decomposes a time series into trend, seasonal, and an error component.

`vector_autoregression`

- Estimates a vector auto-regressive time series model with optional moving average components.

- Chapter 11: Probability Distribution Functions and Inverses
`pareto_cdf`

- Evaluates the Pareto cumulative probability distribution function.

`pareto_pdf`

- Evaluates the Pareto probability density function.

`discrete_uniform_cdf`

- Evaluates the discrete uniform cumulative distribution function (CDF).

`discrete_uniform_inverse_cdf`

- Evaluates the inverse of the discrete uniform cumulative distribution function (CDF).

`discrete_uniform_pdf`

- Evaluates the discrete uniform probability density function (PDF).

`exponential_cdf`

- Evaluates the exponential cumulative distribution function (CDF).

`exponential_inverse_cdf`

- Evaluates the inverse of the exponential cumulative distribution function (CDF).

`exponential_pdf`

- Evaluates the exponential probability density function (PDF).

`geometric_cdf`

- Evaluates the discrete geometric cumulative distribution function (CDF).

`geometric_inverse_cdf`

- Evaluates the inverse of the discrete geometric cumulative distribution function (CDF).

`geometric_pdf`

- Evaluates the discrete geometric probability density function (PDF).

`lognormal_cdf`

- Evaluates the lognormal cumulative distribution function (CDF).

`lognormal_inverse_cdf`

- Evaluates the inverse of the lognormal cumulative distribution function (CDF).

`lognormal_pdf`

- Evaluates the lognormal probability density function (PDF).

- Chapter 13: Data Mining
`apriori`

- Computes the frequent itemsets in a transaction set.

`aggr_apriori`

- Computes the frequent itemsets in a transaction set using aggregation.

`write_apriori_itemsets`

- Prints frequent itemsets.

`write_association_rules`

- Prints association rules.

`free_apriori_itemsets`

- Frees the memory allocated within a frequent itemsets structure.

`free_association_rules`

- Frees the memory allocated within an association rules structure.

`support_vector_trainer`

- Trains a Support Vector Machines (SVM) classifier.

`support_vector_classification`

- Classifies unknown patterns using a previously trained Support Vector Machines (SVM) model computed by
`support_vector_trainer`

.

- Classifies unknown patterns using a previously trained Support Vector Machines (SVM) model computed by
`svm_classifier_free`

- Frees memory allocated to an
`Imsls_f_svm_model`

/`Imsls_d_svm_model`

data structure.

- Frees memory allocated to an
`kohonenSOM_trainer`

- Trains a Kohonen network.

`kohonenSOM_forecast`

- Calculates forecasts using a trained Kohonen network.

`decision_tree`

- Generates a decision tree for a single response variable and two or more predictor variables.

`decision_tree_predict`

- Computes predicted values using a decision tree.

`decision_tree_print`

- Prints a decision tree.

`decision_tree_free`

- Frees the memory associated with a decision tree.

- Reference Material

- Math/Library
- Improvements
- Math/Library
- General
- Initialized variables used by the error handler.
- The internally used IMSL BLAS function,
`scopy`

, now uses C function memmove instead of memcpy for overlapping arrays. `sgemm`

(cuda version)- Now Copies only the needed elements of an array to the GPU.

`strsm`

(cuda version)- Now Copies only the needed elements of an array to the GPU.

- Chapter 1: Linear Systems
`lin_sol_posdef_coordinate`

- Corrected use of memory to eliminate potential program crashes.
- Documented functions which free returned structures.

`lin_sol_posdef_coordinate`

- Corrected use of memory to eliminate (complex) potential program crashes.
- Documented functions which free returned structures.

`superlu`

(complex)- Improved performance.

- Chapter 3: Interpolation and Approximation
- cub_spline_value
- Added note that
`xvec`

must be sorted when optional arguments`IMSL_GRID`

or`IMSL_GRID_USER`

are used. (documentation)

- Added note that

- cub_spline_value
- Chapter 5: Differential Equations
`feynman_kac`

- Initialized variables to zero.

- Chapter 8: Optimization
- quadratic_prog
- Improved performance. The default convergence tolerance was loosened and optional arguments were added to allow the user to set the convergence tolerance and the maximum number of iterations allowed.

`read_mps`

- Modified so that the objective constant is returned in the variable objective_constant which was added to the
`Imsl_f_mps`

data structure.

- Modified so that the objective constant is returned in the variable objective_constant which was added to the
`sparse_lin_prog`

- Now checks for feasibility of empty constraints in the pre-solver.

`sparse_quadratic_prog`

- Check for feasibility of empty constraints in the pre-solver.

- quadratic_prog
- Chapter 10: Statistics and Random Number Generation
`covariances`

- Fixed a deficiency in calculating the correlation matrix when the observations are constant.

`chi_squared_inverse_cdf`

- Changed error message which was using an uninitialized variable as part of the error message.

- Chapter 12: Utilities
`mat_mul_rect`

- Now uses SGEMV and SGEMM for the general matrix case.

`fopen`

- Added Windows example. (documentation)

`fclose`

- Added Windows example. (documentation)

`vector_norm`

(complex)- Documented function. (documentation)

- General
- Stat/Library
- General:
- Initialized variables used by the error handler.
- The internally used IMSL BLAS function,
`scopy`

, now uses C function memmove instead of memcpy for overlapping arrays. `strsm`

(cuda version)- Now copies only the needed elements of an array to the GPU.

- Chapter 1: Basic Statistics
`normal_two_sample`

- Added streaming data capability.

`sort_data`

- Eliminated memory leak.

- Chapter 2: Regression
`poly_regression`

- Corrected calculation of
`IMSLS_SSQ_PURE_ERROR`

and`IMSLS_DF_PURE_ERROR`

when neither`IMSLS_SSQ_LOF`

nor`IMSLS_SSQ_LOF_USER`

are specified.

- Corrected calculation of
`pls_regression`

- The first equation was removed. (documentation)

- regression
- Added a description on how to free space allocated by the
`Imsls_f_regression`

structure. (documentation)

- Added a description on how to free space allocated by the

- Chapter 3: Correlation and Covariance
`covariances`

- Fixed a deficiency in calculating the correlation matrix when the observations are constant.

- Chapter 4: Analysis of Variance and Designed Experiments
`anova_nested`

- Corrected error message so it no longer uses an uninitialized variable.

- Chapter 6: Nonparametric Statistics
`wilcoxon_rank_sum`

- Initialized a structure.

- Chapter 7: Tests of Goodness of Fit
`chi_squared_inverse_cdf`

- Changed error message which was using an uninitialized variable as part of the error message.

- randomness_test
- Corrected so as to not use an uninitialized variable when
`method=1`

. - Added streaming data capability.

- Corrected so as to not use an uninitialized variable when

- Chapter 8: Time Series and Forecasting
- Introduction
- Corrected documentation for the "Linearly Constrained Minimization" topic. (documentation)

`auto_arima`

- For method = 1, the search for the optimum
`AR(p,0,s,d)`

model was relaxed in case the predetermined optimum`(p*,0,s*,d*)`

combination cannot be handled by the outlier detection routine. - Added optional argument
`IMSLS_SUPPLY_WORK_ARRAYS`

to avoid memory fragmentation if many time series are handled sequentially by`auto_arima`

. - Used OpenMP to parallelize the search for the optimum model for
`METHOD = 1`

and`METHOD = 2`

.

- For method = 1, the search for the optimum
`max_arma`

- Modifications made to enable consistent output between IMSL Fortran Numerical Library and IMSL C Numerical Library.

`regression_arima`

- Corrected optional output argument
`IMSLS_VAR_NOISE`

.

- Corrected optional output argument

- Introduction
- Chapter 9: Multivariate Analysis
`cluster_k_means`

- Added the optional argument
`IMSLS_CLUSTER_HIST`

which allows the user to obtain information on the cluster membership of each observation per iteration. - Added the optional argument
`IMSLS_CLUSTER_HISTORY_USER`

whose purpose is identical to the optional argument`IMSLS_CLUSTER_HIST`

except that the storage is provided by the user's program.

- Added the optional argument

- Chapter 11: Probability Distribution Functions and Inverses
`multivariate_normal_cdf`

- Corrected array indexing and initialization problems.

`max_likelihood_estimates`

- Enhanced documentation.

- Chapter 13: Data Mining
`ga_chromosome`

- Freed temporary arrays. Both the description of the example output and the printed output itself for
`ga_chromosome`

were changed to reflect the fact that the binary phenotype comes first followed by the nominal phenotype.

- Freed temporary arrays. Both the description of the example output and the printed output itself for
`ga_clone_population`

- Freed temporary arrays.

`ga_free_individual`

- Freed temporary arrays.

`ga_grow_population`

- Freed temporary arrays.

`ga_individual`

- Freed temporary arrays. Corrected document example output. (documentation)

`ga_merge_population`

- Freed temporary arrays.

`ga_population`

- Freed temporary arrays.

`genetic_algorithm`

- Correct internal memory allocation and initialization of variables.

`naive_bayes_trainer`

- Added an error message to identify insufficient patterns in a class error test.

- Chapter 15: Utilities
`data_sets`

- Corrected documented array size when
`data_set_choice=10`

. (documentation)

- Corrected documented array size when
`mat_mul_rect`

- Now uses
`SGEMV`

and`SGEMM`

for the general matrix case.

- Now uses
`fopen`

- Added Windows example. (documentation)

`fclose`

- Added Windows example. (documentation)

- General:

- Math/Library

- Announcements
- none

- Additions
- Math/Library
- Reference Material
`initialize_error_handler`

- Initialize the IMSL C Math Library error handling system.

`set_user_fcn_return_flag`

- Indicates a condition has occurred in a user-supplied function necessitating a return to the calling function.

- Reference Material
- Stat/Library
- Reference Material
`initialize_error_handler`

- Initialize the IMSL C Stat Library error handling system.

`set_user_fcn_return_flag`

- Reference Material

- Math/Library
- Improvements
- Math/Library
- General
- Made error handling, when no heap memory is available, more robust.
- Initialized variables used by the error handler.
`sgemm`

(cuda version)- Copy only the needed elements of an array to the GPU.

`strsm`

(cuda version)- Copy only the needed elements of an array to the GPU.

- Chapter 5: Differential Equations
`feynman_kac`

- Initialize variables to zero.

- Chapter 8: Optimization
`quadratic_prog`

- Improved performance.
- The default convergence tolerance was loosened and optional arguments were added to allow the user to set the convergence tolerance and the maximum number of iterations allowed.

`read_mps`

- Modified so that the objective constant is returned in the variable
`objective_constant`

which was added to the`Imsl_f_mps`

data structure.

- Modified so that the objective constant is returned in the variable

- Chapter 12: Utilities
`fopen`

- Added Windows example. (documentation)

`fclose`

- Added Windows example. (documentation)

- General
- Stat/Library
- General:
- Made error handling, when no heap memory is available, more robust.
- Initialized variables used by the error handler.

- Chapter 2: Regression
`poly_regression`

- Corrected calculation of
`IMSLS_SSQ_PURE_ERROR`

and`IMSLS_DF_PURE_ERROR`

when neither`IMSLS_SSQ_LOF`

nor`IMSLS_SSQ_LOF_USER`

are specified.

- Corrected calculation of

- Chapter 8: Time Series and Forecasting
`auto_arima`

- For
`method = 1`

, the search for the optimum`AR(p,0,s,d)`

model was relaxed in case the predetermined optimum`(p*,0,s*,d*)`

combination cannot be handled by the outlier detection routine. - Added optional argument
`IMSLS_SUPPLY_WORK_ARRAYS`

to avoid memory fragmentation if many time series are handled sequentially by`auto_arima`

. - OpenMP-parallelized search for the optimum model for
`METHOD = 1`

and`METHOD = 2`

.

- For
`regression_arima`

- Corrected optional output argument`IMSLS_VAR_NOISE`

.

- Chapter 11: Probability Distribution Functions and Inverses
`multivariate_normal_cdf`

- Corrected array indexing and initialization problems.

- Chapter 13: Data Mining
`ga_chromosome`

- Free temporary arrays.

`ga_clone_population`

- Free temporary arrays.

`ga_free_individual`

- Free temporary arrays.

`ga_grow_population`

- Free temporary arrays.

`ga_individual`

- Free temporary arrays.

`ga_merge_population`

- Free temporary arrays.

`ga_population`

- Free temporary arrays.

- Chapter 15: Utilities
`fopen`

- Added Windows example. (documentation)

`fclose`

- Added Windows example. (documentation)

- General:

- Math/Library

- Announcements
- none

- Additions
- none

- Improvements
- Math/Library
- Chapter 10: Statistics and Random Number Generation
- covariances
- Fixed a deficiency in calculating the correlation matrix when the observations are constant.

- covariances

- Chapter 10: Statistics and Random Number Generation
- Stat/Library
- Chapter 3: Correlation and Covariance
- covariances
- Fixed a deficiency in calculating the correlation matrix when the observations are constant.

- covariances

- Chapter 3: Correlation and Covariance

- Math/Library

- Announcements
- The user should not see any difference in license management behavior. Windows users can use the
`VNI_LICENSE_FILE`

environment to identify the location of the license file. This option was already available to Linux/UNIX users. - OpenMP directives have been added to various functions to improve parallelization.
- Increased utilization of third-party vendor's high performance libraries has been implemented to improve performance.
- Support of Graphics Processing Units (NVIDIA) has been added to improve performance.
- A deprecated function is one that is no longer used by anything in the library but is being included in the product for those users who may be referencing it in their application. However future versions of C Numerical Library may not include these functions. If any of these are being called within your application, it is recommended that you change your code to call the replacement function or retain the deprecated function before replacing this library with the next version.
- deprecated
`pde_method_of_lines`

and replaced by`modified_method_of_lines`

.

- deprecated

- The user should not see any difference in license management behavior. Windows users can use the
- Additions
- Math/Library
- Chapter 1: Linear Systems
`superlu`

- Computes the LU factorization of a general sparse matrix by a column method and solves the real sparse linear system of equations
`Ax=b`

.

- Computes the LU factorization of a general sparse matrix by a column method and solves the real sparse linear system of equations
`superlu`

(complex)- Computes the LU factorization of a general complex sparse matrix by a column method and solves the complex sparse linear system of equations
`Ax=b`

.

- Computes the LU factorization of a general complex sparse matrix by a column method and solves the complex sparse linear system of equations
`nonneg_least_squares`

- Computes the non-negative least squares (NNLS) solution of an
`m × n`

real linear least squares system.

- Computes the non-negative least squares (NNLS) solution of an
`nonneg_matrix_factorization`

- Given an
`m x n`

real matrix`A >= 0`

and an integer`K <= min(m,n)`

, compute an approximate factorization of`A`

. The matrix factors are computed to minimize the Frobenius, or sum of squares, norm of the error matrix.

- Given an

- Chapter 3: Interpolation
`spline_nd_interp`

- Performs multidimensional interpolation and differentiation for up to 7 dimensions.

- Chapter 4 – Quadrature
`int_fcn_sing_1d`

- Integrates a function with a possible internal or endpoint singularity.

`int_fcn_sing_2d`

- Integrates a function of two variables with a possible internal or endpoint singularity.

`int_fcn_sing_3d`

- Integrates a function of three variables with a possible internal or endpoint singularity

- Chapter 5: Differential Equations
`differential_algebraic_eqs`

- Solves a first order differential-algebraic system of equations with optional additional constraints and user-defined linear system solver.

`ode_adams_2nd_order`

- Solves an initial-value problem for a system of ordinary differential equations of order one or two using a variable order Adams method.

`modified_method_of_lines`

- Solves a system of partial differential equations using the method of lines. Replaces deprecated function
`pde_method_of_lines`

.

- Solves a system of partial differential equations using the method of lines. Replaces deprecated function

- Chapter 7: Nonlinear Equations
`zero_univariate`

- Finds a zero of a real univariate function.

- Chapter 8: Optimization
`sparse_lin_prog`

- Solves a sparse linear programming problem by an infeasible primal-dual interior-point method.

`sparse_quadratic_prog`

- Solves a sparse convex quadratic programming problem by an infeasible primal-dual interior-point method.

- Chapter 9: Special Functions
`psi`

- Evaluates the derivative of the log gamma function.

`psi1`

- Evaluates the second derivative of the log gamma function.

- Chapter 12: Utilities
`cuda_get`

- Gets the threshold used by the specified function to determine if the NVIDIA CUDA Toolkit algorithm will be used.

`cuda_set`

- Sets the threshold used by the specified function to determine if the NVIDIA CUDA Toolkit algorithm will be used.

`cuda_free`

- Releases NVIDIA memory allocated by the IMSL C Numerical Library.

- Chapter 1: Linear Systems
- Stat/Library
- Chapter 2: Regression
`pls_regression`

- Performs partial least squares (PLS) regression for one or more response variables and one or more predictor variables.

- Chapter 4: Analysis of Variance and Designed Experiments
`false_discovery_rates`

- Calculates the False Discovery Rate (FDR) q-values corresponding to a set of p-values resulting from multiple simultaneous hypothesis tests.

- Chapter 5: Categorical and Discrete Data Analysis
`logistic_regression`

- Fits a binomial or multinomial logistic regression model using iteratively re-weighted least squares.

`logistic_reg_predict`

- Predicts a binomial or multinomial outcome given an estimated model and new values of the independent variables.

- Chapter 7: Tests of Goodness of Fit
`ad_normality_test`

- Performs an Anderson-Darling test for normality.

`cvm_normality_test`

- Performs a Cramer-von Mises test for normality.

- Chapter 8: Time Series and Forecasting
`regression_arima`

- Fits a univariate ARIMA (p, d, q) time series model with the inclusion of one or more regression variables.

`auto_parm`

- Estimates structural breaks in non-stationary univariate time series.

`hw_time_series`

- Calculates parameters and forecasts using the Holt-Winters Multiplicative or Additive forecasting method for seasonal data.

- Chapter 11: Probability Distribution Functions
`non_central_beta_cdf`

- Evaluates the non-central beta cumulative distribution function (CDF).

`non_central_beta_inverse_cdf`

- Evaluates the inverse of the non-central beta cumulative distribution function (CDF).

- non_central_beta_pdf
- Evaluates the non-central beta probability density function (PDF).

`complementary_non_central_F_cdf`

- Evaluates the complementary non-central F cumulative distribution function (CDF).

`max_likelihood_estimates`

- Calculates maximum likelihood estimates (MLE) for the parameters of one of several univariate probability distributions.

- Chapter 12: - Random Number Generation
`random_mvar_t_copula`

- Given a Cholesky factorization of a correlation matrix, generates pseudorandom numbers from a Student’s t Copula distribution.

`random_mvar_gaussian_copula`

- Given a Cholesky factorization of a correlation matrix, generates pseudorandom numbers from a Gaussian Copula distribution.

`cannonical_correlation`

- Given an input array of deviate values, generates a canonical correlation array.

- Chapter 15: Utilities
`ascii_read`

- Reads freely-formatted ASCII files.

`impute_missing`

- Locate and optionally replace dependent variable missing values with nearest neighbor estimates.

`cuda_get`

- Gets the threshold used by the specified function to determine if the NVIDIA CUDA Toolkit algorithm will be used.

`cuda_set`

- Sets the threshold used by the specified function to determine if the NVIDIA CUDA Toolkit algorithm will be used.

`cuda_free`

- Releases NVIDIA memory allocated by the IMSL C Numerical Library.

- Chapter 2: Regression

- Math/Library
- Improvements
- Math/Library
- Chapter 1: Linear Systems
`lin_sol_gen`

- Corrected/Updated documentation. (documentation)

`lin_sol_gen_coordinate`

- Corrected description of the optional argument
`IMSL_SUPPLY_SPARSE_LU_IN_COORD`

. (documentation)

- Corrected description of the optional argument
`lin_sol_posdef_coordinate`

- Allow optional arguments
`IMSL_SUPPLY_SYMBOLIC_FACTOR`

and`IMSL_SOLVE_ONLY`

to be used simultaneously. - Corrected the case where multiple calls with optional argument
`IMSL_SUPPLY_SYMBOLIC_FACTOR`

produces an unhandled exception. - Additional documentation was added to the description of the
`IMSL_RETURN_NUMERIC_FACTOR`

optional argument which describes the returned structure. (documentation)

- Allow optional arguments
`lin_sol_posdef_coordinate`

(complex)- Allow optional arguments
`IMSL_SUPPLY_SYMBOLIC_FACTOR`

and`IMSL_SOLVE_ONLY`

to be used simultaneously. - Corrected the case where multiple calls with optional argument
`IMSL_SUPPLY_SYMBOLIC_FACTOR`

produces an unhandled exception. - Additional documentation was added to the description of the
`IMSL_RETURN_NUMERIC_FACTOR`

optional argument which describes the returned structure. (documentation)

- Allow optional arguments
`lin_lsq_lin_constraints`

- Improved performance on large problems.
- Updated code so that solutions can be found for some numerically unstable problems.

- Chapter 3: Interpolation and Approximation
- Interpolation and Approximation Usage Notes
- Re-wrote the section "Structures for Splines and Piecewise Polynomials".

`user_fcn_least_squares`

- Documentation added referring the user to
`nonlin_least_squares`

for very large problems. (documentation)

- Documentation added referring the user to

- Interpolation and Approximation Usage Notes
- Chapter 4: Quadrature
`int_fcn_sing_pts`

- Allow the required function to be NULL if the optional argument
`IMSL_FCN_W_DATA`

is present.

- Allow the required function to be NULL if the optional argument
`int_fcn_alg_log`

- Allow the required function to be NULL if the optional argument
`IMSL_FCN_W_DATA`

is present.

- Allow the required function to be NULL if the optional argument
`int_fcn_inf`

- Allow the required function to be NULL if the optional argument
`IMSL_FCN_W_DATA`

is present.

- Allow the required function to be NULL if the optional argument
`int_fcn_trig`

- Allow the required function to be NULL if the optional argument
`IMSL_FCN_W_DATA`

is present.

- Allow the required function to be NULL if the optional argument
`int_fcn_fourier`

- Allow the required function to be NULL if the optional argument
`IMSL_FCN_W_DATA`

is present.

- Allow the required function to be NULL if the optional argument
`int_fcn_cauchy`

- Allow the required function to be NULL if the optional argument
`IMSL_FCN_W_DATA`

is present.

- Allow the required function to be NULL if the optional argument
`int_fcn_smooth`

- Allow the required function to be NULL if the optional argument
`IMSL_FCN_W_DATA`

is present.

- Allow the required function to be NULL if the optional argument
`int_fcn_hyper_rect`

- Allow the required function to be NULL if the optional argument
`IMSL_FCN_W_DATA`

is present.

- Allow the required function to be NULL if the optional argument
`int_fcn_qmc`

- Removed redundant instance of optional argument
`IMSL_MAX_EVALS`

. (documentation) - Allow the required function to be NULL if the optional argument
`IMSL_FCN_W_DATA`

is present.

- Removed redundant instance of optional argument

- Chapter 7: Nonlinear Equations
`zeros_function`

- Changes were made to improve the code's ability to find roots when the function is almost parallel to the x-axis near the root.

- Chapter 8: Optimization
`nonlin_least_squares`

- Added a check in the Levenberg-Marquardt step to prevent an infinite loop when step length and the upper and lower L-M parameters do not change.

`read_mps`

- Modified type "G" constraints where the upper bound was incorrectly set to positive infinity if the constraint also has an entry in the
`RANGES`

section.

- Modified type "G" constraints where the upper bound was incorrectly set to positive infinity if the constraint also has an entry in the
`linear_programming`

- Removed the redundant free statement from the document example. (documentation)

`bounded_least_squares`

- Added a check in the Levenberg-Marquardt step to prevent an infinite loop when step length and the upper and lower L-M parameters do not change.

`constrained_nlp`

- Added code to return NULL when no solution is found.
- Modified code to be consistent with documentation. The code now allows
`xl[i]= xu[i]`

.

- Chapter 9: Special Functions
`d_erfce`

- Variables used to partition the input argument space were corrected.

`bessel_Jx`

- Added an error message to indicate that the continued fractions failed to converge.

`internal_rate_annuity`

- Implemented a new zero finder to improve the ability to find solutions.

`internal_rate_of_return`

- Initialized uninitialized variables.
- Implemented a new zero finder to improve the ability to find solutions.

`internal_rate_schedule`

- Initialized uninitialized variables.
- Implemented a new zero finder to improve the ability to find solutions.

`yield_periodic`

- The call to the root finder now uses the value supplied with optional argument
`IMSL_HIGHEST`

as the upper-bound. - Allow computation of negative yields with a lower-bound of -1.0.

- The call to the root finder now uses the value supplied with optional argument

- Chapter 12: Utilities
- ERROR HANDLER
- Corrected case where an incorrect error message was printed.

`machine`

(integer)- Changed the function to return a long to allow for 64-bit integers.

`mat_mul_rect_coordinate`

- Removed unnecessary memory allocation.

`mat_mul_rect_coordinate`

(complex)- Removed unnecessary memory allocation.

`mat_add_coordinate`

- Modified to make thread-safe.

`mat_add_coordinate`

(complex)- Modified to make thread-safe.

- ERROR HANDLER

- Chapter 1: Linear Systems
- Stat/Library
- Notes have been added to the documentation to indicate that very small p_values may be reported as zero.
- Chapter 2: Regression
`regression_stepwise`

- Logic was added to ensure SSE does not become a small negative number due to rounding.

`nonlinear_regression`

- Documentation was added to describe the tolerances. (documentation)
- Added a check in the Levenberg-Marquardt step to prevent an infinite loop when step length and the upper and lower L-M parameters do not change.

- Chapter 4: Analysis of Variance and Designed Experiments
`anova_nested`

- Modified the
`n_levels`

description. (documentation) - Added examples. (documentation)

- Modified the
`rcbd_factorial`

- Removed the reference to "unequal replication" from the summary description. (documentation)

`strip_plot`

- Updated documentation for optional argument
`IMSLS_TREATMENT_MEANS`

. (documentation)

- Updated documentation for optional argument
`multiple_comparisons`

- Removed reference to Duncan's MRT method in the synopsis. (documentation)

- Chapter 5: Categorical and Discrete Data Analysis
`categorical_glm`

- Added error message
`IMSLS_RANK_DEFICIENT_TERM`

which is generated when the model is rank deficient. - Corrected spelling of optional argument
`IMSLS_X_COL_VARIABLES`

. (documentation) - Improved description of optional argument IMSLS_CRITERION. (documentation)

- Added error message

- Chapter 6: Nonparametric Statistics
`wilcoxon_rank_sum`

- Corrected cases where the p-value returned was a very small negative number.
- Modified code to use tabulated values for small data sets to avoid possible access violations with exact probability calculation.

- Chapter 7: Tests of Goodness of Fit
`lilliefors_normality_test`

- The code was modified so that ties are correctly identified.
- The Description and Example were modified. (documentation)

`kolmogorov_one`

- Replaced the fatal error message when a tie occurs with a warning message specifying the total number of ties.

`kolmogorov_two`

- The formula for the Z statistic has been corrected in the document. (documentation)

`randomness_test`

- Changed the argument type expected by optional argument IMSLS_EXPECT in the documentation. (documentation)
- Updated description of optional argument
`IMSLS_RUNS`

. (documentation)

- Chapter 8: Time Series and Forecasting
`arma`

- Allow NULL arrays as input to the IMSLS_RETURN_USER optional argument when p or q equal 0.
- Updated
`IMSLS_RETURN_USER`

documentation. (documentation) - Added optional argument IMSLS_VAR_NOISE to return the innovation variance.
- Removed condition which produced excessive
`IMSLS_LEAST_SQUARES_FAILED`

warning errors. - Corrected statistical formulas. (documentation)

`max_arma`

- The gradient computation has been changed to use central differencing.

`arma_forecast`

- Corrected statistical formulas. (documentation)

- auto_uni_ar
- The amount of internal workspace required was reduced.

`ts_outlier_identification`

- Removed unnecessary array copies. (Single Precision)

`auto_arima`

- Modified to eliminate a possible infinite loop.
- Modified so that the single precision results are consistent with the double precision results.
- Updated description of example 1. (documentation)

`lack_of_fit`

- Deprecated the
`CONVERGENCE_TOLERANCE`

optional argument. The default convergence tolerance is set to`imsls_f_machine`

(4). - Changed p-value computation to be 1.0 -
`chi_squared_cdf`

(Q, df).

- Deprecated the
`estimate_missing`

- Deprecated the CONVERGENCE_TOLERANCE optional argument. The default convergence tolerance is set to
`imsls_f_machine`

(4).

- Deprecated the CONVERGENCE_TOLERANCE optional argument. The default convergence tolerance is set to

- Chapter 11: Probability Distribution Functions and Inverses
`hypergeometric_cdf`

- Modified to return correct results when the "sample size" and "number of defects in the lot" are set to 0.

`hypergeometric_pdf`

- Modified to return correct results when the "sample size" and "number of defects in the lot" are set to 0.`chi_squared_cdf`

- A new algorithm was implemented to improve accuracy.
- Modified so that error messages are generated only if df <=0 in contrast to df < .5 which was the behavior in the last release.

`chi_squared_inverse_cdf`

- Modified so that error messages are generated only if df <=0 in contrast to df < .5 which was the behavior in the last release.

`complementary_chi_squared_cdf`

- A new algorithm was implemented to improve accuracy.
- Modified so that error messages are generated only if df <=0 in contrast to df < .5 which was the behavior in the last release.

`non_central_chi_sq`

- A new algorithm was implemented to improve accuracy.

`non_central_chi_sq_inv`

`non_central_chi_sq_pdf`

- Code modified to prevent an intermediate infinity from being generated.

`F_cdf`

- A new algorithm was implemented to improve accuracy.

`complementary_F_cdf`

- A new algorithm was implemented to improve accuracy. Modified so that error messages are generated only if df <=0 in contrast to df < .5 which was the behavior in the last release.

`non_central_F_pdf`

- Code modified to prevent an intermediate infinity from being generated.

`non_central_F_cdf`

- Modified to improve performance
- Code modified to prevent an intermediate infinity from being generated.

`t_cdf`

- A new algorithm to improve accuracy has been implemented.

`complementary_t_cdf`

- A new algorithm was implemented to improve accuracy.

`complementary_non_central_F_cdf`

- Code modified to prevent an intermediate infinity from being generated.

`multivariate_normal_cdf`

- Changed the underlying algorithm for cases N < 4 to improve performance.

- Chapter 12: Random Number Generation
`random_student_t`

- Added example to the documentation. (documentation)

- Chapter 13: Data Mining
- Neural Network Usage Notes:
- A description about Stage I and Stage II using Quasi-Newton optimization has been added. (documentation)

`naive_bayes_trainer`

- Removed the redundant term "pointers" from the discussion of C array arguments. (documentation)

`mlff_network_trainer`

- Updated the descriptions for optional arguments for Stage I to mention the Quasi-Newton method is used with Back-Propagation. (documentation)
- Modified to return more consistent results across platforms.

- Neural Network Usage Notes:
- Chapter 15: Utilities
- ERROR HANDLER
- Corrected case where an incorrect error message was printed.

`machine`

(integer)- Changed the function to return a long to allow for 64-bit integers.

`beta_incomplete`

- Improved accuracy
- Added example code. (documentation)

- ERROR HANDLER

- Math/Library