useless cleaning

This commit is contained in:
Thomas Capricelli 2010-01-25 07:07:31 +01:00
parent 6ae7d842a3
commit cbf6022e5a
4 changed files with 26 additions and 85 deletions

View File

@ -118,7 +118,5 @@ algo_end:
temp = (1.-alpha) * std::min(sgnorm,delta); temp = (1.-alpha) * std::min(sgnorm,delta);
x = temp * wa1 + alpha * x; x = temp * wa1 + alpha * x;
return;
} }

View File

@ -22,7 +22,7 @@ int ei_fdjac1(
Matrix< Scalar, Dynamic, 1 > wa1(n); Matrix< Scalar, Dynamic, 1 > wa1(n);
Matrix< Scalar, Dynamic, 1 > wa2(n); Matrix< Scalar, Dynamic, 1 > wa2(n);
eps = ei_sqrt((std::max(epsfcn,epsmch))); eps = ei_sqrt(std::max(epsfcn,epsmch));
msum = ml + mu + 1; msum = ml + mu + 1;
if (msum >= n) { if (msum >= n) {
/* computation of dense approximate jacobian. */ /* computation of dense approximate jacobian. */
@ -49,18 +49,16 @@ int ei_fdjac1(
x[j] = wa2[j] + h; x[j] = wa2[j] + h;
} }
iflag = Functor(x, wa1); iflag = Functor(x, wa1);
if (iflag < 0) { if (iflag < 0)
return iflag; return iflag;
}
for (j = k; msum< 0 ? j > n: j < n; j += msum) { for (j = k; msum< 0 ? j > n: j < n; j += msum) {
x[j] = wa2[j]; x[j] = wa2[j];
h = eps * ei_abs(wa2[j]); h = eps * ei_abs(wa2[j]);
if (h == 0.) h = eps; if (h == 0.) h = eps;
for (i = 0; i < n; ++i) { for (i = 0; i < n; ++i) {
fjac(i,j) = 0.; fjac(i,j) = 0.;
if (i >= j - mu && i <= j + ml) { if (i >= j - mu && i <= j + ml)
fjac(i,j) = (wa1[i] - fvec[i]) / h; fjac(i,j) = (wa1[i] - fvec[i]) / h;
}
} }
} }
} }

View File

@ -7,7 +7,7 @@ void ei_qform(int m, int n, Scalar *q, int
int q_dim1, q_offset; int q_dim1, q_offset;
/* Local variables */ /* Local variables */
int i, j, k, l, jm1, np1; int i, j, k, l;
Scalar sum, temp; Scalar sum, temp;
int minmn; int minmn;
@ -22,34 +22,18 @@ void ei_qform(int m, int n, Scalar *q, int
/* zero out upper triangle of q in the first min(m,n) columns. */ /* zero out upper triangle of q in the first min(m,n) columns. */
minmn = std::min(m,n); minmn = std::min(m,n);
if (minmn < 2) {
goto L30;
}
for (j = 2; j <= minmn; ++j) { for (j = 2; j <= minmn; ++j) {
jm1 = j - 1; for (i = 1; i <= j-1; ++i)
for (i = 1; i <= jm1; ++i) {
q[i + j * q_dim1] = 0.; q[i + j * q_dim1] = 0.;
/* L10: */
}
/* L20: */
} }
L30:
/* initialize remaining columns to those of the identity matrix. */ /* initialize remaining columns to those of the identity matrix. */
np1 = n + 1; for (j = n+1; j <= m; ++j) {
if (m < np1) { for (i = 1; i <= m; ++i)
goto L60;
}
for (j = np1; j <= m; ++j) {
for (i = 1; i <= m; ++i) {
q[i + j * q_dim1] = 0.; q[i + j * q_dim1] = 0.;
/* L40: */
}
q[j + j * q_dim1] = 1.; q[j + j * q_dim1] = 1.;
/* L50: */
} }
L60:
/* accumulate q from its factored form. */ /* accumulate q from its factored form. */
@ -58,32 +42,19 @@ L60:
for (i = k; i <= m; ++i) { for (i = k; i <= m; ++i) {
wa[i] = q[i + k * q_dim1]; wa[i] = q[i + k * q_dim1];
q[i + k * q_dim1] = 0.; q[i + k * q_dim1] = 0.;
/* L70: */
} }
q[k + k * q_dim1] = 1.; q[k + k * q_dim1] = 1.;
if (wa[k] == 0.) { if (wa[k] == 0.)
goto L110; continue;
}
for (j = k; j <= m; ++j) { for (j = k; j <= m; ++j) {
sum = 0.; sum = 0.;
for (i = k; i <= m; ++i) { for (i = k; i <= m; ++i)
sum += q[i + j * q_dim1] * wa[i]; sum += q[i + j * q_dim1] * wa[i];
/* L80: */
}
temp = sum / wa[k]; temp = sum / wa[k];
for (i = k; i <= m; ++i) { for (i = k; i <= m; ++i)
q[i + j * q_dim1] -= temp * wa[i]; q[i + j * q_dim1] -= temp * wa[i];
/* L90: */
}
/* L100: */
} }
L110:
/* L120: */
;
} }
return;
/* last card of subroutine qform. */ }
} /* qform_ */

