odr_long_c Subroutine

public 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.

Arguments

Type IntentOptional 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)

epsilon weights.

integer(kind=c_int), intent(in) :: ldwe

Leading dimension of array we, ldwe ∈ {1, n}.

integer(kind=c_int), intent(in) :: ld2we

Second dimension of array we, ld2we ∈ {1, n}.

real(kind=c_double), intent(in) :: wd(ldwd,ld2wd,m)

delta weights.

integer(kind=c_int), intent(in) :: ldwd

Leading dimension of array wd, ldwd ∈ {1, n}.

integer(kind=c_int), intent(in) :: ld2wd

Second dimension of array wd, ld2wd ∈ {1, m}.

integer(kind=c_int), intent(in) :: ifixb(np)

Values designating whether the elements of beta are fixed at their input values or not.

integer(kind=c_int), intent(in) :: ifixx(ldifx,m)

Values designating whether the elements of x are fixed at their input values or not.

integer(kind=c_int), intent(in) :: ldifx

Leading dimension of array ifixx, ldifx ∈ {1, n}.

real(kind=c_double), intent(in) :: stpb(np)

Relative step for computing finite difference derivatives with respect to beta.

real(kind=c_double), intent(in) :: stpd(ldstpd,m)

Relative step for computing finite difference derivatives with respect to delta.

integer(kind=c_int), intent(in) :: ldstpd

Leading dimension of array stpd, ldstpd ∈ {1, n}.

real(kind=c_double), intent(in) :: sclb(np)

Scaling values for beta.

real(kind=c_double), intent(in) :: scld(ldscld,m)

Scaling values for delta.

integer(kind=c_int), intent(in) :: ldscld

Leading dimension of array scld, ldscld ∈ {1, n}.

real(kind=c_double), intent(inout) :: work(lwork)

Real work space.

integer(kind=c_int), intent(in) :: lwork

Length of array work.

integer(kind=c_int), intent(inout) :: iwork(liwork)

Integer work space.

integer(kind=c_int), intent(in) :: liwork

Length of array iwork.

