Pointer mapping between real and complex arrays

It would certainly need to be used for complex(c_float) and complex(c_double). It does seem complicated to have a compiler with multiple layouts potentially requiring conversions back and forth with an associated runtime penalty.

There were some lengthy discussions on the topic of complex storage before:

Split storage is not that uncommon in other software products: