2015-03-12 2 views
0

Я написал код с использованием Eigen в C++, который возвращает некоторые NaN, и все это взрывается. Когда я пытаюсь распечатать переменные (с потоком) и трассировать обратно туда, откуда возникла NaN, внезапно NaNs не появляются, и расчет завершается успешно. Кто-нибудь знает, почему это произойдет? Я не думаю, что создание большого количества случайных файлов .txt является хорошим решением!Eigen C++ NaN исчезают, когда я пытаюсь их распечатать

На всякий случай это применимо, матрицы, которые я использую, являются разреженными (и большими) и ранее использовались в коде и перезагружались с помощью .setZero() перед поверхностью NaN.

+0

Ваш код имеет неопределенное поведение. Почини это. –

+0

Посмотрите, есть ли у вас неинициализированные переменные. Если ваш код работает, а затем не удается в следующий раз, когда вы попробуете его снова, это нужно проверить. –

+0

@ user3670482 Мне было так долго, чтобы найти его, но ты совершенно спокоен. Один из моих векторов не инициализировал ноль, когда я думал, что это так. Спасибо за ваш совет. – NickB

ответ

0

Проверьте неинициализированные переменные.

Довольно часто, если ваша программа работает в соответствии с ожиданиями, а затем в следующий раз, когда вы пытаетесь запустить ее снова для одного и того же рабочего процесса, причиной является неинициализированные переменные. Конечно, есть много других вещей, которые могут вызвать это, но неинициализированные переменные являются очень распространенной причиной ошибок, подобных вашим.

Смежные вопросы