by Julien Langou » Mon Sep 07, 2009 11:50 am
DGGLSE supports only "one c" and "one d". Since most of the work is in the factorization of the matrices, you are perfectly right that if you have "several c" and "several d", then the interface is not optimal at all. I can put your request on the wish list of LAPACK functionality. It makes complete sense to have the functionality if someone wants it. (The converse is true as well: It would not have made much sense to have the functionality if nobody wants it ... ) Can you send a brief description of your application and why you need this functionality please?
It should be fairly easy to "hack" DGGLSE so that it supports K couples (c,d). I believe all you need to do is to insert a DO loop from line 196 to line 260 of DGGLSE, where the code would loop on each couple (c,d) one at a time. That would be the first step. The second step would be to group the LAPACK function calls so that they handle all the couple (c,d) at once. For example, the first call to DORMQR line 200. You can call K times DORMQR( 'L', 'T', M, 1, MN, ... ) -- this is what you would do with the DO loop -- or you call it once with DORMQR( 'L', 'T', M, K, MN, ... ). Them the same for DTRTRS line 207. Instead of calling K times DTRTRS( 'U', 'N', 'N', P, 1, ...), one would call once DTRTRS( 'U', 'N', 'N', P, K, ... ). Etc.
Julien