Improved lapacke binding code for HouseholderQR and PartialPivLU

This MR replaces the binding macros with C++ code for HouseholderQR and PartialPivLU and factors out common binding code into a new file.

For the remaining Lapacke bindings, I'm not so sure what the best way to handle them is, since they do explicitly specialize functions of an existing template class instead of the class itself. Maybe refactor the class so that the computation is separated from the interface. Currently, ColPivHouseholderQR allocates working arrays m_colsTranspositions, m_temp, m_colNormsUpdated, m_colNormsDirect which are unused in the Lapacke code path. Encapsulating this in a separate subobject that handles the computations would mean we could get rid of this wasted space in the Lapacke binding, and potentially instead allocate a buffer that is used by the lapacke functions as the work space.

Merge request reports

Loading