Reworked implementation

Reworked implementation, and also added Complex32. The "convenience"
functions are only for double-precision complex, because inline
functions with member constraints don't work.

I miss C++ templates.