Согласно стандарту С++ 11 [c.math], заголовок <cmath>
совпадает с заголовком библиотеки стандартного C <math.h>
.
(Конечно, есть несколько отличий, --- пространство имен, перегрузки и т.д., Но здесь их можно игнорировать.)
И согласно стандарту приложения C99 F: "Реализация, которая определяет __STDC_IEC_559__
, должна соответствовать спецификациям в" приложении F.
Ex. atan2
может вызвать ошибку домена, если оба аргумента равны нулю, но не должны, если определено __STDC_IEC_559__
.
В C99 многие поведение также зависит от того, определена ли __STDC_IEC_559__
или нет.
Однако, похоже, что __STDC_IEC_559__
не упоминается нигде в стандарте С++ 11.
Если да, то реализация С++ соответствует спецификациям в приложении F?
Я думаю, что std::numeric_limits<T>::is_iec559()
является заменой, но, похоже, упоминается только тип.