Под версией g ++ версии 4.8.0 (32-разрядная версия) квадратный корень -0.0 (двоичное представление 0x8000000000000000) - это NAN. Но я мог бы поклясться, что более ранние версии (я не уверен, какой, но в последний раз, когда я запускал весь комплект тестов), возвращался просто 0.0, что кажется мне более разумным.Квадратный корень отрицательного нуля
Это право? Что-то в стандарте C++ изменилось, или это изменение g ++?
Я думаю, что технически GCC - это просто компилятор и компоновщик, а не все стандартные библиотеки. В документации GCC говорится, что пользователь должен предоставить некоторые из средств библиотеки. Таким образом, GCC не пытается предоставить 'sqrt', поэтому он не выдаст правильный результат для' sqrt (-0.) '. В MinGW библиотеки поступают из среды Windows. –
Из [документации GCC] (http://gcc.gnu.org/onlinedocs/gcc-4.8.1/gcc/Standards.html#Standards): «GCC не предоставляет библиотечные возможности, необходимые только для размещенных внедрений, а также но все средства, требуемые C99 автономных реализаций; для использования возможностей размещенной среды вам нужно будет найти их в другом месте (например, в библиотеке GNU C) ». –
Спасибо за это! Я начинал задаваться вопросом, представлял ли я себе более раннее поведение. – TonyK