The file src/portsrc.f is based on the work of others.

  Sources downloaded from http://www.netlib.org/port/ where the readme file
  states:

   The following utility routines are publicly available:
   a0xtrp d0xtrp dalloc dxtrap e9rint enter entsrc eprint erroff i0tk00
   i0tk01 i8save i8tsel ialloc istkgt istkin istkmd istkqu istkrl istkst
   leave movebc movebd movebi movebl movebr movefc movefd movefi movefl
   movefr mtstak n5err nerror nirall retsrc s88fmt setc setd seterr
   seti setl setr srecap stinit xtrap.

   Also available are the up-to-date versions of NL2SOL (TOMS algorithm
   573): n2f and n2g correspond to NL2SNO and NL2SOL;
   n2p is a variant of NL2SOL that allows the residual vector
   and Jacobian matrix to be passed in pieces, rather than all at once;
   n2[fgp]b are versions of NL2SOL that handle simple bounds;
   ns[fg] are versions for separable nonlinear least-squares, and
   ns[fg]b are versions for separable nonlinear least-squares with
   simple bounds.  dn[s2][fgp][b ] are the double-precision versions.

   Similarly available are current versions of SMSNO, SUMSL, HUMSL (TOMS
   algorithm 611) for general unconstrained minimization:
   mnf uses function values only;
   mng uses function and gradient values;
   mnh uses function, gradient, and Hessian values;
   mn[fgh]b are versions that handle simple bounds;
   dmn[fgh][b ] are double-precision versions.

