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, Супермодераторы



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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