ralna / RALFit

A non-linear least squares solver
Other
25 stars 6 forks source link

Add fallbacks #51

Closed tyronerees closed 5 years ago

tyronerees commented 5 years ago

Fixes #38

The proposed solution tries the method picked in options, and then cycles through until one of the method calculates a step. The method is reset to that chosen by the user at each iteration.

The changes apply the same method to the trust region part of the code, too, as it could also be the case that one of the four methods there fails to calculate a step.

codecov[bot] commented 5 years ago

Codecov Report

Merging #51 into master will decrease coverage by 0.02%. The diff coverage is 91.57%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master      #51      +/-   ##
==========================================
- Coverage   88.55%   88.53%   -0.03%     
==========================================
  Files           4        4              
  Lines        2631     2668      +37     
==========================================
+ Hits         2330     2362      +32     
- Misses        301      306       +5
Impacted Files Coverage Δ
libRALFit/src/ral_nlls_ciface.f90 81.53% <100%> (+0.19%) :arrow_up:
libRALFit/src/ral_nlls_workspaces.f90 79.2% <100%> (ø) :arrow_up:
libRALFit/src/ral_nlls_internal.f90 91.02% <90.36%> (-0.12%) :arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 9268bb7...df4091f. Read the comment docs.

tyronerees commented 5 years ago

I still need to get the tests passing (options that would have failed now pass in the c test deck), and I also want to see if I can increase the coverage, as this made a significant drop.

tyronerees commented 5 years ago

Fixed the deallocation logic by making workspaces intent(inout) -- if the review is ok, this should be ready to merge to master now.

tyronerees commented 5 years ago

Commit a0fddef also fixes #50 --> I couldn't reproduce it from the master branch (although I believe it's an issue there too), so adding it to this pull request.

The issue was that the logic tests inform%iter to see if the banner should be printed, but this is only updated at the end of each successful iteration: w%iter holds the true iteration count.