diff options
Diffstat (limited to 'unsupported/Eigen/src/NonLinearOptimization/qform.h')
-rw-r--r-- | unsupported/Eigen/src/NonLinearOptimization/qform.h | 47 |
1 files changed, 9 insertions, 38 deletions
diff --git a/unsupported/Eigen/src/NonLinearOptimization/qform.h b/unsupported/Eigen/src/NonLinearOptimization/qform.h index 47bbd1fbe..1c3e3e267 100644 --- a/unsupported/Eigen/src/NonLinearOptimization/qform.h +++ b/unsupported/Eigen/src/NonLinearOptimization/qform.h @@ -7,7 +7,7 @@ void ei_qform(int m, int n, Scalar *q, int int q_dim1, q_offset; /* Local variables */ - int i, j, k, l, jm1, np1; + int i, j, k, l; Scalar sum, temp; 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. */ minmn = std::min(m,n); - if (minmn < 2) { - goto L30; - } for (j = 2; j <= minmn; ++j) { - jm1 = j - 1; - for (i = 1; i <= jm1; ++i) { + for (i = 1; i <= j-1; ++i) q[i + j * q_dim1] = 0.; - /* L10: */ - } - /* L20: */ } -L30: /* initialize remaining columns to those of the identity matrix. */ - np1 = n + 1; - if (m < np1) { - goto L60; - } - for (j = np1; j <= m; ++j) { - for (i = 1; i <= m; ++i) { + for (j = n+1; j <= m; ++j) { + for (i = 1; i <= m; ++i) q[i + j * q_dim1] = 0.; - /* L40: */ - } q[j + j * q_dim1] = 1.; - /* L50: */ } -L60: /* accumulate q from its factored form. */ @@ -58,32 +42,19 @@ L60: for (i = k; i <= m; ++i) { wa[i] = q[i + k * q_dim1]; q[i + k * q_dim1] = 0.; - /* L70: */ } q[k + k * q_dim1] = 1.; - if (wa[k] == 0.) { - goto L110; - } + if (wa[k] == 0.) + continue; for (j = k; j <= m; ++j) { sum = 0.; - for (i = k; i <= m; ++i) { + for (i = k; i <= m; ++i) sum += q[i + j * q_dim1] * wa[i]; - /* L80: */ - } temp = sum / wa[k]; - for (i = k; i <= m; ++i) { + for (i = k; i <= m; ++i) q[i + j * q_dim1] -= temp * wa[i]; - /* L90: */ - } - /* L100: */ } -L110: - /* L120: */ - ; } - return; - - /* last card of subroutine qform. */ -} /* qform_ */ +} |