Предположим (избегая ночных дискуссий о том, почему) я использую -ffast-math и моя программа выполняет десять итераций Ньютона. Они либо сходятся, либо к этому моменту произойдет NaN.
Это то, что я хочу проверить. Теперь чат GPT сообщил мне, что основные математические операции по-прежнему будут заполнять биты моего числа (например, float, double, float128,...) битами, которые выражают значение NaN, но любая попытка определить этот факт потерпит неудачу ( и я не могу понять, как это вообще возможно).
Итак, предположим, что программа скомпилирована с -ffast-math и предположим для простоты, что существует двойной x в моем коде, и я хочу узнать, является ли x NaN. Как мне это сделать? Мне кажется, что я мог бы просто реализовать isnan(x), проверив, находится ли x в определенных пределах.
Я также проверил этот вопрос, и Chat-GPT дал мне реализацию для double, но все эти битовые сдвиги могут не работать независимо от платформы, и я не хочу в конечном итоге испытывать необходимость тестировать реализации isnan.
Подробнее здесь: https://stackoverflow.com/questions/784 ... ffast-math