IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Как проверить double==NaN? (https://www.imho.ws/showthread.php?t=64350)

pva++ 16.07.2004 13:37

Как проверить double==NaN?
 
Использую NaN для разметки области определения дырявой функции на плоскости. Думал, что операция типа
Код:

double f = numeric_limits<double>::quiet_NaN();
bool test = (0<f && f<=0);

мне поможет, но компилятор посчитал меня идиотом и оптимизировал test=false;
Как на C++ проверить double==NaN?

Tyler Derden 17.07.2004 21:48

Воспользуйся функцией _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).

Drakosha 17.07.2004 23:59

или

#include <math.h>

int isinf(double value);

int isnan(double value);

int finite(double value);

pva++ 19.07.2004 13:08

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


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

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