"Long-call" wrapper for the odr
routine including all optional arguments.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
procedure(fcn_tc) | :: | fcn |
User-supplied subroutine for evaluating the model. |
|||
integer(kind=c_int), | intent(in) | :: | n |
Number of observations. |
||
integer(kind=c_int), | intent(in) | :: | m |
Number of columns of data in the independent variable. |
||
integer(kind=c_int), | intent(in) | :: | np |
Number of function parameters. |
||
integer(kind=c_int), | intent(in) | :: | nq |
Number of responses per observation. |
||
real(kind=c_double), | intent(inout) | :: | beta(np) |
Function parameters. |
||
real(kind=c_double), | intent(in) | :: | y(n,nq) |
Dependent variable. Unused when the model is implicit. |
||
real(kind=c_double), | intent(in) | :: | x(n,m) |
Explanatory variable. |
||
real(kind=c_double), | intent(in) | :: | we(ldwe,ld2we,nq) |
|
||
integer(kind=c_int), | intent(in) | :: | ldwe |
Leading dimension of array |
||
integer(kind=c_int), | intent(in) | :: | ld2we |
Second dimension of array |
||
real(kind=c_double), | intent(in) | :: | wd(ldwd,ld2wd,m) |
|
||
integer(kind=c_int), | intent(in) | :: | ldwd |
Leading dimension of array |
||
integer(kind=c_int), | intent(in) | :: | ld2wd |
Second dimension of array |
||
integer(kind=c_int), | intent(in) | :: | ifixb(np) |
Values designating whether the elements of |
||
integer(kind=c_int), | intent(in) | :: | ifixx(ldifx,m) |
Values designating whether the elements of |
||
integer(kind=c_int), | intent(in) | :: | ldifx |
Leading dimension of array |
||
real(kind=c_double), | intent(in) | :: | stpb(np) |
Relative step for computing finite difference derivatives with respect to |
||
real(kind=c_double), | intent(in) | :: | stpd(ldstpd,m) |
Relative step for computing finite difference derivatives with respect to |
||
integer(kind=c_int), | intent(in) | :: | ldstpd |
Leading dimension of array |
||
real(kind=c_double), | intent(in) | :: | sclb(np) |
Scaling values for |
||
real(kind=c_double), | intent(in) | :: | scld(ldscld,m) |
Scaling values for |
||
integer(kind=c_int), | intent(in) | :: | ldscld |
Leading dimension of array |
||
real(kind=c_double), | intent(inout) | :: | work(lwork) |
Real work space. |
||
integer(kind=c_int), | intent(in) | :: | lwork |
Length of array |
||
integer(kind=c_int), | intent(inout) | :: | iwork(liwork) |
Integer work space. |
||
integer(kind=c_int), | intent(in) | :: | liwork |
Length of array |
||
real(kind=c_double), | intent(inout), | optional | :: | delta(n,m) |
Error in the |
|
real(kind=c_double), | intent(in), | optional | :: | lower(np) |
Lower bound on |
|
real(kind=c_double), | intent(in), | optional | :: | upper(np) |
Upper bound on |
|
integer(kind=c_int), | intent(in), | optional | :: | job |
Variable controlling initialization and computational method. |
|
integer(kind=c_int), | intent(in), | optional | :: | ndigit |
Number of accurate digits in the function results, as supplied by the user. |
|
real(kind=c_double), | intent(in), | optional | :: | taufac |
Factor used to compute the initial trust region diameter. |
|
real(kind=c_double), | intent(in), | optional | :: | sstol |
Sum-of-squares convergence stopping tolerance. |
|
real(kind=c_double), | intent(in), | optional | :: | partol |
Parameter convergence stopping tolerance. |
|
integer(kind=c_int), | intent(in), | optional | :: | maxit |
Maximum number of iterations allowed. |
|
integer(kind=c_int), | intent(in), | optional | :: | iprint |
Print control variable. |
|
integer(kind=c_int), | intent(in), | optional | :: | lunerr |
Logical unit number for error messages. Available options are:
0 => no output.
6 => output to standard error.
other => output to logical unit number |
|
integer(kind=c_int), | intent(in), | optional | :: | lunrpt |
Logical unit number for computation reports. Available options are:
0 => no output.
6 => output to standard error.
other => output to logical unit number |
|
integer(kind=c_int), | intent(out), | optional | :: | info |
Variable designating why the computations were stopped. |
subroutine odr_long_c( & fcn, & n, m, np, nq, & beta, y, x, & we, ldwe, ld2we, & wd, ldwd, ld2wd, & ifixb, ifixx, ldifx, & stpb, stpd, ldstpd, & sclb, scld, ldscld, & work, lwork, iwork, liwork, & delta, & lower, upper, & job, ndigit, taufac, & sstol, partol, maxit, & iprint, lunerr, lunrpt, & info) bind(C) !! "Long-call" wrapper for the `odr` routine including all optional arguments. procedure(fcn_tc) :: fcn !! User-supplied subroutine for evaluating the model. integer(c_int), intent(in) :: n !! Number of observations. integer(c_int), intent(in) :: m !! Number of columns of data in the independent variable. integer(c_int), intent(in) :: np !! Number of function parameters. integer(c_int), intent(in) :: nq !! Number of responses per observation. real(c_double), intent(inout) :: beta(np) !! Function parameters. real(c_double), intent(in) :: y(n, nq) !! Dependent variable. Unused when the model is implicit. real(c_double), intent(in) :: x(n, m) !! Explanatory variable. real(c_double), intent(in) :: we(ldwe, ld2we, nq) !! `epsilon` weights. integer(c_int), intent(in) :: ldwe !! Leading dimension of array `we`, `ldwe ∈ {1, n}`. integer(c_int), intent(in) :: ld2we !! Second dimension of array `we`, `ld2we ∈ {1, n}`. real(c_double), intent(in) :: wd(ldwd, ld2wd, m) !! `delta` weights. integer(c_int), intent(in) :: ldwd !! Leading dimension of array `wd`, `ldwd ∈ {1, n}`. integer(c_int), intent(in) :: ld2wd !! Second dimension of array `wd`, `ld2wd ∈ {1, m}`. integer(c_int), intent(in) :: ifixb(np) !! Values designating whether the elements of `beta` are fixed at their input values or not. integer(c_int), intent(in) :: ifixx(ldifx, m) !! Values designating whether the elements of `x` are fixed at their input values or not. integer(c_int), intent(in) :: ldifx !! Leading dimension of array `ifixx`, `ldifx ∈ {1, n}`. real(c_double), intent(in) :: stpb(np) !! Relative step for computing finite difference derivatives with respect to `beta`. real(c_double), intent(in) :: stpd(ldstpd, m) !! Relative step for computing finite difference derivatives with respect to `delta`. integer(c_int), intent(in) :: ldstpd !! Leading dimension of array `stpd`, `ldstpd ∈ {1, n}`. real(c_double), intent(in) :: sclb(np) !! Scaling values for `beta`. real(c_double), intent(in) :: scld(ldscld, m) !! Scaling values for `delta`. integer(c_int), intent(in) :: ldscld !! Leading dimension of array `scld`, `ldscld ∈ {1, n}`. real(c_double), intent(inout) :: work(lwork) !! Real work space. integer(c_int), intent(in) :: lwork !! Length of array `work`. integer(c_int), intent(inout) :: iwork(liwork) !! Integer work space. integer(c_int), intent(in) :: liwork !! Length of array `iwork`. real(c_double), intent(inout), optional :: delta(n, m) !! Error in the `x` data. `Shape: (n, m)`. Initial guess on input and estimated value !! on output. real(c_double), intent(in), optional :: lower(np) !! Lower bound on `beta`. real(c_double), intent(in), optional :: upper(np) !! Upper bound on `beta`. integer(c_int), intent(in), optional :: job !! Variable controlling initialization and computational method. integer(c_int), intent(in), optional :: ndigit !! Number of accurate digits in the function results, as supplied by the user. real(c_double), intent(in), optional :: taufac !! Factor used to compute the initial trust region diameter. real(c_double), intent(in), optional :: sstol !! Sum-of-squares convergence stopping tolerance. real(c_double), intent(in), optional :: partol !! Parameter convergence stopping tolerance. integer(c_int), intent(in), optional :: maxit !! Maximum number of iterations allowed. integer(c_int), intent(in), optional :: iprint !! Print control variable. integer(c_int), intent(in), optional :: lunerr !! Logical unit number for error messages. Available options are: !! 0 => no output. !! 6 => output to standard error. !! other => output to logical unit number `lunerr`. integer(c_int), intent(in), optional :: lunrpt !! Logical unit number for computation reports. Available options are: !! 0 => no output. !! 6 => output to standard error. !! other => output to logical unit number `lunrpt`. integer(c_int), intent(out), optional :: info !! Variable designating why the computations were stopped. call odr(fcn, n, m, np, nq, beta, y, x, & delta=delta, & we=we, wd=wd, & lower=lower, upper=upper, & ifixb=ifixb, ifixx=ifixx, & job=job, ndigit=ndigit, taufac=taufac, & sstol=sstol, partol=partol, maxit=maxit, & iprint=iprint, lunerr=lunerr, lunrpt=lunrpt, & stpb=stpb, & stpd=stpd, & sclb=sclb, & scld=scld, & info=info, & work=work, iwork=iwork) end subroutine odr_long_c