Changelog for the naginterfaces Python Package¶
Changes in version 30.3.0.0¶
December 2024
This update includes new algorithmic functionality. Please refer to the News document for the underlying algorithmic library, at
Highlights¶
New algorithmic functionality.
New Algorithmic Functionality¶
See the News document for a full list of new or enhanced routines in this release.
Changes in version 30.2.0.0¶
September 2024
This update includes new algorithmic functionality. Please refer to the News document for the underlying algorithmic library, at
Highlights¶
New algorithmic functionality.
New Algorithmic Functionality¶
See the News document for a full list of new or enhanced routines in this release.
Changes in version 30.1.0.1¶
August 2024
This update provides support for NumPy 2.
Platform Support¶
NumPy 2 is supported at version 30.1.0.1.
NumPy >= 1.15 is required. The primary NumPy supported is 1.22.
Changes in version 30.1.0.0¶
July 2024
This update includes new algorithmic functionality. Please refer to the News document for the underlying algorithmic library, at
Highlights¶
New algorithmic functionality.
New Algorithmic Functionality¶
See the News document for a full list of new or enhanced routines in this release.
Platform Support¶
NumPy 2 is not supported in this release.
NumPy >= 1.15 and < 2 is required. The primary NumPy supported is 1.22.
Changes in version 30.0.0.0 / 30.0.0.1¶
April 2024
This is a bug-fix update. Please refer to the News document for the underlying algorithmic library, at
Changes in version 29.3.0.0¶
December 7, 2023
This update includes new algorithmic functionality. Please refer to the News document for the underlying algorithmic library, at
Highlights¶
New algorithmic functionality.
New Algorithmic Functionality¶
See the News document for a full list of new routines in this release.
Changes in version 29.2.0.0¶
September 21, 2023
This update includes new algorithmic functionality. Please refer to the News document for the underlying algorithmic library, at
Highlights¶
New algorithmic functionality.
New Algorithmic Functionality¶
See the News document for a full list of new routines in this release.
Changes in version 29.1.0.0¶
July 6, 2023
This is a bug-fix update. Please refer to the News document for the underlying algorithmic library, at
Changes in version 29.0.0.0¶
February 15, 2023
This update includes new algorithmic functionality, as well as bug fixes and enhancements to existing functionality. Please refer to the News document for the underlying algorithmic library, at
Highlights¶
New algorithmic functionality.
New Algorithmic Functionality¶
See the News document for a full list of new routines in this release.
Changes in version 28.7.0.0¶
December 21, 2022
This is a bug-fix update. Please refer to the News document for the underlying algorithmic library, at
Changes in version 28.6.0.0¶
October 12, 2022
This is a minor update containing bug fixes and enhancements to existing functionality. Please refer to the News document for the underlying algorithmic library, at
Changes in version 28.5.0.0¶
May 18, 2022
This update includes new algorithmic functionality. Please refer to the News document for the underlying algorithmic library, at
Highlights¶
New algorithmic functionality.
New Algorithmic Functionality¶
See the News document for a full list of new routines in this release.
Changes in version 28.4.0.0¶
April 20, 2022
This is a minor update containing bug fixes and enhancements to existing functionality. Please refer to the News document for the underlying algorithmic library, at
Changes in version 28.3.0.1¶
March 23, 2022
This is a bug-fix update.
Fixes¶
Licensing¶
Licence utilities have been updated to understand the new product-code scheme.
Changes in version 28.3.0.0¶
March 16, 2022
This update includes new algorithmic functionality. It contains some backwards incompatible changes; see also the Interface Changes document.
It also brings a new numbering scheme in which the subrelease number (3 here) denotes the month number when the release appeared.
Highlights¶
New algorithmic functionality.
New Algorithmic Functionality¶
See the News document for a full list of new routines in this release.
Removed Algorithmic Functionality¶
In this update some previously-deprecated functions have been removed. See the Replacement Calls document for more information.
Enhancements¶
API¶
The Hessian callback in
naginterfaces.library.opt.handle_solve_ipopt()
now requires in-place updating of the return vectorhx
, for efficiency.Also in this solver, length argument
nnzu
has been dropped and the (optional) multipliersu
have been added on input for use in a future release.These are backwards incompatible changes.
Additionally, the indicator and statistics arrays used during monitoring and returned by the solver have been expanded in size.
See also the Interface Changes document.
The
lsqgrd
callback innaginterfaces.library.opt.handle_solve_bxnl()
now requires in-place updating of the return vectorrdx
, for future integration with finite differences.This is a backwards incompatible change.
See also the Interface Changes document.
The value for key
'build_id'
in the return dict ofnaginterfaces.library.info.impl_details()
now has typestr
(orNone
) instead ofint
(orNone
) in order to accommodate additional information.
Platform Support¶
The primary CPython 3 supported is now Python 3.10.
The primary Intel Python supported is now 2021 (Python 3.9).
The primary NumPy supported is now 1.22.
This release adds support for Intel-based macOS 12/Monterey.
Support for macOS 10.14/Mojave has been dropped.
Changes in version 27.3.1.0¶
December 01, 2021
This is a minor update containing a functionality enhancement.
All changes are backwards compatible with code using other releases from the 27.3 line.
Enhancements¶
API¶
Communication data returned by
naginterfaces.library.correg.lmm_init()
has been made compatible withpickle
, andnaginterfaces.library.correg.lmm_init_combine()
,naginterfaces.library.correg.lmm_fit()
,naginterfaces.library.correg.optset()
andnaginterfaces.library.correg.optget()
have subsequently also been modified to accommodate this.
Changes in version 27.3.0.0¶
October 06, 2021
This is a major update.
Highlights¶
New algorithmic functionality.
New Algorithmic Functionality¶
See the News document for a full list of new routines in this release.
Enhancements¶
API¶
Argument
c
innaginterfaces.library.matop.complex_tri_matmul()
andnaginterfaces.library.matop.real_tri_matmul()
is now optional.
Examples¶
New example
naginterfaces.library.examples.opt.lsq_uncon_mod_func_comp_ex.main()
for the derivative free, Gauss–Newton/modified Newton, unconstrained sum of squares solver.New example
naginterfaces.library.examples.sparse.real_gen_basic_solver_ex.main()
for the real sparse nonsymmetric linear system solver.
Installation¶
The source distributions have been given
pip
compliant directory names. The names of the resulting.zip
archives are unchanged. Now each source archive unzips to give directorynaginterfaces-{ver}
, which no longer has the platform identifier in its name.
Fixes¶
API¶
Argument
hx
in callbacklsqhes
innaginterfaces.library.opt.handle_solve_bxnl()
is now to be modified in place.This is a backwards incompatible change.
See also the Interface Changes document.
Platform Support¶
The primary CPython 3 supported is now Python 3.9.
Support for Python 3.6 has been dropped.
The primary supported NumPy version is now 1.21.
This release adds support for Intel-based macOS 11/Big Sur.
Changes in version 27.2.0.0¶
Never publicly released.
Changes in version 27.1.0.0¶
October 16, 2020
This is a major update. It contains some backwards incompatible changes; see also the Interface Changes document.
Highlights¶
New algorithmic functionality.
Support for Python 2 has been dropped.
New Algorithmic Functionality¶
See the News document for a full list of new routines in this release.
Enhancements¶
API¶
The pseudorandom return data
x
fromnaginterfaces.library.rand.copula_normal()
,naginterfaces.library.rand.copula_students_t()
,naginterfaces.library.rand.int_binomial()
,naginterfaces.library.rand.int_general()
,naginterfaces.library.rand.int_geom()
,naginterfaces.library.rand.int_hypergeom()
,naginterfaces.library.rand.int_log()
,naginterfaces.library.rand.int_multinomial()
,naginterfaces.library.rand.int_negbin()
,naginterfaces.library.rand.int_poisson()
,naginterfaces.library.rand.matrix_2waytable()
,naginterfaces.library.rand.multivar_normal()
,naginterfaces.library.rand.multivar_students_t()
andnaginterfaces.library.rand.times_arma()
is now returned asNone
when the routines are called only to set up the communication structure for the reference vector.Function
naginterfaces.library.opt.handle_solve_pennon()
now treats failure to solve the inner subproblem as aNagAlgorithmicMajorWarning
rather than aNagValueError
.Return data from functions which return tuples now use distinct class names. For example, the previously-named
nag_return_data
class fromnaginterfaces.library.quad.dim1_fin_well()
is now namedDim1FinWellReturnData
. This helps the NAG functions be picklable if required.This is a backwards incompatible change, but is unlikely to negatively affect usage in practice.
The signatures of some callback functions in
naginterfaces.library.opt.handle_solve_bounds_foas()
,naginterfaces.library.opt.handle_solve_dfls()
andnaginterfaces.library.opt.handle_solve_ipopt()
have been modified to allow better interaction with rescue procedures in the respective algorithms.Additionally, the gradient callbacks in
naginterfaces.library.opt.handle_solve_ipopt()
now require in-place updating of the return vectors, for efficiency.These are backwards incompatible changes.
See also the Interface Changes document.
Argument
objfun
is now optional innaginterfaces.library.opt.handle_solve_dfno()
.This is a backwards incompatible change.
See also the Interface Changes document.
Output array
w
innaginterfaces.library.matop.real_gen_sparse_lu()
has been replaced by a single scalarincrease
which records the growth value of the computed factorization.This is a backwards incompatible change.
See also the Interface Changes document.
Argument
x
innaginterfaces.library.correg.coeffs_kspearman_overwrite()
andnaginterfaces.library.correg.coeffs_kspearman_miss_case_overwrite()
is now modified in place on the right-hand side of the function call.This is a backwards incompatible change.
See also the Interface Changes document.
The interfaces for
naginterfaces.library.mip.iqp_dense()
,naginterfaces.library.opt.lp_solve()
,naginterfaces.library.opt.lsq_lincon_solve()
andnaginterfaces.library.opt.qp_dense_solve()
have been improved.These are backwards incompatible changes.
See also the Interface Changes document.
The reference vector in
naginterfaces.library.rand.multivar_normal()
,naginterfaces.library.rand.multivar_students_t()
,naginterfaces.library.rand.times_garch_asym1()
,naginterfaces.library.rand.times_garch_asym2()
,naginterfaces.library.rand.times_garch_exp()
,naginterfaces.library.rand.times_garch_gjr()
,naginterfaces.library.rand.times_smooth_exp()
andnaginterfaces.library.tsa.uni_smooth_exp()
has been promoted to a communication structure.This is a backwards incompatible change.
See also the Interface Changes document.
The usability of the parameters for estimated workspace sizes in
naginterfaces.library.pde.dim1_parab_dae_fd()
,naginterfaces.library.pde.dim1_parab_dae_coll()
,naginterfaces.library.pde.dim1_parab_dae_keller()
,naginterfaces.library.pde.dim1_parab_convdiff_dae()
,naginterfaces.library.pde.dim1_parab_convdiff_remesh()
,naginterfaces.library.pde.dim1_parab_remesh_fd()
andnaginterfaces.library.pde.dim1_parab_remesh_keller()
has been improved.This is a backwards incompatible change.
See also the Interface Changes document.
Values for the maximum number of treatment means to be computed and the maximum number of terms in the analysis of variance table in
naginterfaces.library.anova.factorial()
are now computed internally.This is a backwards incompatible change.
See also the Interface Changes document.
The sizes of the returned
imean
andsemean
from this routine have also been optimized.Arguments
typ
,itera
andiopt
are now optional innaginterfaces.library.mv.multidimscal_ordinal()
.This is a backwards incompatible change.
See also the Interface Changes document.
Array
mb
innaginterfaces.library.sparseig.real_symm_band_solve()
should now be zero sized when not required (i.e., when solving the standard eigenvalue problem).This is a backwards incompatible change.
See also the Interface Changes document.
Argument
nagcal
has been removed fromnaginterfaces.library.quad.dim1_gen_vec_multi_rcomm()
.This is a backwards incompatible change.
See also the Interface Changes document.
Many of the input arguments have now been made optional in
naginterfaces.library.sparse.real_gen_precon_ilu()
andnaginterfaces.library.sparse.complex_gen_precon_ilu()
.This is a backwards incompatible change.
See also the Interface Changes document.
The sizes of the returned
a
,irow
andicol
from these routines have also been optimized, tonnz+nnzc
.Argument
maxcal
is now optional innaginterfaces.library.opt.lsq_uncon_quasi_deriv_comp()
.This is a backwards incompatible change.
See also the Interface Changes document.
The weight array,
wgt
, is now optional innaginterfaces.library.sparse.real_gen_basic_solver()
andnaginterfaces.library.sparse.complex_gen_basic_solver()
.This is a backwards incompatible change.
See also the Interface Changes document.
Many of the input arguments have now been made optional in
naginterfaces.library.sparse.real_gen_basic_setup()
andnaginterfaces.library.sparse.complex_gen_basic_setup()
.This is a backwards incompatible change.
See also the Interface Changes document.
Argument
lwork
has been dropped on input andlwreq
dropped on output fromnaginterfaces.library.sparse.complex_gen_basic_setup()
,naginterfaces.library.sparse.real_symm_basic_setup()
andnaginterfaces.library.sparse.complex_herm_basic_setup()
, because the routines now initialize their optimal communication workspace internally in a single call.This is a backwards incompatible change.
See also the Interface Changes document.
Argument
l
has been dropped fromnaginterfaces.library.tsa.multi_kalman_sqrt_invar()
because its value can be inferred fromb
on entry.This is a backwards incompatible change.
See also the Interface Changes document.
Redundant array-size arguments have been dropped from
naginterfaces.library.dot.real_prec()
andnaginterfaces.library.dot.complex_prec()
.This is a backwards incompatible change.
See also the Interface Changes document.
The return value of functions
naginterfaces.library.glopt.bnd_mcs_option_check()
,naginterfaces.library.omp.get_nested()
,naginterfaces.library.omp.in_parallel()
andnaginterfaces.library.omp.using_threaded_impl()
is now abool
.This is a backwards incompatible change.
See also the Interface Changes document.
Documentation¶
Detailed algorithmic descriptions are now included in the Notes section of a routine’s documentation.
NAG Library functions are now documented in individual pages rather than all together by module. This leads to significant performance improvements with some browsers.
Note therefore that a previous URL of the form
something/naginterfaces.library.anova.html#naginterfaces.library.anova.confidence
now becomes
something/naginterfaces.library.anova.confidence.html
Examples¶
New example
naginterfaces.library.examples.pde.dim2_gen_order2_rectangle_ex.main()
for the rectangular second-order PDE solver.
Licensing¶
Licence diagnostics now display the name of the machine on which they are being run, when licensing problems are found.
Fixes¶
API¶
The exit case in
naginterfaces.library.interp.dim5_scat_shep_eval()
andnaginterfaces.library.interp.dimn_scat_shep_eval()
for extrapolation having occurred has been downgraded to aNagAlgorithmicWarning
, so that the computed interpolants can still be accessed.The exit case in
naginterfaces.library.opt.handle_solve_ipopt()
for user-requested termination during monitoring is now correctly categorized asNagCallbackTerminateWarning
.
Platform Support¶
Support for Python 2 and 3.5 has been dropped.
The primary supported NumPy version is now 1.19.
Changes in version 27.0.2.0¶
March 16, 2020
This is a minor update containing functionality enhancements and bug fixes.
All changes are backwards compatible with code using other releases from the 27.0 line.
The primary supported versions of CPython 3 and associated NumPy have been increased.
Enhancements¶
Documentation¶
Expanded the advice on suggested values for some parameters.
Fixes¶
API¶
Routines
naginterfaces.library.opt.uncon_conjgrd_option_file()
andnaginterfaces.library.opt.uncon_conjgrd_option_string()
should have been deprecated in this release.Initializers
naginterfaces.library.sparse.real_symm_basic_setup()
andnaginterfaces.library.sparse.complex_herm_basic_setup()
were mistakenly not using the input value oflwork
to set up the communication structure.
Library Functionality¶
The underlying NAG algorithmic Engine has been corrected so that the presolver used by LP and SOCP optimization routines checks infeasibility first when modifying bounds of non-singleton variables.
Platform Support¶
The primary CPython 3 supported is now Python 3.8.
The primary supported NumPy version for Python 3 is now 1.17.
Support for Python 3.4 has been dropped.
Changes in version 27.0.1.3¶
December 17, 2019
This is a bug-fix update which also contains some documentation enhancements.
Enhancements¶
Documentation¶
Improved the usage of bold text and the ceiling function, and the display of fractions and tables.
More intra-routine cross-referencing has been added.
Introduced new References subsections.
Fixes¶
Documentation¶
Annotations for when an argument represents a base-1 array index are now present in more places in the
naginterfaces.library.sort
submodule.
Run Time¶
The previous default,
5
, forriter
innaginterfaces.library.mv.gaussian_mixture()
has been changed to0
because no rounding is generally a more reliable strategy.
Changes in version 27.0.1.2¶
October 16, 2019
This is a minor update for compatibility with Python 3.8 on Windows.
Enhancements¶
Run Time¶
The loading on Windows of the underlying DLL for the NAG algorithmic Engine has been updated. It is now compatible with changes to the
ctypes
module in Python 3.8.
Changes in version 27.0.1.1¶
October 08, 2019
This is a bug-fix update which also contains some documentation enhancements.
Enhancements¶
Documentation¶
Function descriptions have been expanded.
Fixes¶
Documentation¶
Certain argument references in text have been improved for readability.
Some mistakenly-elided parameter descriptions have been filled in.
The description of optional parameter ‘Problem Type’ has been improved in
naginterfaces.library.mip.iqp_dense()
,naginterfaces.library.opt.lp_solve()
,naginterfaces.library.opt.lsq_lincon_solve()
andnaginterfaces.library.opt.qp_dense_solve()
.
Run Time¶
Fixed a crash in
naginterfaces.library.lapackeig.zheevr()
.See also the Resolved Issues document.
Implemented the correct behaviour when discontiguous rank-1 arrays are passed.
See also the Resolved Issues document.
MKL crashes are now avoided for vacuous problems in
naginterfaces.library.lapacklin.dsytrf()
,naginterfaces.library.lapacklin.zhetrf()
,naginterfaces.library.lapacklin.zsytrf()
,naginterfaces.library.lapackeig.zgelqf()
,naginterfaces.library.lapackeig.dsytrd()
andnaginterfaces.library.lapackeig.zhetrd()
.See also the Resolved Issues document.
Corrected the expected length for arrays in some routines in the
naginterfaces.library.lapackeig
submodule to not go negative.See also the Resolved Issues document.
Resolved some potential unexpected exits from
naginterfaces.library.quad.dim1_gen_vec_multi_rcomm()
.See also the Resolved Issues document.
Improved an error message associated with
NagShapeError
.
Changes in version 27.0.1.0¶
September 04, 2019
This is a minor update containing functionality enhancements and bug fixes.
All changes are backwards compatible with code using other releases from the 27.0 line.
Enhancements¶
API¶
Integer scalars may now be supplied for real-valued input, and will be promoted internally. The same is true for integer arrays as long as the associated array in the NAG wrapper is not to be modified in place.
For example, instead of
specfun.bessel_i0_real_vector([0., 1., 3., 6.])
one is now permitted to use
specfun.bessel_i0_real_vector([0, 1, 3, 6])
Documentation¶
The documentation for the
naginterfaces.library.roots
submodule now has an expanded introduction including a tutorial section.
Examples¶
New example
naginterfaces.library.examples.rand.copula_students_t_ex.main()
for the Student’s t copula routine.
Fixes¶
Run Time¶
Fixed an error that made
naginterfaces.library.fit.dim1_spline_deriv_vector()
unusable for short-circuited sorted vectorization.See also the Resolved Issues document.
An incorrect expression for the size of
sol
inmonitr
has been fixed, innaginterfaces.library.pde.dim2_gen_order2_rectangle()
.See also the Resolved Issues document.
The routines
naginterfaces.library.lapackeig.dgejsv()
andnaginterfaces.library.lapackeig.zgejsv()
now more accurately returnNone
foriworkb
in the vacuous case when m or n is zero.Fixed
naginterfaces.library.stat.summary_onevar_combine()
to work with row-ordered input.See also the Resolved Issues document.
Corrected the use of
ceil
for Python 2 innaginterfaces.library.rand.int_binomial()
,naginterfaces.library.rand.int_hypergeom()
andnaginterfaces.library.rand.int_multinomial()
, and the internal expression forlr
innaginterfaces.library.rand.int_negbin()
.See also the Resolved Issues document.
Changes in version 27.0.0.1¶
July 23, 2019
This is a bug-fix update.
Fixes¶
Documentation¶
Argument annotations for optional scalars now display more consistently when
None
is permitted.The documented defaults are now more accurate for:
maxcal
innaginterfaces.library.opt.lsq_uncon_mod_deriv_comp()
,naginterfaces.library.opt.lsq_uncon_mod_deriv2_comp()
andnaginterfaces.library.opt.lsq_uncon_mod_func_comp()
;lenrwk
,leniwk
andlenlwk
innaginterfaces.library.pde.dim2_gen_order2_rectangle()
,naginterfaces.library.pde.dim2_gen_order2_rectilinear()
; and
Run Time¶
Fixed
naginterfaces.library.mip.sqp()
to work correctly in the absence of linear constraints.See also the Resolved Issues document.
Corrected
naginterfaces.library.stat.prob_multi_normal()
to work for lower-tail probabilities.See also the Resolved Issues document.
Fixed the ‘continuation‘ operation (
mode = 3
) innaginterfaces.library.rand.times_mv_varma()
.See also the Resolved Issues document.
The LMM routine
naginterfaces.library.correg.lmm_fit()
now correctly returnsNone
for arrayscxx
,cxz
andczz
when requested.See also the Resolved Issues document.
Corrected the format of communication data in
naginterfaces.library.correg.lmm_init()
,naginterfaces.library.correg.lmm_init_combine()
andnaginterfaces.library.correg.lmm_fit()
so that it can be queried bynaginterfaces.library.correg.optget()
.See also the Resolved Issues document.
The returned lengths of
a
,irow
andicol
innaginterfaces.library.sparse.complex_gen_sort()
,naginterfaces.library.sparse.complex_herm_sort()
,naginterfaces.library.sparse.real_gen_sort()
andnaginterfaces.library.sparse.real_symm_sort()
have been corrected (shortened) based on the value of the number of unique row and column indices computed by the routine.Some of the error messages raised on invalid input by
naginterfaces.library.matop.real_nmf()
andnaginterfaces.library.sparse.real_rect_sort()
have been made more informative.Fixed a reference to an unbound local variable in spline-fitting function
naginterfaces.library.fit.dim1_spline_deriv_vector()
under first-phase sorted vectorization.See also the Resolved Issues document.
The licence-check utility no longer returns contradictory output when run in verbose mode.
Additionally, it now behaves correctly with Python 3 if the path to a licence file contains non-ASCII characters.
See also the Resolved Issues document.
Fixed some internal utilities that were accessing complex-valued communication data incorrectly.
See also the Resolved Issues document.
Restored missing handling of a workspace-length error exit in
naginterfaces.library.sparse.complex_gen_basic_solver()
.See also the Resolved Issues document.
Changes in version 27.0.0.0¶
July 10, 2019
This is a major update. It contains some backwards incompatible changes; see also the Interface Changes document.
Highlights¶
New algorithmic functionality.
The underlying NAG library on Linux now uses 64-bit integers.
Removed Algorithmic Functionality¶
In this major update some previously-deprecated functions have been removed. See the Replacement Calls document for more information.
Enhancements¶
API¶
Scalars are now permitted to be passed for rank-1 array entities on input to NAG routines and on exit from user-supplied callback functions, being promoted internally to length-1 vectors.
A new key,
'build_id'
, has been added to the return dict ofnaginterfaces.library.info.impl_details()
. Its value may be of use when corresponding with NAG.On Linux the underlying compiled NAG library now uses 64-bit integers.
Existing calls from Python on Linux, being agnostic of the integer width, will continue to operate in the same way but naturally there is now scope for solving bigger problems or dealing with larger data sets.
The base classes for the named convenience classes
naginterfaces.base.utils.EngineIntCType
andnaginterfaces.base.utils.EngineIntNumPyType
are consequently now different from those in the prior 32-bit integer version of the package.The Linux package has been made more robust in the presence of incompatible Intel MKL run time libraries, in that it will now always bind to its compatible bundled version of MKL within.
In the ridge-regression function
naginterfaces.library.correg.ridge()
, argumentpec
may now beNone
on entry to signify that you do not wish to supply prediction errors. In such a case the returnedpe
will now beNone
as well, instead of a zero-sized array.Optional algorithmic parameters specifically for derivative-free optimization now use a unified
'DFO [...]'
naming scheme. Innaginterfaces.library.opt.handle_solve_dfls()
, for example, the preferred form for specifying the radius of the initial trust region is via'DFO Starting Trust Region'
rather than'DFLS Starting Trust Region'
as at previous releases. The former is now the only documented version, although the latter continues to be accepted by the routine.Some functions have had exit cases recategorized to enable useful return data to be accessed in these cases. The affected routines are
naginterfaces.library.anova.factorial()
,naginterfaces.library.correg.mixeff_hier_reml()
,naginterfaces.library.correg.mixeff_hier_ml()
,naginterfaces.library.glopt.nlp_pso()
,naginterfaces.library.matop.real_gen_matrix_pow()
,naginterfaces.library.matop.real_gen_matrix_cond_pow()
,naginterfaces.library.matop.real_gen_matrix_frcht_pow()
,naginterfaces.library.matop.real_gen_matrix_cond_exp()
,naginterfaces.library.matop.real_gen_matrix_frcht_exp()
,naginterfaces.library.matop.real_gen_matrix_frcht_log()
,naginterfaces.library.matop.complex_gen_matrix_cond_exp()
,naginterfaces.library.matop.complex_gen_matrix_frcht_exp()
,naginterfaces.library.mip.sqp()
,naginterfaces.library.ode.bvp_coll_nlin_interp()
,naginterfaces.library.opt.bnd_lin_lsq()
,naginterfaces.library.opt.handle_solve_dfls()
,naginterfaces.library.opt.lsq_uncon_quasi_deriv_comp()
,naginterfaces.library.opt.nlp1_rcomm()
,naginterfaces.library.opt.nlp1_solve()
,naginterfaces.library.opt.nlp2_solve()
andnaginterfaces.library.stat.prob_students_t_noncentral()
Further details are omitted here. Please contact NAG if you would like more information.
In
naginterfaces.library.opt.handle_solve_lp_ipm()
, unused input argumentsx
andu
have been made optional.Routine
naginterfaces.library.linsys.real_gen_sparse_lsqsol()
has argumentsdamp
,atol
,btol
,conlim
,itnlim
andmsglvl
now as optional.Many routines have been made more convenient by now returning
None
for arguments that are ‘inactive’ in certain situations. For example, the global optimizernaginterfaces.library.glopt.nlp_multistart_sqp()
now returnsNone
forc
andcjac
when there are no nonlinear constraints (ncnln = 0
).Sizes of returned arrays have been optimized in a number of cases.
Type-checking has been optimized to avoid work when entities are known to only be conditionally required on entry.
The News document for the underlying algorithmic library, at
https://support.nag.com/numeric/nl/nagdoc_27/nlhtml/genint/news.html
gives details of any internal changes to the existing algorithmics which might affect users.
In the linear algebra support routines
naginterfaces.library.blas.dgbmv()
,naginterfaces.library.blas.dgemv()
,naginterfaces.library.blas.dsbmv()
,naginterfaces.library.blas.dspmv()
,naginterfaces.library.blas.dsymv()
,naginterfaces.library.blas.zgbmv()
,naginterfaces.library.blas.zgemv()
,naginterfaces.library.blas.zhbmv()
,naginterfaces.library.blas.zhemv()
andnaginterfaces.library.blas.zhpmv()
argumenty
has been made optional.Likewise, in
naginterfaces.library.blas.dgemm()
,naginterfaces.library.blas.dsymm()
,naginterfaces.library.blas.zgemm()
,naginterfaces.library.blas.zhemm()
,naginterfaces.library.blas.zsymm()
andnaginterfaces.library.sparse.direct_real_gen_matmul()
argumentc
has been made optional.Identification of argument constraints has been improved so that now many more cases of illegal input are identified in the Python wrappers, predominantly in the
naginterfaces.library.blas
submodule.Arguments
m
andk
have been dropped fromnaginterfaces.library.blas.dgemm()
because their values can be inferred from other arguments on entry.This is a backwards incompatible change.
See also the Interface Changes document.
Argument
m
has been dropped fromnaginterfaces.library.blas.dlange()
because its value can be inferred froma
on entry.This is a backwards incompatible change.
See also the Interface Changes document.
Argument
check
has been made optional innaginterfaces.library.sparse.complex_gen_matvec()
,naginterfaces.library.sparse.complex_gen_precon_ilu_solve()
,naginterfaces.library.sparse.complex_gen_precon_jacobi()
,naginterfaces.library.sparse.complex_gen_precon_ssor_solve()
,naginterfaces.library.sparse.complex_herm_matvec()
,naginterfaces.library.sparse.complex_herm_precon_ilu_solve()
,naginterfaces.library.sparse.complex_herm_precon_ssor_solve()
,naginterfaces.library.sparse.real_gen_matvec()
,naginterfaces.library.sparse.real_gen_precon_ilu_solve()
,naginterfaces.library.sparse.real_gen_precon_jacobi()
,naginterfaces.library.sparse.real_gen_precon_ssor_solve()
,naginterfaces.library.sparse.real_symm_matvec()
,naginterfaces.library.sparse.real_symm_precon_ichol_solve()
andnaginterfaces.library.sparse.real_symm_precon_ssor_solve()
.This is a backwards incompatible change.
See also the Interface Changes document.
Communication argument
rcomm
innaginterfaces.library.stat.summary_onevar()
is now modified in place on the right-hand side of the function call.This is a backwards incompatible change.
See also the Interface Changes document.
The change-point functions
naginterfaces.library.tsa.cp_pelt()
andnaginterfaces.library.tsa.cp_binary()
now returnsparam
more conveniently as a rank-2 array in appropriate circumstances.This is a backwards incompatible change.
See also the Interface Changes document.
Arguments have been coalesced into complex data in the following routines that compute zeros of polynomials:
naginterfaces.library.zeros.quadratic_complex()
,naginterfaces.library.zeros.quadratic_real()
,naginterfaces.library.zeros.quartic_real()
andnaginterfaces.library.zeros.quartic_complex()
.This is a backwards incompatible change.
See also the Interface Changes document.
For convenience, argument
mmax
has been added to the signature of callbackguess
innaginterfaces.library.ode.bvp_coll_nlin_solve()
.This is a backwards incompatible change.
See also the Interface Changes document.
The signatures have been simplified for the family of matrix-function routines used to evaluate an arbitrary function of a matrix.
This is a backwards incompatible change.
See also the Interface Changes document.
A number of arguments across many Chapters have been made optional following improved identification of such cases.
This is a backwards incompatible change.
See also the Interface Changes document.
Some arguments in the root finders
naginterfaces.library.roots.contfn_brent()
,naginterfaces.library.roots.contfn_brent_interval()
andnaginterfaces.library.roots.contfn_cntin()
have been made optional.This is a backwards incompatible change.
See also the Interface Changes document.
In the
monitr
callback of the ODE integratorsnaginterfaces.library.ode.ivp_stiff_exp_bandjac()
,naginterfaces.library.ode.ivp_stiff_exp_fulljac()
,naginterfaces.library.ode.ivp_stiff_exp_sparjac()
,naginterfaces.library.ode.ivp_stiff_imp_bandjac()
,naginterfaces.library.ode.ivp_stiff_imp_fulljac()
andnaginterfaces.library.ode.ivp_stiff_imp_sparjac()
and in the top interface for interpolatorsnaginterfaces.library.ode.ivp_stiff_c1_interp()
andnaginterfaces.library.ode.ivp_stiff_nat_interp()
the communication arrayysav
has been subsumed into a communication structurecomm
.This is a backwards incompatible change.
See also the Interface Changes document.
The signature for callback
f
innaginterfaces.library.sum.invlaplace_crump()
has been simplified.This is a backwards incompatible change.
See also the Interface Changes document.
‘Diagnostic channel’ arguments (usually called
nadv
ornout
) have been removed because equivalent functionality can always be accessed directly from the associatedio_manager
argument.This is a backwards incompatible change.
See also the Interface Changes document.
The communication structure
comm
has been removed from the callbacks innaginterfaces.library.mip.iqp_dense()
,naginterfaces.library.opt.qp_dense_solve()
,naginterfaces.library.ode.bvp_shoot_genpar_algeq()
,naginterfaces.library.pde.dim1_parab_convdiff()
,naginterfaces.library.pde.dim1_parab_convdiff_dae()
,naginterfaces.library.pde.dim1_parab_convdiff_remesh()
andnaginterfaces.library.pde.dim2_gen_order2_rectilinear()
because it is redundant.This is a backwards incompatible change.
See also the Interface Changes document.
Array
cjac
innaginterfaces.library.opt.nlp1_solve()
has been made optional.This is a backwards incompatible change.
See also the Interface Changes document.
Additionally the solver now returns
None
forc
andcjac
when there are no nonlinear constraints (ncnln = 0
).Argument
ncnln
has been dropped fromnaginterfaces.library.opt.lsq_gencon_deriv()
as its value can be inferred from other arguments on entry.This is a backwards incompatible change.
See also the Interface Changes document.
Argument
lck
has been dropped fromnaginterfaces.library.interp.dim1_spline()
as its value can be inferred from other arguments on entry.This is a backwards incompatible change.
See also the Interface Changes document.
Correct sizing of workspaces in the DAE solvers
naginterfaces.library.pde.dim1_parab_dae_fd()
,naginterfaces.library.pde.dim1_parab_dae_coll()
,naginterfaces.library.pde.dim1_parab_dae_keller()
,naginterfaces.library.pde.dim1_parab_convdiff_dae()
,naginterfaces.library.pde.dim1_parab_convdiff_remesh()
,naginterfaces.library.pde.dim1_parab_remesh_fd()
andnaginterfaces.library.pde.dim1_parab_remesh_keller()
has been improved when sparse matrix methods are requested.Lower bounds for the adequate sizes are now returned, and can be passed back to the solver.
This is a backwards incompatible change.
See also the Interface Changes document.
The wavelet-transform functions
naginterfaces.library.wav.dim1_sngl_fwd()
,naginterfaces.library.wav.dim1_multi_fwd()
,naginterfaces.library.wav.dim1_mxolap_fwd()
,naginterfaces.library.wav.dim1_mxolap_multi_fwd()
,naginterfaces.library.wav.dim2_multi_fwd()
,naginterfaces.library.wav.dim3_sngl_fwd()
,naginterfaces.library.wav.dim3_multi_fwd()
now internally infer the value previously required for their argumentlenc
. Consequently, this argument has been removed.This is a backwards incompatible change.
See also the Interface Changes document.
The function for sampling from an integer vector,
naginterfaces.library.rand.sample()
, has been updated to allow a new default mode of operation in which a sample population of will be used without you needing to explicitly supply this vector.This is a backwards incompatible change.
See also the Interface Changes document.
Some return values have been given more-meaningful names.
This is a backwards incompatible change.
See also the Interface Changes document.
Some user-supplied functions have been uniformly renamed to
f
.This is a backwards incompatible change.
See also the Interface Changes document.
The stiff ODE interpolator
naginterfaces.library.ode.ivp_stiff_interp()
has had its argumentneq
removed as its value can be inferred from other arguments on entry.This is a backwards incompatible change.
See also the Interface Changes document.
Interpolation functions
naginterfaces.library.interp.dim1_aitken()
andnaginterfaces.library.interp.dim1_everett()
have had their argumentsn
dropped.This is a backwards incompatible change.
See also the Interface Changes document.
Argument
hp
in GARCH routinesnaginterfaces.library.tsa.uni_garch_asym1_estim()
,naginterfaces.library.tsa.uni_garch_asym2_estim()
,naginterfaces.library.tsa.uni_garch_gjr_estim()
andnaginterfaces.library.tsa.uni_garch_exp_estim()
has been renamed topht
.This is a backwards incompatible change.
See also the Interface Changes document.
In the ARIMA function
naginterfaces.library.tsa.uni_arima_prelim()
the value for the previously-required argumentnpar
can be inferred from the contents ofmr
, so it has subsequently been removed from the interface.This is a backwards incompatible change.
See also the Interface Changes document.
Monitoring callbacks in
naginterfaces.library.opt.handle_solve_dfls()
andnaginterfaces.library.opt.handle_solve_ipopt()
have been renamed tomonit
.This is a backwards incompatible change.
See also the Interface Changes document.
Function
naginterfaces.library.blgm.lm_submodel()
has gained a new argumentwhat
for controlling the labels that are to be produced.It also has some error exits renumbered.
These are backwards incompatible changes.
See also the Interface Changes document.
Argument
work
in routinenaginterfaces.library.lapackeig.dgesvd()
has been renamed toworkb
.This is a backwards incompatible change.
See also the Interface Changes document.
Documentation¶
The Quick Start has been simplified and now calls
naginterfaces.library.opt.bounds_quasi_func_easy()
.The descriptions of communication objects (
comm
) have been expanded in many cases.Styling improvements have enhanced the layout and usage of space across all pages.
Sections listing exceptions have been streamlined by collapsing duplicated entries together.
Run Time¶
Introduced a new function
naginterfaces.quick_check()
for basic verification of the correct operation of the package.
Fixes¶
Documentation¶
The display of lists of items has been improved.
Added missing documentation for
iafun
andjavar
innaginterfaces.library.opt.nlp2_sparse_solve()
and forsorder
innaginterfaces.library.rand.multivar_normal()
In
naginterfaces.library.glopt.nlp_multistart_sqp_lsq()
the incorrectly documented return tuple of callbackconfun
has been fixed. Missing annotations forc
andcjac
beingNone
on output when there are no nonlinear constraints have been added.Corrected the HTML documentation for
naginterfaces.library.mip.best_subset_given_size_revcomm()
, which incorrectly gavelicomm
andlrcomm
as input arguments, and fornaginterfaces.library.sparse.real_gen_basic_setup()
, which incorrectly claimed that there was a return argumentlwreq
.
Run Time¶
Typing problems have been corrected for entities involved in error exits predominantly in routines for linear algebra.
The mistakenly-omitted argument
neqf
is now present in the interface fornaginterfaces.library.ode.ivp_adams_setup()
.Lagrange multipliers computed in
naginterfaces.library.opt.handle_solve_lp_ipm()
are now returned in all circumstances.See also the Resolved Issues document.
The default
start
innaginterfaces.library.glopt.nlp_multistart_sqp()
andnaginterfaces.library.glopt.nlp_multistart_sqp_lsq()
, and the defaultqphess
innaginterfaces.library.mip.iqp_dense()
andnaginterfaces.library.opt.qp_dense_solve()
, now work correctly for row-major storage.See also the Resolved Issues document.
Monitoring output has been improved in a number of optimization functions.
See also the Resolved Issues document.
A mistakenly added
spiked_sorder
argument has been removed fromnaginterfaces.library.opt.lsq_gencon_deriv()
andnaginterfaces.library.glopt.nlp_multistart_sqp_lsq()
because these routines have no multidimensional output arrays in their callbacks.Spurious failures in type checking in some situations are now avoided.
See also the Resolved Issues document.
Platform Support¶
The primary supported Intel Python is now 2019 (Python 3.6).
The primary supported NumPy version is now 1.16. The minimum supported version is 1.15.
This release has dropped support for macOS 10.12/Sierra.
Changes in version 26.2.2.4¶
February 13, 2019
This is a bug-fix update.
Fixes¶
Documentation¶
The documented expected shape for
cjac
innaginterfaces.library.opt.nlp1_solve()
has been corrected to(ncnln, :)
.
Run Time¶
Usability problems have been fixed for
naginterfaces.library.ode.ivp_stiff_interp()
.See also the Resolved Issues document.
Further improvements to the handling of ‘spiked’ arrays.
See also the Resolved Issues document.
Changes in version 26.2.2.3¶
December 19, 2018
This is a bug-fix update.
Fixes¶
Documentation¶
Tables are now rendered in the HTML documentation.
Run Time¶
Diagnostic messages on Windows when a licence could not be validated have been made more helpful.
See also the Resolved Issues document.
Further improvements to the handling of ‘spiked’ arrays, this time in callback functions.
See also the Resolved Issues document.
Improved checking of storage-order compatibility in callback functions.
Changes in version 26.2.2.2¶
December 11, 2018
This is a bug-fix update.
Fixes¶
Run Time¶
Usability has been improved for ‘spiked’ arrays in certain circumstances.
See also the Resolved Issues document.
Corrected the internal set up of communication arrays in
naginterfaces.library.ode.bvp_coll_nlin_setup()
.See also the Resolved Issues document.
Changes in version 26.2.2.1¶
December 04, 2018
This is a bug-fix update.
Fixes¶
Run Time¶
The Windows package now operates more effectively in the presence of incompatible compiler run time libraries.
Changes in version 26.2.2.0¶
November 26, 2018
This is a minor update containing functionality enhancements and bug fixes.
All changes are backwards compatible with code using other releases from the 26.2 line.
Enhancements¶
Documentation¶
Warnings raised by functions are now documented in a distinct
Warns
section, separate from any existingRaises
section.A new documentation section
Other Parameters
has been added to routines that use optional algorithmic parameters.
Examples¶
New example
naginterfaces.library.examples.opt.handle_solve_lp_ipm_ex.main()
for the interior-point based large-scale linear programming solver.
Fixes¶
Documentation¶
Array slices in the documentation now follow Python’s half-open semantics.
Run Time¶
The stack context for an algorithmic warning raised by a withdrawn routine has been made more accurate.
Rank checking has been fixed for rank-1 NumPy arrays.
See also the Resolved Issues document.
Platform Support¶
The package now officially supports macOS 10.14/Mojave.
Changes in version 26.2.1.2¶
October 26, 2018
This is a bug-fix update.
Fixes¶
Run Time¶
The Linux package now operates more effectively in the presence of incompatible compiler run time libraries.
Suggested values computed for
mterm
andmaxt
in the factorial ANOVA routinenaginterfaces.library.anova.factorial()
are now accessible when the function returns.See also the Resolved Issues document.
The best-subset function
naginterfaces.library.mip.best_subset_given_size_revcomm()
has been modified to perform better on a pathological problem.See also the Resolved Issues document.
Output from the underlying NAG Engine has been made compatible with the I/O capturing in the
pytest
module in more cases.See also the Resolved Issues document.
The default monitoring facility in
naginterfaces.library.ode.bvp_shoot_genpar_algeq()
now works correctly.See also the Resolved Issues document.
The operation of
naginterfaces.library.mv.cluster_hier_dendrogram()
has been corrected.See also the Resolved Issues document.
Labels returned from
naginterfaces.library.blgm.lm_submodel()
have been corrected.See also the Resolved Issues document.
Changes in version 26.2.1.1¶
October 08, 2018
This is a bug-fix update.
Fixes¶
Documentation¶
The structure of the functionality index for the
naginterfaces.library.correg
submodule has been refined.
Run Time¶
The traceback has been improved for when a licence key could not be validated.
Fixed the base code for
naginterfaces.library.opt.handle_solve_ipopt()
to operate correctly in the cases when a user-supplied callback is expected butNone
was provided instead.See also the Resolved Issues document.
Fixed interface usability problems with
naginterfaces.library.opt.handle_set_get_real()
.See also the Resolved Issues document.
Changes in version 26.2.1.0¶
September 17, 2018
This is a minor update containing functionality enhancements and bug fixes.
All changes are backwards compatible with code using other releases from the 26.2 line.
The primary supported CPython 3 and NumPy versions have been increased.
Enhancements¶
Documentation¶
Improved description of
u
on output fromnaginterfaces.library.pde.dim1_parab_convdiff_dae()
,naginterfaces.library.pde.dim1_parab_convdiff_remesh()
,naginterfaces.library.pde.dim1_parab_dae_fd()
,naginterfaces.library.pde.dim1_parab_dae_keller()
,naginterfaces.library.pde.dim1_parab_remesh_fd()
andnaginterfaces.library.pde.dim1_parab_remesh_keller()
.Added instructions to the front matter for how eligible customers can install the non-licence-managed version of the package.
Examples¶
New example
naginterfaces.library.examples.ode.ivp_bdf_zero_simple_ex.main()
for the stiff system of first-order ordinary differential equations backward differentiation formulae initial value problem solver.Uses of the deprecated
numpy.matrix
subclass have been converted to instances ofnumpy.ndarray
.
Run Time¶
Diagnostic output has been improved when the underlying NAG library fails to load (which is usually because incompatible runtimes have been loaded ahead of it).
Diagnostic output has been improved when arrays having differing storage orders are supplied on input or are returned from a user-supplied callback.
Added run-time diagnostic for the use of unsupported 32-bit Python (on Windows).
Platform Support¶
The primary CPython 3 supported is now Python 3.7.
The primary NumPy supported is now 1.15, for both PyPI and Intel Python.
Changes in version 26.2.0.2¶
August 21, 2018
This is a bug-fix update.
Fixes¶
Run Time¶
Missing constraint checks (and documentation thereof) added to a number of LAPACK routines.
See also the Resolved Issues document.
Made a Python 3 ‘true division’ correctly be an integer division in
naginterfaces.library.ode.dae_dassl_setup()
.See also the Resolved Issues document.
Changes in version 26.2.0.1¶
August 07, 2018
This is a bug-fix update.
Fixes¶
Documentation¶
Cross referencing made more accurate between functions and examples in which they are called.
Run Time¶
Corrected the shape expression used for some arrays returned by
naginterfaces.library.fit.dim2_spline_panel()
.See also the Resolved Issues document.
The optimizer
naginterfaces.library.opt.lsq_gencon_deriv()
now operates correctly when column-ordered input arrays are supplied.See also the Resolved Issues document.
A suboptimal shape has been improved for the input
cjac
innaginterfaces.library.opt.lsq_gencon_deriv()
.When there are no nonlinear constraints (
ncnln = 0
) an input non-None
cjac
must now have shape(1, 1)
, which is the minimum required by the underlying NAG Library Engine for this array in this context.Note that when there are no nonlinear constraints, supplying
cjac
asNone
on entry remains the most convenient option.Removed a usability hurdle from
naginterfaces.library.stat.quantiles_stream_arbitrary()
andnaginterfaces.library.stat.quantiles_stream_fixed()
relating to communication arrays.See also the Resolved Issues document.
Changes in version 26.2.0.0¶
July 25, 2018
The first release of the package.