40 template <
typename t_Scalar>
55 t_Scalar abs_b = std::fabs(b);
59 t_Scalar abs_a = std::fabs(a);
67 t = abs_a * std::sqrt(1.0 + t * t);
72 t = abs_b * std::sqrt(1.0 + t * t);
103 void apply(t_Scalar &a, t_Scalar &b)
const
118 template <
class t_MatrixType>
131 M.col(column_1).segment(start, end - start).swap(M.col(column_2).segment(start, end - start));
134 M.middleRows(start, end - start)
136 .applyOnTheLeft(column_1, column_2, Eigen::JacobiRotation<t_Scalar>(
cos,
sin));
142 template <
class t_MatrixType>
151 M.row(row_1).segment(start, end - start).swap(M.row(row_2).segment(start, end - start));
154 M.middleCols(start, end - start)
155 .applyOnTheLeft(row_1, row_2, Eigen::JacobiRotation<t_Scalar>(
cos,
sin));
167 inline void swap(t_Scalar &a, t_Scalar &b)
const
Represents Givens rotation.
void applyRowWise(t_MatrixType &M, MatrixIndex start, MatrixIndex end, MatrixIndex row_1, MatrixIndex row_2) const
void applyNonTrivial(t_Scalar &a, t_Scalar &b) const
Type computeAndApply(t_Scalar &a, t_Scalar &b, const t_Scalar eps)
void swap(t_Scalar &a, t_Scalar &b) const
void applyColumnWise(t_MatrixType &M, MatrixIndex start, MatrixIndex end, MatrixIndex column_1, MatrixIndex column_2) const
void apply(t_Scalar &a, t_Scalar &b) const
EIGEN_DEFAULT_DENSE_INDEX_TYPE MatrixIndex