5 template <
typename Scalar>
7 Matrix< Scalar, Dynamic, Dynamic > &s,
8 const Matrix< Scalar, Dynamic, 1> &u,
9 std::vector<JacobiRotation<Scalar> > &v_givens,
10 std::vector<JacobiRotation<Scalar> > &w_givens,
11 Matrix< Scalar, Dynamic, 1> &v,
12 Matrix< Scalar, Dynamic, 1> &w,
15 typedef DenseIndex Index;
16 const JacobiRotation<Scalar> IdentityRotation = JacobiRotation<Scalar>(1,0);
19 const Index m = s.rows();
20 const Index n = s.cols();
23 JacobiRotation<Scalar> givens;
28 eigen_assert(u.size()==m);
29 eigen_assert(v.size()==n);
30 eigen_assert(w.size()==n);
37 for (j=n-2; j>=0; --j) {
42 givens.makeGivens(-v[n-1], v[j]);
46 v[n-1] = givens.s() * v[j] + givens.c() * v[n-1];
50 for (i = j; i < m; ++i) {
51 temp = givens.c() * s(j,i) - givens.s() * w[i];
52 w[i] = givens.s() * s(j,i) + givens.c() * w[i];
56 v_givens[j] = IdentityRotation;
64 for (j = 0; j < n-1; ++j) {
68 givens.makeGivens(-s(j,j), w[j]);
71 for (i = j; i < m; ++i) {
72 temp = givens.c() * s(j,i) + givens.s() * w[i];
73 w[i] = -givens.s() * s(j,i) + givens.c() * w[i];
81 v_givens[j] = IdentityRotation;
Namespace containing all symbols from the Eigen library.
Definition: AdolcForward:45