odrpack 2.0.1
This release includes two major changes that are not backward-compatible:
- The signature of the model function
fcn_twas updated and is now:
subroutine fcn_t(beta, xplusd, ifixb, ifixx, ideval, f, fjacb, fjacd, istop)
!! User-supplied subroutine for evaluating the model.
import :: wp
implicit none
real(wp), intent(in) :: beta(:)
!! Current values of parameters.
real(wp), intent(in) :: xplusd(:, :)
!! Current value of explanatory variable, i.e., `x + delta`. Shape: `(n, m)`.
integer, intent(in) :: ifixb(:)
!! Indicators for "fixing" parameters (`beta`).
integer, intent(in) :: ifixx(:, :)
!! Indicators for "fixing" explanatory variable (`x`). Shape: `(ldifx, m)`.
integer, intent(in) :: ideval
!! Indicator for selecting computation to be performed.
real(wp), intent(out) :: f(:, :)
!! Predicted function values. Shape: `(n, q)`.
real(wp), intent(out) :: fjacb(:, :, :)
!! Jacobian with respect to `beta`. Shape: `(n, np, q)`.
real(wp), intent(out) :: fjacd(:, :, :)
!! Jacobian with respect to errors `delta`. Shape: `(n, m, q)`.
integer, intent(out) :: istop
!! Stopping condition, with meaning as follows.
!! `0`: Current `beta` and `x + delta` were acceptable and values were computed
!! successfully.
!! `1`: Current `beta` and `x + delta` are not acceptable; 'odrpack' should select
!! values closer to most recently used values if possible.
!! `-1`: Current `beta` and `x + delta` are not acceptable; 'odrpack' should stop.
end subroutine fcn_t- Some argument names and location in the C-API were also slighted updated.
- All
odrarray arguments must now strictly conform to the expected shapes. Previously, it was possible to provide input arrays larger than required, which were internally sliced to the correct shape. This is no longer accepted.