37 template <
typename t_Scalar>
52 t_Scalar abs_b = std::fabs(b);
56 t_Scalar abs_a = std::fabs(a);
64 t = abs_a * std::sqrt(1.0 + t * t);
69 t = abs_b * std::sqrt(1.0 + t * t);
100 void apply(t_Scalar & a, t_Scalar & b)
const 115 template<
class t_MatrixType>
120 const int column_2)
const 127 M.col(column_1).segment(start, end-start).swap(
128 M.col(column_2).segment(start, end-start) );
131 M.middleRows(start, end - start).transpose().applyOnTheLeft(
133 Eigen::JacobiRotation<t_Scalar> (
cos,
sin));
139 template<
class t_MatrixType>
144 const int row_2)
const 151 M.row(row_1).segment(start, end-start).swap(
152 M.row(row_2).segment(start, end-start) );
155 M.middleCols(start, end - start).applyOnTheLeft(
157 Eigen::JacobiRotation<t_Scalar> (
cos,
sin));
169 inline void swap(t_Scalar & a, t_Scalar & b)
const 179 b = -
sin * t1 +
cos * t2;
Represents Givens rotation.
void applyColumnWise(t_MatrixType &M, const int start, const int end, const int column_1, const int column_2) const
void apply(t_Scalar &a, t_Scalar &b) const
void applyRowWise(t_MatrixType &M, const int start, const int end, const int row_1, const int row_2) const
void swap(t_Scalar &a, t_Scalar &b) const
void applyNonTrivial(t_Scalar &a, t_Scalar &b) const
Type computeAndApply(t_Scalar &a, t_Scalar &b, const t_Scalar eps)