As you mentinon it if have missed the specilization at the end of std_complex.h. Sorry. I still think that we should have and other implementation for complex<floating_point>, but I cannot change the code of __complex__ T in the complier.
Interestingly, it looks like the discussed improved algorithm is *already* implemented, just not used!
Have a look to expand_complex_division in gcc/tree-complex.c, then gcc/toplev.c for flag_complex_divide_method.
Andreas, just for curiosity, are you willing to rebuild your gcc with flag_complex_divide_method = 1 and report???
Thanks, Paolo.