summaryrefslogtreecommitdiffstats
path: root/ast/cminpack/lmder1.c
diff options
context:
space:
mode:
Diffstat (limited to 'ast/cminpack/lmder1.c')
-rw-r--r--ast/cminpack/lmder1.c167
1 files changed, 0 insertions, 167 deletions
diff --git a/ast/cminpack/lmder1.c b/ast/cminpack/lmder1.c
deleted file mode 100644
index 581462e..0000000
--- a/ast/cminpack/lmder1.c
+++ /dev/null
@@ -1,167 +0,0 @@
-#include "cminpack.h"
-#include "cminpackP.h"
-
-__cminpack_attr__
-int __cminpack_func__(lmder1)(__cminpack_decl_fcnder_mn__ void *p, int m, int n, real *x,
- real *fvec, real *fjac, int ldfjac, real tol,
- int *ipvt, real *wa, int lwa)
-{
- /* Initialized data */
-
- const real factor = 100.;
-
- /* Local variables */
- int mode, nfev, njev;
- real ftol, gtol, xtol;
- int maxfev, nprint;
- int info;
-
-/* ********** */
-
-/* subroutine lmder1 */
-
-/* the purpose of lmder1 is to minimize the sum of the squares of */
-/* m nonlinear functions in n variables by a modification of the */
-/* levenberg-marquardt algorithm. this is done by using the more */
-/* general least-squares solver lmder. the user must provide a */
-/* subroutine which calculates the functions and the jacobian. */
-
-/* the subroutine statement is */
-
-/* subroutine lmder1(fcn,m,n,x,fvec,fjac,ldfjac,tol,info, */
-/* ipvt,wa,lwa) */
-
-/* where */
-
-/* fcn is the name of the user-supplied subroutine which */
-/* calculates the functions and the jacobian. fcn must */
-/* be declared in an external statement in the user */
-/* calling program, and should be written as follows. */
-
-/* subroutine fcn(m,n,x,fvec,fjac,ldfjac,iflag) */
-/* integer m,n,ldfjac,iflag */
-/* double precision x(n),fvec(m),fjac(ldfjac,n) */
-/* ---------- */
-/* if iflag = 1 calculate the functions at x and */
-/* return this vector in fvec. do not alter fjac. */
-/* if iflag = 2 calculate the jacobian at x and */
-/* return this matrix in fjac. do not alter fvec. */
-/* ---------- */
-/* return */
-/* end */
-
-/* the value of iflag should not be changed by fcn unless */
-/* the user wants to terminate execution of lmder1. */
-/* in this case set iflag to a negative integer. */
-
-/* m is a positive integer input variable set to the number */
-/* of functions. */
-
-/* n is a positive integer input variable set to the number */
-/* of variables. n must not exceed m. */
-
-/* x is an array of length n. on input x must contain */
-/* an initial estimate of the solution vector. on output x */
-/* contains the final estimate of the solution vector. */
-
-/* fvec is an output array of length m which contains */
-/* the functions evaluated at the output x. */
-
-/* fjac is an output m by n array. the upper n by n submatrix */
-/* of fjac contains an upper triangular matrix r with */
-/* diagonal elements of nonincreasing magnitude such that */
-
-/* t t t */
-/* p *(jac *jac)*p = r *r, */
-
-/* where p is a permutation matrix and jac is the final */
-/* calculated jacobian. column j of p is column ipvt(j) */
-/* (see below) of the identity matrix. the lower trapezoidal */
-/* part of fjac contains information generated during */
-/* the computation of r. */
-
-/* ldfjac is a positive integer input variable not less than m */
-/* which specifies the leading dimension of the array fjac. */
-
-/* tol is a nonnegative input variable. termination occurs */
-/* when the algorithm estimates either that the relative */
-/* error in the sum of squares is at most tol or that */
-/* the relative error between x and the solution is at */
-/* most tol. */
-
-/* info is an integer output variable. if the user has */
-/* terminated execution, info is set to the (negative) */
-/* value of iflag. see description of fcn. otherwise, */
-/* info is set as follows. */
-
-/* info = 0 improper input parameters. */
-
-/* info = 1 algorithm estimates that the relative error */
-/* in the sum of squares is at most tol. */
-
-/* info = 2 algorithm estimates that the relative error */
-/* between x and the solution is at most tol. */
-
-/* info = 3 conditions for info = 1 and info = 2 both hold. */
-
-/* info = 4 fvec is orthogonal to the columns of the */
-/* jacobian to machine precision. */
-
-/* info = 5 number of calls to fcn with iflag = 1 has */
-/* reached 100*(n+1). */
-
-/* info = 6 tol is too small. no further reduction in */
-/* the sum of squares is possible. */
-
-/* info = 7 tol is too small. no further improvement in */
-/* the approximate solution x is possible. */
-
-/* ipvt is an integer output array of length n. ipvt */
-/* defines a permutation matrix p such that jac*p = q*r, */
-/* where jac is the final calculated jacobian, q is */
-/* orthogonal (not stored), and r is upper triangular */
-/* with diagonal elements of nonincreasing magnitude. */
-/* column j of p is column ipvt(j) of the identity matrix. */
-
-/* wa is a work array of length lwa. */
-
-/* lwa is a positive integer input variable not less than 5*n+m. */
-
-/* subprograms called */
-
-/* user-supplied ...... fcn */
-
-/* minpack-supplied ... lmder */
-
-/* argonne national laboratory. minpack project. march 1980. */
-/* burton s. garbow, kenneth e. hillstrom, jorge j. more */
-
-/* ********** */
-
-/* check the input parameters for errors. */
-
- if (n <= 0 || m < n || ldfjac < m || tol < 0. || lwa < n * 5 + m) {
- return 0;
- }
-
-/* call lmder. */
-
- maxfev = (n + 1) * 100;
- ftol = tol;
- xtol = tol;
- gtol = 0.;
- mode = 1;
- nprint = 0;
- info = __cminpack_func__(lmder)(__cminpack_param_fcnder_mn__ p, m, n, x, fvec, fjac, ldfjac,
- ftol, xtol, gtol, maxfev, wa, mode, factor, nprint,
- &nfev, &njev, ipvt, &wa[n], &wa[(n << 1)], &
- wa[n * 3], &wa[(n << 2)], &wa[n * 5]);
- if (info == 8) {
- info = 4;
- }
- return info;
-
-/* last card of subroutine lmder1. */
-
-} /* lmder1_ */
-