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