From 3c818e1cf3f9b739b54d465a10155eea7d104d84 Mon Sep 17 00:00:00 2001
From: Justin Carpentier <justin.carpentier@inria.fr>
Date: Tue, 11 Jun 2024 10:17:06 +0200
Subject: [PATCH] test/decompositions: test ColPivHouseholderQR

---
 unittest/python/test_QR.py | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/unittest/python/test_QR.py b/unittest/python/test_QR.py
index 5d3b0b5a..37b4a696 100644
--- a/unittest/python/test_QR.py
+++ b/unittest/python/test_QR.py
@@ -38,3 +38,21 @@ assert fullpiv_householder_qr.rank() == rows
 fullpiv_householder_qr.setThreshold(1e-8)
 assert fullpiv_householder_qr.threshold() == 1e-8
 assert eigenpy.is_approx(np.eye(rows, rows), fullpiv_householder_qr.inverse())
+
+# Test ColPivHouseholderQR decomposition
+colpiv_householder_qr = eigenpy.ColPivHouseholderQR()
+colpiv_householder_qr = eigenpy.ColPivHouseholderQR(rows, cols)
+colpiv_householder_qr = eigenpy.ColPivHouseholderQR(A)
+
+colpiv_householder_qr = eigenpy.ColPivHouseholderQR(np.eye(rows, rows))
+X = rng.random((rows, 20))
+assert colpiv_householder_qr.absDeterminant() == 1.0
+assert colpiv_householder_qr.logAbsDeterminant() == 0.0
+
+Y = colpiv_householder_qr.solve(X)
+assert (X == Y).all()
+assert colpiv_householder_qr.rank() == rows
+
+colpiv_householder_qr.setThreshold(1e-8)
+assert colpiv_householder_qr.threshold() == 1e-8
+assert eigenpy.is_approx(np.eye(rows, rows), colpiv_householder_qr.inverse())
-- 
GitLab