2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Баг с -nan(ind) в MVS 2017
Сообщение14.03.2019, 14:46 
Аватара пользователя


05/06/08
477
Не знаю, как отловить. На ровном месте (практически отключил все вычисления) в массиве появляется такая хрень от дебагера:
Код:
+      dxdy   {dx=-nan(ind) dy=-nan(ind) }   

Похоже на inf или что-то другое?
Главное, что не срабатывает моя ловушка:

Код:
            if (dxdy.dx < b1[p00])dxdy.dx = b1[p00];
            if (dxdy.dy > b1[p00])dxdy.dy = b1[p00];
            if(fabs(dxdy.dx) > 1 )
            {
               ;/// должно вылететь сюда при dxdy.dx=-nan(ind)
            }

p00 - некий индекс 0т 0 до конца массива. Как видно из кода dxdy.dx не может быть больше 1, однако дебагер выдает
именно
Код:
dxdy   {dx=-nan(ind) dy=-nan(ind) }

В конце цикла. Не попадая в ловушку.
Что делать?
Заранее спасибо за помощь.

 Профиль  
                  
 
 Re: Баг с -nan(ind) в MVS 2017
Сообщение14.03.2019, 15:05 
Заслуженный участник
Аватара пользователя


16/07/14
9166
Цюрих
Что такое NaN вы знаете? Он не больше 1.

 Профиль  
                  
 
 Re: Баг с -nan(ind) в MVS 2017
Сообщение14.03.2019, 16:36 


11/12/14
893
https://en.cppreference.com/w/cpp/numeric/math/isnan

 Профиль  
                  
 
 Re: Баг с -nan(ind) в MVS 2017
Сообщение14.03.2019, 18:34 
Аватара пользователя


05/06/08
477
mihaild в сообщении #1381844 писал(а):
Что такое NaN вы знаете? Он не больше 1.

Спасибо, теперь узнал. За 20 лет программирования ни разу не сталкивался. :)
Однако из моего кода следует, что:

1. Это нечисло либо на о-малое больше нуля, либо на о-малое меньше единицы.
2. Каким-то образом попадает в массив float данных, с которыми у меня раньше в аналогичном коде проблем не было.

Более того, это недочисло рассматривается всеми моими последующими алгоритмами, как максимум или минимум.
для данных [0,1]. Что для моего алгоритма принципиально. Увы. Посмотрим, что можно сделать.
В любом случае большое спасибо всем за информацию. Данные гигобайтные, а посему отладка идет на визуализации промежуточных результатов и такие баги очень болезнены.

 Профиль  
                  
 
 Re: Баг с -nan(ind) в MVS 2017
Сообщение14.03.2019, 18:49 
Заслуженный участник
Аватара пользователя


16/07/14
9166
Цюрих
MGM в сообщении #1381893 писал(а):
Это нечисло либо на о-малое больше нуля, либо на о-малое меньше единицы
Нет.
MGM в сообщении #1381893 писал(а):
Более того, это недочисло рассматривается всеми моими последующими алгоритмами, как максимум или минимум.
Вообще все операции сравнения с NaN возвращают false.

Я бы советовал попытаться найти, откуда оно берется (самые популярные варианты - $\frac{0}{0}$, $\text{inf} - \text{inf}$ и что-то подобное), как правило его появление означает что где-то раньше что-то считается неправильно.

 Профиль  
                  
 
 Re: Баг с -nan(ind) в MVS 2017
Сообщение14.03.2019, 19:15 
Аватара пользователя


05/06/08
477
Решил. Раньше программа интерполировала заведомо неопределенные области. Сейчас я эту интерполяцию не делал по причине отладки.
Как оказалось, файлы данных, считываемый с диска использовали именно этот формат для неопределенных чисел. ((((

-- Чт мар 14, 2019 20:23:43 --

mihaild в сообщении #1381899 писал(а):
MGM в сообщении #1381893 писал(а):
Это нечисло либо на о-малое больше нуля, либо на о-малое меньше единицы
Нет.
MGM в сообщении #1381893 писал(а):
Более того, это недочисло рассматривается всеми моими последующими алгоритмами, как максимум или минимум.
Вообще все операции сравнения с NaN возвращают false.

Я бы советовал попытаться найти, откуда оно берется (самые популярные варианты - $\frac{0}{0}$, $\text{inf} - \text{inf}$ и что-то подобное), как правило его появление означает что где-то раньше что-то считается неправильно.

Все таки false

 Профиль  
                  
 
 Re: Баг с -nan(ind) в MVS 2017
Сообщение14.03.2019, 19:36 
Заслуженный участник
Аватара пользователя


16/07/14
9166
Цюрих
MGM в сообщении #1381907 писал(а):
Возвращает truе, что следует из неудачного эксперимента.
Перепроверьте.
IEEE-754-2008 писал(а):
Every NaN shall compare unordered with everything, including itself
Это реализовано в процессоре, и я очень сомневаюсь что в MSVS используется софтверная реализация, не удовлетворяющая стандарту.

 Профиль  
                  
 
 Re: Баг с -nan(ind) в MVS 2017
Сообщение14.03.2019, 20:05 
Аватара пользователя


05/06/08
477
mihaild в сообщении #1381914 писал(а):
MGM в сообщении #1381907 писал(а):
Возвращает truе, что следует из неудачного эксперимента.
Перепроверьте.
IEEE-754-2008 писал(а):
Every NaN shall compare unordered with everything, including itself
Это реализовано в процессоре, и я очень сомневаюсь что в MSVS используется софтверная реализация, не удовлетворяющая стандарту.

faulse, конечно.
Просто у меня классический min max с инициализацией по первому элементу. Который как раз и не определен.
Спасибо еще раз.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: worm2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group