My understanding is that one can do fast multiplies by the Q matrix of the QR decomposition because it is represented as a sequence of Householder reflections. I want to compute

(not self-containted; fp is one dimensional) where Q is the result of a call to qr().Q. I’m concerned that, since I subset Q explicitly this loses the benefit.

Should I be concerned? If so, what can I do about it?

I don’t think (Q*fp)[deltai] yields the same result.

I guess I could force the first 2 values of fp to 0; then I think Q*fp does give the result I want.

I think padding the first two entries to be zero would be the most efficient option here: otherwise it has to form Q, which requires applying the reflectors of Q to an identity matrix:

Thank you. After overcoming the fact that my code became so optimized it wouldn’t run at all, I got it to work. The difference was very large, ~8x faster based on the means, considering that is only one part of the calculations. Memory use shows similar improvements.