summary refs log tree commit diff
path: root/gnu/packages/patches/eigen-stabilise-sparseqr-test.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/eigen-stabilise-sparseqr-test.patch')
-rw-r--r--gnu/packages/patches/eigen-stabilise-sparseqr-test.patch74
1 files changed, 0 insertions, 74 deletions
diff --git a/gnu/packages/patches/eigen-stabilise-sparseqr-test.patch b/gnu/packages/patches/eigen-stabilise-sparseqr-test.patch
deleted file mode 100644
index b95b46077a..0000000000
--- a/gnu/packages/patches/eigen-stabilise-sparseqr-test.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From: Tobias Geerinckx-Rice <me@tobias.gr>
-Date: Mon, 16 Mar 2020 22:51:37 +0000
-Subject: gnu: eigen: Stabilise sparseqr test.
-
-Taken verbatim from this[0] upstream commit.
-
-[0]: https://gitlab.com/libeigen/eigen/-/commit/3b5deeb546d4017b24846f5b0dc3296a50a039fe
-
-From 3b5deeb546d4017b24846f5b0dc3296a50a039fe Mon Sep 17 00:00:00 2001
-From: Gael Guennebaud <g.gael@free.fr>
-Date: Tue, 19 Feb 2019 22:57:51 +0100
-Subject: [PATCH] bug #899: make sparseqr unit test more stable by 1) trying
- with larger threshold and 2) relax rank computation for rank-deficient
- problems.
-
----
- test/sparseqr.cpp | 31 ++++++++++++++++++++++++++-----
- 1 file changed, 26 insertions(+), 5 deletions(-)
-
-diff --git a/test/sparseqr.cpp b/test/sparseqr.cpp
-index 3ffe62314..3576cc626 100644
---- a/test/sparseqr.cpp
-+++ b/test/sparseqr.cpp
-@@ -43,6 +43,7 @@ int generate_sparse_rectangular_problem(MatrixType& A, DenseMat& dA, int maxRows
- 
- template<typename Scalar> void test_sparseqr_scalar()
- {
-+  typedef typename NumTraits<Scalar>::Real RealScalar;
-   typedef SparseMatrix<Scalar,ColMajor> MatrixType; 
-   typedef Matrix<Scalar,Dynamic,Dynamic> DenseMat;
-   typedef Matrix<Scalar,Dynamic,1> DenseVector;
-@@ -91,14 +92,34 @@ template<typename Scalar> void test_sparseqr_scalar()
-     exit(0);
-     return;
-   }
--  
--  VERIFY_IS_APPROX(A * x, b);
--  
--  //Compare with a dense QR solver
-+
-+  // Compare with a dense QR solver
-   ColPivHouseholderQR<DenseMat> dqr(dA);
-   refX = dqr.solve(b);
-   
--  VERIFY_IS_EQUAL(dqr.rank(), solver.rank());
-+  bool rank_deficient = A.cols()>A.rows() || dqr.rank()<A.cols();
-+  if(rank_deficient)
-+  {
-+    // rank deficient problem -> we might have to increase the threshold
-+    // to get a correct solution.
-+    RealScalar th = RealScalar(20)*dA.colwise().norm().maxCoeff()*(A.rows()+A.cols()) * NumTraits<RealScalar>::epsilon();
-+    for(Index k=0; (k<16) && !test_isApprox(A*x,b); ++k)
-+    {
-+      th *= RealScalar(10);
-+      solver.setPivotThreshold(th);
-+      solver.compute(A);
-+      x = solver.solve(b);
-+    }
-+  }
-+
-+  VERIFY_IS_APPROX(A * x, b);
-+  
-+  // For rank deficient problem, the estimated rank might
-+  // be slightly off, so let's only raise a warning in such cases.
-+  if(rank_deficient) ++g_test_level;
-+  VERIFY_IS_EQUAL(solver.rank(), dqr.rank());
-+  if(rank_deficient) --g_test_level;
-+
-   if(solver.rank()==A.cols()) // full rank
-     VERIFY_IS_APPROX(x, refX);
- //   else
--- 
-2.24.1
-