perf(math): route ordinary products through MKL and preserve arithmetic

This commit is contained in:
KOKO\Mimi
2026-10-14 15:09:53 +09:00
parent b4fc1bb54b
commit 59c8e93b07
18 changed files with 793 additions and 169 deletions
+6 -2
View File
@@ -46,8 +46,12 @@ class SparseMatrix {
/// @brief Returns CSR values including preserved structural zeros.
const std::vector<double>& Values() const noexcept;
/// @brief Multiplies this matrix by a dense vector in stable CSR order.
/// @throws std::invalid_argument if the dimensions are incompatible.
/// @brief Multiplies canonical CSR by a dense vector through private MKL.
/// @throws std::invalid_argument if dimensions or CSR are invalid.
/// @throws std::length_error if a size exceeds the backend integer range.
/// @throws std::runtime_error if the sparse backend fails.
/// @note Calls retain no handle; concurrent const calls own their resources.
/// Nonfinite products retain IEEE values for consumer finite validation.
Vector Multiply(const Vector& rhs) const;
/// @brief Validates shape, indices, ordering, and finite CSR values.