View File

@ -39,22 +39,17 @@ void ei_qrfac(int m, int n, Scalar *a, int
minmn = std::min(m,n); minmn = std::min(m,n);
for (j = 1; j <= minmn; ++j) { for (j = 1; j <= minmn; ++j) {
if (! (pivot)) { if (! (pivot))
goto L40; goto L40;
}
/* bring the column of largest norm into the pivot position. */ /* bring the column of largest norm into the pivot position. */
kmax = j; kmax = j;
for (k = j; k <= n; ++k) { for (k = j; k <= n; ++k)
if (rdiag[k] > rdiag[kmax]) { if (rdiag[k] > rdiag[kmax])
kmax = k; kmax = k;
} if (kmax == j)
/* L20: */
}
if (kmax == j) {
goto L40; goto L40;
}
for (i = 1; i <= m; ++i) { for (i = 1; i <= m; ++i) {
temp = a[i + j * a_dim1]; temp = a[i + j * a_dim1];
a[i + j * a_dim1] = a[i + kmax * a_dim1]; a[i + j * a_dim1] = a[i + kmax * a_dim1];
@ -72,60 +67,39 @@ L40:
/* j-th column of a to a multiple of the j-th unit vector. */ /* j-th column of a to a multiple of the j-th unit vector. */
ajnorm = Map< Matrix< Scalar, Dynamic, 1 > >(&a[j + j * a_dim1],m-j+1).blueNorm(); ajnorm = Map< Matrix< Scalar, Dynamic, 1 > >(&a[j + j * a_dim1],m-j+1).blueNorm();
if (ajnorm == 0.) { if (ajnorm == 0.)
goto L100; goto L100;
} if (a[j + j * a_dim1] < 0.)
if (a[j + j * a_dim1] < 0.) {
ajnorm = -ajnorm; ajnorm = -ajnorm;
} for (i = j; i <= m; ++i)
for (i = j; i <= m; ++i) {
a[i + j * a_dim1] /= ajnorm; a[i + j * a_dim1] /= ajnorm;
/* L50: */
}
a[j + j * a_dim1] += 1.; a[j + j * a_dim1] += 1.;
/* apply the transformation to the remaining columns */ /* apply the transformation to the remaining columns */
/* and update the norms. */ /* and update the norms. */
jp1 = j + 1; jp1 = j + 1;
if (n < jp1) {
goto L100;
}
for (k = jp1; k <= n; ++k) { for (k = jp1; k <= n; ++k) {
sum = 0.; sum = 0.;
for (i = j; i <= m; ++i) { for (i = j; i <= m; ++i)
sum += a[i + j * a_dim1] * a[i + k * a_dim1]; sum += a[i + j * a_dim1] * a[i + k * a_dim1];
/* L60: */
}
temp = sum / a[j + j * a_dim1]; temp = sum / a[j + j * a_dim1];
for (i = j; i <= m; ++i) { for (i = j; i <= m; ++i)
a[i + k * a_dim1] -= temp * a[i + j * a_dim1]; a[i + k * a_dim1] -= temp * a[i + j * a_dim1];
/* L70: */ if (! (pivot) || rdiag[k] == 0.)
} continue;
if (! (pivot) || rdiag[k] == 0.) {
goto L80;
}
temp = a[j + k * a_dim1] / rdiag[k]; temp = a[j + k * a_dim1] / rdiag[k];
/* Computing MAX */ /* Computing MAX */
/* Computing 2nd power */ /* Computing 2nd power */
rdiag[k] *= ei_sqrt((std::max(Scalar(0.), Scalar(1.)-ei_abs2(temp)))); rdiag[k] *= ei_sqrt((std::max(Scalar(0.), Scalar(1.)-ei_abs2(temp))));
/* Computing 2nd power */ /* Computing 2nd power */
if (Scalar(.05) * ei_abs2(rdiag[k] / wa[k]) > epsmch) { if (Scalar(.05) * ei_abs2(rdiag[k] / wa[k]) > epsmch)
goto L80; continue;
}
rdiag[k] = Map< Matrix< Scalar, Dynamic, 1 > >(&a[jp1 + k * a_dim1],m-j).blueNorm(); rdiag[k] = Map< Matrix< Scalar, Dynamic, 1 > >(&a[jp1 + k * a_dim1],m-j).blueNorm();
wa[k] = rdiag[k]; wa[k] = rdiag[k];
L80:
/* L90: */
;
} }
L100: L100:
rdiag[j] = -ajnorm; rdiag[j] = -ajnorm;
/* L110: */
} }
return; }
/* last card of subroutine qrfac. */
} /* qrfac_ */