aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Jacobi/Jacobi.h
diff options
context:
space:
mode:
Diffstat (limited to 'Eigen/src/Jacobi/Jacobi.h')
-rw-r--r--Eigen/src/Jacobi/Jacobi.h16
1 files changed, 14 insertions, 2 deletions
diff --git a/Eigen/src/Jacobi/Jacobi.h b/Eigen/src/Jacobi/Jacobi.h
index 10ae9eb8f..40181cd08 100644
--- a/Eigen/src/Jacobi/Jacobi.h
+++ b/Eigen/src/Jacobi/Jacobi.h
@@ -26,7 +26,7 @@
#define EIGEN_JACOBI_H
template<typename Derived>
-void MatrixBase<Derived>::applyJacobiOnTheLeft(int p, int q, Scalar c, Scalar s)
+inline void MatrixBase<Derived>::applyJacobiOnTheLeft(int p, int q, Scalar c, Scalar s)
{
RowXpr x(row(p));
RowXpr y(row(q));
@@ -34,7 +34,7 @@ void MatrixBase<Derived>::applyJacobiOnTheLeft(int p, int q, Scalar c, Scalar s)
}
template<typename Derived>
-void MatrixBase<Derived>::applyJacobiOnTheRight(int p, int q, Scalar c, Scalar s)
+inline void MatrixBase<Derived>::applyJacobiOnTheRight(int p, int q, Scalar c, Scalar s)
{
ColXpr x(col(p));
ColXpr y(col(q));
@@ -89,5 +89,17 @@ inline bool MatrixBase<Derived>::makeJacobiForAAt(int p, int q, Scalar *c, Scala
c,s);
}
+template<typename Scalar>
+inline void ei_normalizeJacobi(Scalar *c, Scalar *s, const Scalar& x, const Scalar& y)
+{
+ Scalar a = x * *c - y * *s;
+ Scalar b = x * *s + y * *c;
+ if(ei_abs(b)>ei_abs(a)) {
+ Scalar x = *c;
+ *c = -*s;
+ *s = x;
+ }
+}
+
#endif // EIGEN_JACOBI_H