|
mxlib
c++ tools for analyzing astronomical data and other tasks by Jared R. Males. [git repo]
|
Result of deleting rows or columns from a represented thin SVD.
If \(A=U\Sigma V^T\), the returned rotation applies to the factor on the side that was not deleted. For row deletion the updated right factor is V * rotation(); for column deletion the updated left factor is U * rotation(). Singular values are descending.
Output arrays remain allocated across calls. Their numerical contents are valid only when status() reports a successful operation.
| realT | floating-point type; supported explicit instantiations are float and double. |
| abiT | type-level ABI tag; callers use the default. |
Definition at line 321 of file svdDowndate.hpp.
#include <math/svdDowndate.hpp>
Public Member Functions | |
| svdDeletionResult () | |
| Construct an empty result. | |
| ~svdDeletionResult () | |
| Release result storage using mxlib's Eigen allocation configuration. | |
| svdDeletionResult (const svdDeletionResult &other)=delete | |
| Results cannot be copied across the mxlib ABI boundary. | |
| svdDeletionResult & | operator= (const svdDeletionResult &other)=delete |
| Results cannot be copy-assigned across the mxlib ABI boundary. | |
| svdDeletionResult (svdDeletionResult &&other) noexcept | |
| Move owned result storage from another result. | |
| svdDeletionResult & | operator= (svdDeletionResult &&other) noexcept |
| Replace this result by moving owned storage from another result. | |
| MXLIB_SVD_DELETION_HEADER_ADAPTER svdDeletionStatus | prepare (Eigen::Index baseRank, Eigen::Index outputRank) |
| Prepare or reuse output storage for a base and requested active output rank. | |
| svdDeletionStatus | status () const noexcept |
| Return the most recent operation status. | |
| svdDeletionBackend | backend () const noexcept |
| Return the backend that produced the current result. | |
| MXLIB_SVD_DELETION_HEADER_ADAPTER svdDeletionConstVectorRef< realT > | singularValues () const noexcept |
| Return an unaligned borrowed view of all baseRank() descending updated singular values. | |
| MXLIB_SVD_DELETION_HEADER_ADAPTER svdDeletionConstVectorRef< realT > | squaredSingularValues () const noexcept |
| Return an unaligned borrowed view of all corresponding descending squared singular values. | |
| MXLIB_SVD_DELETION_HEADER_ADAPTER svdDeletionConstMatrixRef< realT > | rotation () const noexcept |
| Return the preserved-side rotation, with updated directions in columns. | |
| std::int64_t | baseRank () const noexcept |
| Return the base factorization rank for which storage is prepared. | |
| std::int64_t | outputRank () const noexcept |
| Return the requested published rank. | |
| std::int64_t | maximumOutputRank () const noexcept |
| Return the allocated rotation-column capacity for the current base rank. | |
| std::int64_t | clampedEigenvalues () const noexcept |
| Return the number of roundoff-scale negative eigenvalues clamped to zero. | |
| realT | minimumPSDValue () const noexcept |
| Return the smallest pre-clamp eigenvalue from the normalized backend PSD validation core. | |
| MXLAPACK_INT | lapackInfo () const noexcept |
| Return the underlying LAPACK status from the most recent failed query or solve. | |
| mx::math::svdDeletionResult< realT, abiT >::svdDeletionResult | ( | ) |
Construct an empty result.
Definition at line 1669 of file svdDowndate.cpp.
|
default |
Release result storage using mxlib's Eigen allocation configuration.
|
delete |
Results cannot be copied across the mxlib ABI boundary.
| [in] | other | result that copying is forbidden from |
|
defaultnoexcept |
Move owned result storage from another result.
| [in,out] | other | result to move from |
|
noexcept |
Return the backend that produced the current result.
Definition at line 1769 of file svdDowndate.cpp.
References stableCore.
Referenced by mx::math::svdDeletionCore(), mx::math::svdRemoveColumns(), mx::math::svdRemoveRows(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), and unitTest::math_svdDowndate_test::TEST_CASE().
|
noexcept |
Return the base factorization rank for which storage is prepared.
Definition at line 1806 of file svdDowndate.cpp.
Referenced by unitTest::math_svdDowndate_test::TEST_CASE().
|
noexcept |
Return the number of roundoff-scale negative eigenvalues clamped to zero.
Definition at line 1824 of file svdDowndate.cpp.
Referenced by unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), and unitTest::math_svdDowndate_test::TEST_CASE().
|
noexcept |
Return the underlying LAPACK status from the most recent failed query or solve.
Definition at line 1836 of file svdDowndate.cpp.
Referenced by unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), and unitTest::math_svdDowndate_test::TEST_CASE().
|
noexcept |
Return the allocated rotation-column capacity for the current base rank.
Definition at line 1818 of file svdDowndate.cpp.
Referenced by unitTest::math_svdDowndate_test::TEST_CASE(), and unitTest::math_svdDowndate_test::TEST_CASE().
|
noexcept |
Return the smallest pre-clamp eigenvalue from the normalized backend PSD validation core.
A non-positive-semidefinite failure preserves the offending value. An empty stable-core deletion uses one as the vacuous minimum of its zero-dimensional complement core.
Definition at line 1830 of file svdDowndate.cpp.
Referenced by unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), and unitTest::math_svdDowndate_test::TEST_CASE().
|
delete |
Results cannot be copy-assigned across the mxlib ABI boundary.
| [in] | other | result that copy assignment is forbidden from |
|
defaultnoexcept |
Replace this result by moving owned storage from another result.
| [in,out] | other | result to move from |
|
noexcept |
Return the requested published rank.
Definition at line 1812 of file svdDowndate.cpp.
Referenced by mx::math::svdDeletionCore(), mx::math::svdDeletionLeadingCore(), mx::math::svdDeletionStableCore(), mx::math::svdRemoveColumns(), mx::math::svdRemoveRows(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), and unitTest::math_svdDowndate_test::TEST_CASE().
|
inline |
Prepare or reuse output storage for a base and requested active output rank.
Storage grows when required but does not shrink while baseRank is unchanged. Calling this before a hot loop with the largest planned output rank reserves the rotation capacity for later smaller requests.
| [in] | baseRank | number of supplied singular triplets |
| [in] | outputRank | number of updated triplets to publish |
Definition at line 351 of file svdDowndate.hpp.
Referenced by unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), and unitTest::math_svdDowndate_test::TEST_CASE().
|
inlinenoexcept |
Return the preserved-side rotation, with updated directions in columns.
The unaligned borrowed view remains valid until this result is prepared, assigned, moved, or destroyed.
Definition at line 383 of file svdDowndate.hpp.
Referenced by unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), and unitTest::math_svdDowndate_test::TEST_CASE().
|
inlinenoexcept |
Return an unaligned borrowed view of all baseRank() descending updated singular values.
The view remains valid until this result is prepared, assigned, moved, or destroyed.
Definition at line 365 of file svdDowndate.hpp.
Referenced by mx::math::svdDeletionCore(), mx::math::svdDeletionLeadingCore(), mx::math::svdDeletionStableCore(), mx::math::svdRemoveColumns(), mx::math::svdRemoveRows(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), and unitTest::math_svdDowndate_test::TEST_CASE().
|
inlinenoexcept |
Return an unaligned borrowed view of all corresponding descending squared singular values.
The view remains valid until this result is prepared, assigned, moved, or destroyed.
Definition at line 374 of file svdDowndate.hpp.
Referenced by unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), and unitTest::math_svdDowndate_test::TEST_CASE().
|
noexcept |
Return the most recent operation status.
Definition at line 1763 of file svdDowndate.cpp.
References notComputed.
Referenced by unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), unitTest::math_svdDowndate_test::TEST_CASE(), and unitTest::math_svdDowndate_test::TEST_CASE().