40 template <
typename t_Scalar>
57 t_Scalar abs_b = std::fabs(b);
61 t_Scalar abs_a = std::fabs(a);
69 t = abs_a * std::sqrt(1.0 + t * t);
74 t = abs_b * std::sqrt(1.0 + t * t);
105 void apply(t_Scalar &a, t_Scalar &b)
const
120 template <
class t_MatrixType>
133 M.col(column_1).segment(start, end - start).swap(M.col(column_2).segment(start, end - start));
136 M.middleRows(start, end - start)
138 .applyOnTheLeft(column_1, column_2, Eigen::JacobiRotation<t_Scalar>(
cos,
sin));
144 template <
class t_MatrixType>
153 M.row(row_1).segment(start, end - start).swap(M.row(row_2).segment(start, end - start));
156 M.middleCols(start, end - start)
157 .applyOnTheLeft(row_1, row_2, Eigen::JacobiRotation<t_Scalar>(
cos,
sin));
169 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