В общем делаю я аппроксимацию комплексного многочлена методом наименьших квадратов, составил соответствующую матрицу и решаю СЛАУ методом нижней релаксации (на каждой 1000 итерации вывожу разность последних результатов). В конце вывожу отклонения результата от значений в исходных точках. В Debug версии всё нормально, а вот в Release вместо отклонений выводятся NaN, что я делаю не так? Прикрепляю исходники, главный файл ComplexOLS.cpp, все закомментированные функции - для отладки и в общем не важны. Юзаю VS 2017.
Видимо, из-за оптимизации вы вылетаете за пределы максимального/минимального значения числа. Мало того, вместо FPU оптимизатор вполне может вам нагенерить SSE-код.
Так у меня double прописано, а SSE этот тип поддерживает. И ещё сейчас вдруг глючить перестало, х#р знает что.
_qwe8013, Нужны два билда, иначе решение невозможно. У вас в архиве текстовый скрипт, в какой машкод он превратиться предсказать нельзя(каждый компиль своё генерит). И тем более нельзя предсказать что сделает компиль с дебаг опцией. Это не теоретическая задача, а нужно сравнить в отладчике разницу в двух бинарях.
Кстати, а чему у вас DBL_EPSILON равно? Я вот вижу проверку на случай больших чисел, а в случае малых чисел вы нормализацию не делаете, что тоже немного опасно.
SadKo, Код (C): #define DBL_EPSILON 2.2204460492503131e-016 // smallest such that 1.0+DBL_EPSILON != 1.0 Возможно, не подумал об этом, проверю, когда вновь заглючит.