real(kind=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(kind=c_double), intent(in), optional :: lower(np)

Lower bound on beta.

real(kind=c_double), intent(in), optional :: upper(np)

Upper bound on beta.

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 lunerr.

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 lunrpt.

integer(kind=c_int), intent(out), optional :: info

Variable designating why the computations were stopped.


Calls

proc~~odr_long_c~~CallsGraph proc~odr_long_c odr_long_c proc~odr odr proc~odr_long_c->proc~odr proc~dodcnt dodcnt proc~odr->proc~dodcnt proc~dodpe1 dodpe1 proc~odr->proc~dodpe1 proc~dodphd dodphd proc~odr->proc~dodphd proc~workspace_dimensions workspace_dimensions proc~odr->proc~workspace_dimensions proc~doddrv doddrv proc~dodcnt->proc~doddrv interface~dcopy dcopy proc~doddrv->interface~dcopy interface~ddot ddot proc~doddrv->interface~ddot interface~dnrm2 dnrm2 proc~doddrv->interface~dnrm2 proc~derstep derstep proc~doddrv->proc~derstep proc~detaf detaf proc~doddrv->proc~detaf proc~dfctrw dfctrw proc~doddrv->proc~dfctrw proc~dflags dflags proc~doddrv->proc~dflags proc~diniwk diniwk proc~doddrv->proc~diniwk proc~diwinf diwinf proc~doddrv->proc~diwinf proc~djck djck proc~doddrv->proc~djck proc~dodchk dodchk proc~doddrv->proc~dodchk proc~dodmn dodmn proc~doddrv->proc~dodmn proc~dodper dodper proc~doddrv->proc~dodper proc~dpack dpack proc~doddrv->proc~dpack proc~dsetn dsetn proc~doddrv->proc~dsetn proc~dunpac dunpac proc~doddrv->proc~dunpac proc~dwght dwght proc~doddrv->proc~dwght proc~dwinf dwinf proc~doddrv->proc~dwinf proc~mbfb mbfb proc~doddrv->proc~mbfb proc~dhstep dhstep proc~derstep->proc~dhstep proc~dfctr dfctr proc~dfctrw->proc~dfctr proc~diniwk->interface~dcopy proc~diniwk->proc~dflags proc~dsclb dsclb proc~diniwk->proc~dsclb proc~dscld dscld proc~diniwk->proc~dscld proc~djck->proc~dhstep proc~djckm djckm proc~djck->proc~djckm proc~dodmn->interface~dcopy proc~dodmn->interface~ddot proc~dodmn->interface~dnrm2 proc~dodmn->proc~dflags proc~dodmn->proc~dpack proc~dodmn->proc~dunpac proc~dodmn->proc~dwght proc~dacces dacces proc~dodmn->proc~dacces proc~devjac devjac proc~dodmn->proc~devjac proc~dodlm dodlm proc~dodmn->proc~dodlm proc~dodpcr dodpcr proc~dodmn->proc~dodpcr proc~dodvcv dodvcv proc~dodmn->proc~dodvcv proc~dodper->proc~dodpe1 proc~dodper->proc~dodphd proc~dodpe2 dodpe2 proc~dodper->proc~dodpe2 proc~dodpe3 dodpe3 proc~dodper->proc~dodpe3 proc~dpack->interface~dcopy proc~dunpac->interface~dcopy proc~mbfb->proc~dhstep proc~dacces->proc~diwinf proc~dacces->proc~dwinf proc~devjac->interface~ddot proc~devjac->proc~dunpac proc~devjac->proc~dwght proc~difix difix proc~devjac->proc~difix proc~djaccd djaccd proc~devjac->proc~djaccd proc~djacfd djacfd proc~devjac->proc~djacfd proc~dfctr->interface~ddot proc~djckc djckc proc~djckm->proc~djckc proc~djckz djckz proc~djckm->proc~djckz proc~dpvb dpvb proc~djckm->proc~dpvb proc~dpvd dpvd proc~djckm->proc~dpvd proc~dodlm->interface~ddot proc~dodlm->interface~dnrm2 proc~dodlm->proc~dwght proc~dodstp dodstp proc~dodlm->proc~dodstp proc~dscale dscale proc~dodlm->proc~dscale proc~dodpcr->proc~dodphd proc~dodpcr->proc~dflags proc~dodpc1 dodpc1 proc~dodpcr->proc~dodpc1 proc~dodpc2 dodpc2 proc~dodpcr->proc~dodpc2 proc~dodpc3 dodpc3 proc~dodpcr->proc~dodpc3 dpodi dpodi proc~dodvcv->dpodi proc~dodvcv->proc~dodstp proc~djaccd->proc~derstep proc~djaccd->proc~dhstep proc~djacfd->proc~derstep proc~djacfd->proc~dhstep proc~djckc->proc~dpvb proc~djckc->proc~dpvd proc~djckf djckf proc~djckc->proc~djckf proc~djckz->proc~dpvb proc~djckz->proc~dpvd proc~dodpc1->proc~dhstep proc~dppt dppt proc~dodpc3->proc~dppt proc~dodstp->interface~dnrm2 proc~dodstp->proc~dwght proc~dodstp->proc~dfctr dchex dchex proc~dodstp->dchex dqrdc dqrdc proc~dodstp->dqrdc dqrsl dqrsl proc~dodstp->dqrsl dtrco dtrco proc~dodstp->dtrco dtrsl dtrsl proc~dodstp->dtrsl interface~drot drot proc~dodstp->interface~drot interface~drotg drotg proc~dodstp->interface~drotg interface~idamax idamax proc~dodstp->interface~idamax proc~desubi desubi proc~dodstp->proc~desubi proc~dsolve dsolve proc~dodstp->proc~dsolve proc~dvevtr dvevtr proc~dodstp->proc~dvevtr proc~djckf->proc~dpvb proc~djckf->proc~dpvd proc~dppnml dppnml proc~dppt->proc~dppnml proc~dsolve->interface~ddot interface~daxpy daxpy proc~dsolve->interface~daxpy proc~dvevtr->proc~dsolve

Source Code

   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