Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Проверка double на NaN и Infinity - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Динамическое создание переменных http://www.cyberforum.ru/cpp-beginners/thread1235890.html
Есть строка введённая с клавиатуры пользователем, к примеру такая: "a+b+c", как создать динамические переменные, допустим типа int a, b, c?
C++ Описание заголовочного файла synchapi.h сабж Нужно на русском. Есть такие ресурсы? Всё облазил... http://www.cyberforum.ru/cpp-beginners/thread1235888.html
C++ Освобождение памяти в деструкторе класса
Перечитал по этому поводу много информации. Главный вопрос. Есть класс в котором происходит динамическое выделение памяти. В конструкторе я эту память хочу удалить. Пробовал много методов вроде...
C++ Работа с командной строкой. Отрытие вызываемых файлов
Добрый вечер форумчане. Составлена программа с аргументами командной строки. Hello, word C:\WINDOWS\system32\notepad.exe D:\comp11.txt D:\forma.exe И в свойствах проекта вот этот командный...
C++ Найти ошибку при освобождении памяти http://www.cyberforum.ru/cpp-beginners/thread1235862.html
Тут используется полиморфизм правильно, а вот очистка памяти в первом вроде правильно, а во втором нет...( Правильно такое или нет? FirstClass **arr; arr = new FirstClass*; FirstClass *c =...
C++ Составить алгоритм обхода игрового поля Вобщем, такая тема: Дан двумерный массив чисел 12х12, который содержит числа от 0 до 5. 0 - дырка 1 - мое местоположение( при запуске приложения ) 2 - черный ящик( -здоровье ) 3 - красный... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
17802 / 6008 / 387
Регистрация: 30.03.2009
Сообщений: 16,511
Записей в блоге: 26
30.07.2014, 11:20
http://www.cplusplus.com/reference/cmath/isinf/

Судя по всему, сие есть часть стандарта C99 и C++11. Думаю, это объясняет разницу между msvs-2012 и msvs-2013: более ранняя версия не поддерживает c++11, а c99, насколько я слышал, они не поддерживают вообще

Добавлено через 12 минут
Вот реализация, выдранная из glibc-2.7 для i386. Можешь втащить к себе, если с библиотечной реализацией не разберёшься

C
typedef union
{
  double value;
  struct
  {
    u_int32_t lsw;
    u_int32_t msw;
  } parts;
} ieee_double_shape_type;
 
#define EXTRACT_WORDS(ix0,ix1,d) \
do {                             \
  ieee_double_shape_type ew_u;   \
  ew_u.value = (d);              \
  (ix0) = ew_u.parts.msw;        \
  (ix1) = ew_u.parts.lsw;        \
} while (0)
 
int
__isinf (double x)
{
        int32_t hx,lx;
        EXTRACT_WORDS(hx,lx,x);
        lx |= (hx & 0x7fffffff) ^ 0x7ff00000;
        lx |= -lx;
        return ~(lx >> 31) & (hx >> 30);
}
 
int
__isnan (double x)
{
    int32_t hx,lx;
    EXTRACT_WORDS(hx,lx,x);
    hx &= 0x7fffffff;
    hx |= (u_int32_t)(lx|(-lx))>>31;
    hx = 0x7ff00000 - hx;
    return (int)(((u_int32_t)hx)>>31);
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru