diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt index 38f75745f9f7672bf953bb8bba2ccd36190c6059..8d6571d1bade3aec7eced4e65c7feaeb02185771 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 0000000000000000000000000000000000000000..b7a7f98517ee50b1084ece309654253f5769480a --- /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()