Известно, что форматы чисел с плавающей точкой предусматривают наличие отрицательного нуля. Свойства этого числа таковы, что
Код:
(-0==0)=true;
1/(-0)=-inf;
В общем, практически, отрицательный ноль мало чем отличается от положительного. Из за этого, возникает проблема с его идентификацией.
Истинный результат проверки
Код:
if (x==-x)
свидетельствует о том, что x=0 или x=-0, и не позволяет отличить 0 от -0.
В языке С была функция signbit(), позволяющая это сделать, но компилятор VC2010 пишет, что идентификатор не найден (math.h включена).
В связи с этим возникает вопрос, что signbit() теперь уже не поддерживается? Из материалов, почерпнутых из сети, можно сделать смутные выводы о том, что это зависит от конкретного компилятора.
Если она не поддерживается, есть ли какие то альтернативные пути идентификации отрицательного нуля?