Чтобы найти причину того, что переменные с плавающей запятой устанавливаются в NaN в моей программе на C ++, я включил исключения с плавающей запятой, например:
#include <fenv.h>
feenableexcept(FE_INVALID | FE_OVERFLOW);
Я знаю, что это работает, потому что когда я пишу:
int val = 0.0/0.0;
в моей программе Возникает исключение с плавающей запятой. Но NaN "распространяются" через вычисления с плавающей запятой в моей программе, и я понятия не имею, какая переменная установлена в NaN первой.
Какие существуют причины, по которым переменная имеет значение NaN, которые не вызывают исключения с плавающей запятой?