https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121615
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- Oops, that lost the call to __complex_abs for the C99 case, it should be: template<typename _Tp> inline _Tp __complex_abs(const complex<_Tp>& __z) { return hypot(__z.real(), __z.imag()); } template<typename _Tp> inline _Tp abs(const complex<_Tp>& __z) { return __complex_abs(__z.__rep()); } So that we only use hypot when we can't use cabs, cabsl, or cabsf.