Errors raised inside the R callbacks of bobyqa(), newuoa() and
steihaug() are again reported unchanged on clang/libc++ builds (CRAN's
fedora-clang check showed "c++ exception (unknown reason)"). The error
is now stored by value and re-thrown afresh instead of going through
std::exception_ptr (#3).
The OpenMP thread-safety tests use at most 2 threads and respect
OMP_THREAD_LIMIT, so CRAN no longer sees "OMP: Warning #96: Cannot
form a team" (#3).
The bobyqa()/newuoa() vs. 'minqa' comparison tests compare the
permutation-invariant chebyquad solutions as a set on platforms without
bitwise agreement, fixing a test failure on CRAN's linux-arm64 check
where the FMA-contracted 'minqa' build reached the same minimum with two
coordinates swapped.
The NEWUOA ierr = 3 test is skipped when R lacks long double support,
since its rounding path depends on sum() accumulating in long double
(CRAN's noLD check).
The package license is now GPL-2, because the BOBYQA/NEWUOA ports and their R wrappers derive from the GPL-2 package 'minqa'.
M. J. D. Powell is added as an author for the BOBYQA/NEWUOA algorithms
and original Fortran code; sources and notices for all ported code
('trust', 'basin', 'minqa', Powell's Fortran) are listed in inst/COPYRIGHTS.
New steihaug(): a Steihaug truncated conjugate-gradient trust-region
Newton minimizer ported from the Rust crate 'basin', with exact-Hessian
and matrix-free (Hessian-vector product) modes, and a thread-safe C
entry point steihaug_solve_c().
New bobyqa() and newuoa(): thread-safe C++ ports of Powell's
derivative-free BOBYQA and NEWUOA from 'minqa' 1.2.8, drop-in
replacements for minqa::bobyqa()/minqa::newuoa(), with C entry points
bobyqa_solve_c()/newuoa_solve_c(). BOBYQA's RESCUE step evaluates
the intended point rather than minqa's uninitialized one.
.RcppTrustPtr() and RcppTrust.h gain appended slots for the new C
entry points and their result-free functions.
New vignette vignette("trust-region-methods").