Christian and all, Again sorry for taking so long to working on your patch. Your Level-2 based complex QR has been added to GSL, and I have also just added the recursive Level-3 complex QR algorithm today. I recommend using this interface instead of the Level-2 version for speed.
So now GSL has fast (Level-3) versions of LU, Cholesky and QR, and each has real and complex interfaces. Enjoy, Patrick On 6/3/20 4:52 AM, Christian Krueger wrote: > Hi Patrick, > > I don't want to insist on getting my patches introduced. But as I have, > meanwhile, learned a bit more about git and such, I thought I would make > my patch more easily accessible. I've merged my changes onto the current > git commit (as of today -- bb7f532c) and attach two clean patches (one > for the Householder fix and one for the complex QR) that could be applied. > > Cheers, > Christian > > > On 11/27/17 10:34 PM, Patrick Alken wrote: >> Hi Christian, >> >> This should be very useful. I will take a look at your code as soon >> as I can, though it may be a while as I am very busy with other things >> at the moment. I will add this to the bug tracker so it isn't lost. >> >> Thanks, >> Patrick >> >> On 11/27/2017 08:34 AM, Christian Krueger wrote: >>> Hi, >>> >>> I was looking for the QR decomposition for complex-valued matrices. As >>> GSL does not provide this yet, I have copied the code for the >>> real-valued QR and modified it to handle complex-valued matrices. >>> >>> As I've seen in the archive that this feature has been requested a few >>> times already, I am happy to share it with everyone who wants to use it. >>> My github repository can be found at: >>> https://github.com/mangroveck/gsl-qr-complex-devel.git >>> >>> The file linalg/qrc.c is essentially a copy of the file linalg/qr.c and >>> provides a bunch of gsl_linalg_complex_QR_* functions. I've had to add >>> "_complex" to the function calls and sometimes take the conjugate of tau >>> when calling the householder-functions but the whole process was fairly >>> straight-forward and the decomposition works. >>> >>> * My repository also includes my patch for the >>> gsl_linalg_complex_householder_hv() function to handle the N=1 case. >>> (I've just reported the bug on the bug-list). >>> * I've added various tests to the file linalg/test.c to test the new >>> gsl_linalg_complex_QR_* functions (in the same style as the tests for >>> the real-valued QR decomp). >>> * I've also adjusted the header file linalg/gsl_linalg.h and the file >>> Makefile.am >>> >>> The only exception is the function gsl_linalg_complex_QR_update() which >>> I haven't adjusted yet as it requires Givens rotations and they don't >>> take complex values yet (within GSL). All other functionality from qr.c >>> is now available for complex values, too. >>> >>> If it helps, I'm happy for this code to be included in GSL. >>> >>> Christian >>> >>> >> >> >> >>