Separate imag and complex types - Origins

What is history of providing purely imaginary numbers as separate types?

I could not initially see the point when I started using Chapel a decade ago. But, once I started porting old C++ code which used complex numbers, I started to appreciate having the compile-time distinction. It will often permit optimizations of expressions to the point of having overloaded routines that are much faster for the purely imaginary imag(w) numbers than the version for complex(w) numbers. Whose great idea was that?

Just curious

Hi Damian —

Glad you're enjoying 'imag' as a distinct type. I believe I can claim a
good deal of the credit here, along with those who agreed to proceed with
it at the time we were designing the language.