2009/2/25 Gael Guennebaud <gael.guennebaud@xxxxxxxxx>
I don't think we want to provide multiple algorithms for the
same matrix sizes.
That were useful to provide a performance comparation between Givens and Gram-Schmidt in simply way, but for all other 'normal' jobs that is actually useless. In this case we can simply write specialized QR class, such as
class QR<Matrix<_Scalar, 2, 2>;
I didn't completely understand what matrix m_qr and Vector m_hCoeffs are and how does QR compute the Q and the R from m_qr. But if m_qr is a matrix with Householder vectors, she's not compatible with a specialized QR for others algorithms, isn't it?
So if we want to specialize some QR class, we must to reimplement _compute(), matrixQ() and matrixR(). Perhaps for small matrices, it makes sense to compute and store directly Q and R at construction-time, with _compute(), without m_q and m_hCoeffs. Or, if we find some method to directly say at construction-time which matrices must be computed, we no longer need m_qr, like gael said.
Before code something, I want to actualy understand all aspects of this QR class.
Last note: don't forget the 2x3 and 3x2 matrices. QR is very useful for non-quadratic matrices.
I'll be offline until saturday.