imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 16.07.2004, 13:37     # 1
pva++
Guest
 
Сообщения: n/a

Как проверить double==NaN?

Использую NaN для разметки области определения дырявой функции на плоскости. Думал, что операция типа
Код:
double f = numeric_limits<double>::quiet_NaN();
bool test = (0<f && f<=0);
мне поможет, но компилятор посчитал меня идиотом и оптимизировал test=false;
Как на C++ проверить double==NaN?
 
Старый 17.07.2004, 21:48     # 2
Tyler Derden
Guest
 
Сообщения: n/a

Воспользуйся функцией _isnan из библиотеки float.h:
int _isnan( double x );
_isnan returns a nonzero value (TRUE) if the argument x is a NaN; otherwise it returns 0 (FALSE).
 
Старый 17.07.2004, 23:59     # 3
Drakosha
Full Member
 
Аватар для Drakosha
 
Регистрация: 16.10.2002
Адрес: ArchLinux, Internet
Сообщения: 557

Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)
или

#include <math.h>

int isinf(double value);

int isnan(double value);

int finite(double value);
Drakosha вне форума  
Старый 19.07.2004, 13:08     # 4
pva++
Guest
 
Сообщения: n/a

Воспользовался, работает , спасибо . Кстати, заметил, что с битовой маской вместо NaN всё быстрее получается, если NaN-ов много. Он что, прерывание (или исключение вызывает)?
 


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 12:15.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.