Hi all, FYI there is a new branch on the GSL git repository called 'cplx'. In this branch you will find that you can use gsl_complex as a native C99 complex double type, if you #include <complex.h> prior to including <gsl/gsl_complex.h>. This is possible because the gsl_complex type is binary compatible with complex double. So basically you can add/multiply/etc gsl_complex variables without needing to call the gsl_complex_math routines now.
Many people have requested something like this over the years, so I am finally getting around to doing it. Right now, this branch is experimental, I am still working on writing some unit tests, and also documentation. But I have been using it myself for a while and things are working well. The main issue right now, is you cannot do things like: gsl_complex z; GSL_REAL(z) = a; which you can do with the original implementation. I don't know how to define a macro which can do this with the C99 standard, although there are non-portable GNU extensions which can do this. But otherwise, everything should work as expected. If interested, please try out the new branch and report back with successes or failures. Best, Patrick