Hi Dan,
Theoretically, you can change the definition of magmaDoubleComplex in magma_types.h (
https://bitbucket.org/icl/magma/src/3bec2af7a08f32d78e413bf4203a64532764460e/include/magma_types.h#lines-97)
However, this will cause several issues with MAGMA's math macros, and generate tons of compiler warnings since MAGMA's interface is C and
many routines will now include non-C-friendly types.
In the initial stages of the ongoing SYCL/Intel GPU port, we used std::complex because that is what oneMKL uses. However, we recently changed
it to use a C-friendly struct, instead. If you look at the commit that made this change, you can see some of the things we had to change when using
with the `*=` operator in zlascl, for example. This occurs when the std::complex function is not a template function; then the compiler doesn't know
whether to prefer MAGMA's non-template function or std::complex.
Finally, a big issue with changing MAGMA's complex type is all the places that it interacts with cuBLAS, which would require casting. In the updated SYCL
any more questions you run into based on my experience working with the SYCL branch. But depending on your code, it may still be a lot simpler to
build MAGMA with cuDoubleComplex, then do your own casting to magmaDoubleComplex/cuDoubleComplex when calling MAGMA.
As MAGMA has always had a C interface, we don't currently have plans to officially support std::complex.
-- Natalie