cpp/modmesh/linalg/lu_factorization.hpp implemented LU-with-partial-pivoting as a class template modmesh::detail::Lu<T> which was really a namespace of static methods. Resultant and intermediate data are not kept in a data object for reuse. solve()/inv() reran the O(n^3) algorithm factorize() unnecessarily.
The class template should be made a stateful data object to keep the expensively calculated buffers. Owners of the Lu data object determine how to use the data. The class template should be pulled up from detail and use a more distinguishable name.
This issue is to follow up on PR #735.
cpp/modmesh/linalg/lu_factorization.hppimplemented LU-with-partial-pivoting as a class templatemodmesh::detail::Lu<T>which was really a namespace ofstaticmethods. Resultant and intermediate data are not kept in a data object for reuse.solve()/inv()reran the O(n^3) algorithmfactorize()unnecessarily.The class template should be made a stateful data object to keep the expensively calculated buffers. Owners of the
Ludata object determine how to use the data. The class template should be pulled up fromdetailand use a more distinguishable name.This issue is to follow up on PR #735.