Skip to content

Version 0.5

Compare
Choose a tag to compare
@zaikunzhang zaikunzhang released this 18 Jun 17:30
· 1443 commits to main since this release

Compared to Version 0.4, the major changes are as follows.

  1. Use newunit in fprint.f90, addressing #22.
  2. Revise fprint.f90 to fix "buffer overflow" detected by nagfor. See 311f2b3.
  3. cobyla is modified as follows concerning cpen.
    • Implement the update of cpen in cobylb.f90 into a function getcpen, eliminating a cycle in the code. The flow of the algorithm becomes simpler.
    • Impose cpen >= cpenmin > 0, while Powell's code allows cpen = 0.
    • The initialization of cpen takes into account fcratio, while Powell's code initializes it to zero.
  4. Implement the boolean variable trfail.
    • For newuoa/bobyqa/lincoa, trfail = .not. (qred > 1.0E-5_RP * rho**2) . In previous versions, trfail is essentially .not. (qred > 0) even though it was not defined explicitly.
    • For uobyqa, trfail = .not. (qred > EPS * rho**2). In previous versions, trfail is essentially .not. (qred > 0) even though it was not defined explicitly.
    • For cobyla, trfail = .not. (prerem > min(ONE, cpen) * rho**2). In previous versions, trfail is essentially .not. (max(prerec, preref) > 0) even though it was not defined explicitly.
  5. cobyla now tries the last trust-region step before returning, if this step was too short to try before.
  6. The linting of Fortran and MEX gateways is now done on GitHub-hosted runners, except for the lining by nagfor.

N.B.: This version still retains the RESCUE and IDZ techniques in Powell's original implementation. See the release notes of Version 0.3 for more details.