use eigen objects for hybrj and lmstr

This commit is contained in:
Thomas Capricelli
2009-08-23 03:14:42 +02:00
parent 3251e12258
commit 8a27e774f8
3 changed files with 27 additions and 23 deletions

View File

@@ -70,7 +70,7 @@ L20:
/* evaluate the function at the starting point */
/* and calculate its norm. */
iflag = Functor::f(n, x.data(), fvec.data(), fjac.data(), ldfjac, 1);
iflag = Functor::f(x, fvec, fjac, 1);
nfev = 1;
if (iflag < 0) {
goto L300;
@@ -92,7 +92,7 @@ L30:
/* calculate the jacobian matrix. */
iflag = Functor::f(n, x.data(), fvec.data(), fjac.data(), ldfjac, 2);
iflag = Functor::f(x, fvec, fjac, 2);
++njev;
if (iflag < 0) {
goto L300;
@@ -202,9 +202,8 @@ L180:
goto L190;
}
iflag = 0;
if ((iter - 1) % nprint == 0) {
iflag = Functor::f(n, x.data(), fvec.data(), fjac.data(), ldfjac, 0);
}
if ((iter - 1) % nprint == 0)
iflag = Functor::f(x, fvec, fjac, 0);
if (iflag < 0) {
goto L300;
}
@@ -232,7 +231,7 @@ L190:
/* evaluate the function at x + p and calculate its norm. */
iflag = Functor::f(n, wa2.data(), wa4.data(), fjac.data(), ldfjac, 1);
iflag = Functor::f(wa2, wa4, fjac, 1);
++nfev;
if (iflag < 0) {
goto L300;
@@ -395,9 +394,8 @@ L300:
if (iflag < 0) {
info = iflag;
}
if (nprint > 0) {
iflag = Functor::f(n, x.data(), fvec.data(), fjac.data(), ldfjac, 0);
}
if (nprint > 0)
iflag = Functor::f(x, fvec, fjac, 0);
return info;
/* last card of subroutine hybrj. */

View File

@@ -66,7 +66,7 @@ L20:
/* evaluate the function at the starting point */
/* and calculate its norm. */
iflag = Functor::f(m, n, x.data(), fvec.data(), wa3.data(), 1);
iflag = Functor::f(x, fvec, wa3, 1);
nfev = 1;
if (iflag < 0) {
goto L340;
@@ -89,7 +89,7 @@ L30:
}
iflag = 0;
if ((iter - 1) % nprint == 0) {
iflag = Functor::f(m, n, x.data(), fvec.data(), wa3.data(), 0);
iflag = Functor::f(x, fvec, wa3, 0);
}
if (iflag < 0) {
goto L340;
@@ -111,7 +111,7 @@ L40:
}
iflag = 2;
for (i = 0; i < m; ++i) {
if (Functor::f(m, n, x.data(), fvec.data(), wa3.data(), iflag) < 0) {
if (Functor::f(x, fvec, wa3, iflag) < 0) {
goto L340;
}
temp = fvec[i];
@@ -264,7 +264,7 @@ L240:
/* evaluate the function at x + p and calculate its norm. */
iflag = Functor::f(m, n, wa2.data(), wa4.data(), wa3.data(), 1);
iflag = Functor::f(wa2, wa4, wa3, 1);
++nfev;
if (iflag < 0) {
goto L340;
@@ -406,7 +406,7 @@ L340:
}
iflag = 0;
if (nprint > 0) {
iflag = Functor::f(m, n, x.data(), fvec.data(), wa3.data(), 0);
iflag = Functor::f(x, fvec, wa3, 0);
}
return info;