add a JacobiRotation class wrapping the cosine-sine pair with

some convenient features (transpose, adjoint, product)
This commit is contained in:
Gael Guennebaud
2009-09-01 13:18:03 +02:00
parent 32f95ec267
commit 8392373d96
4 changed files with 123 additions and 77 deletions

View File

@@ -804,10 +804,10 @@ template<typename Derived> class MatrixBase
///////// Jacobi module /////////
template<typename JacobiScalar>
void applyJacobiOnTheLeft(int p, int q, JacobiScalar c, JacobiScalar s);
void applyJacobiOnTheLeft(int p, int q, const JacobiRotation<JacobiScalar>& j);
template<typename JacobiScalar>
void applyJacobiOnTheRight(int p, int q, JacobiScalar c, JacobiScalar s);
bool makeJacobi(int p, int q, Scalar *c, Scalar *s) const;
void applyJacobiOnTheRight(int p, int q, const JacobiRotation<JacobiScalar>& j);
bool makeJacobi(int p, int q, JacobiRotation<Scalar> *j) const;
#ifdef EIGEN_MATRIXBASE_PLUGIN
#include EIGEN_MATRIXBASE_PLUGIN

View File

@@ -123,6 +123,7 @@ template<typename MatrixType> class SVD;
template<typename MatrixType, unsigned int Options = 0> class JacobiSVD;
template<typename MatrixType, int UpLo = LowerTriangular> class LLT;
template<typename MatrixType> class LDLT;
template<typename Scalar> class JacobiRotation;
// Geometry module:
template<typename Derived, int _Dim> class RotationBase;