Нашел тут ошибку в реализации функции proj (
https://connect.microsoft.com/VisualStudio/feedback/details/1364670)
// TEMPLATE FUNCTION proj
_TMPLT(_Ty) inline
_CMPLX(_Ty) proj(const _CMPLX(_Ty)& _Left)
{ // return complex projection
return (_CMPLX(_Ty)(
_CTR(_Ty)::_Isinf(real(_Left)) || _CTR(_Ty)::_Isinf(real(_Left))
? _CTR(_Ty)::_Infv(real(_Left)) : real(_Left),
imag(_Left) < 0 ? -(_Ty)0 : (_Ty)0));
}
Должно быть что-то навроде
// TEMPLATE FUNCTION proj
_TMPLT(_Ty) inline
_CMPLX(_Ty) proj(const _CMPLX(_Ty)& _Left)
{ // return complex projection
if (_CTR(_Ty)::_Isinf(real(_Left)) || _CTR(_Ty)::_Isinf(imag(_Left)))
return _CMPLX(_Ty)(_CTR(_Ty)::_Infv(real(_Left)),
imag(_Left) < 0 ? -(_Ty)0 : (_Ty)0);
else
return _Left;
}
Кстати, та же самая функция сломана и в gcc, если не определено _GLIBCXX_USE_C99_COMPLEX
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61761
Это судьба.