1.#qnan0 во float

Доброго времени суток, товарищи!

Столкнулся с проблемой, когда в некоторых float-переменных после прогона через gpu лежит значение 1.#qnan0. В каких случаях возможно такое поведение? Есть подозрения на переполнение, но на цпу те же самые значения гоняются отлично.

Forums: 

Инициализация происходит.

Инициализация происходит. Есть большая структура с float'ами. Один из них (density) вот так валится.
Критическая строчка:

  1. Tensor2Gen viscosity = n->tStress * (1 / sqr(n->density)) + p.tStress * (1 / sqr(p.density));

Меняю на

  1. Tensor2Gen viscosity = n->tStress * (1 / (isnan(n->density) || isinf(n->density) || (n->density == 0) ? 54 : n->density)) + p.tStress * (1 / (isnan(p.density) || isinf(p.density) || (p.density == 0) ? 54 : p.density));

54 - среднее значение. Качество вычислений, как вы поняли, ->0, но, тем не менее, позволяет увидеть адекватный процесс=)
В обоих вариантах полный фейл - в результате полный кавардак.
Но вот если втупую прописать 1/54, то всё нормально работает.
Казалось бы, все нужные проверки есть.