From 137394696cb9854ff01f7910eb83eccdf7c077ae Mon Sep 17 00:00:00 2001
From: Justin Carpentier <justin.carpentier@inria.fr>
Date: Mon, 10 Jun 2024 17:00:10 +0200
Subject: [PATCH] test/decompositions: add test for HouseholderQR

---
 unittest/CMakeLists.txt    |  2 ++
 unittest/python/test_QR.py | 22 ++++++++++++++++++++++
 2 files changed, 24 insertions(+)
 create mode 100644 unittest/python/test_QR.py

diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt
index 38f75745..8d6571d1 100644
--- a/unittest/CMakeLists.txt
+++ b/unittest/CMakeLists.txt
@@ -136,6 +136,8 @@ add_python_eigenpy_lib_unit_test("py-LDLT" "unittest/python/test_LDLT.py")
 
 add_python_eigenpy_lib_unit_test("py-id" "unittest/python/test_id.py")
 
+add_python_eigenpy_lib_unit_test("py-QR" "unittest/python/test_QR.py")
+
 if(NOT WIN32)
   add_python_eigenpy_lib_unit_test("py-MINRES" "unittest/python/test_MINRES.py")
 endif(NOT WIN32)
diff --git a/unittest/python/test_QR.py b/unittest/python/test_QR.py
new file mode 100644
index 00000000..b7a7f985
--- /dev/null
+++ b/unittest/python/test_QR.py
@@ -0,0 +1,22 @@
+import numpy as np
+
+import eigenpy
+
+rows = 20
+cols = 100
+rng = np.random.default_rng()
+
+A = rng.random((rows, cols))
+
+# Test HouseholderQR decomposition
+householder_qr = eigenpy.HouseholderQR()
+householder_qr = eigenpy.HouseholderQR(rows, cols)
+householder_qr = eigenpy.HouseholderQR(A)
+
+householder_qr_eye = eigenpy.HouseholderQR(np.eye(rows, rows))
+X = rng.random((rows, 20))
+assert householder_qr_eye.absDeterminant() == 1.0
+assert householder_qr_eye.logAbsDeterminant() == 0.0
+
+Y = householder_qr_eye.solve(X)
+assert (X == Y).all()
-- 
GitLab