Должен ли я использовать NaN с плавающей запятой или с плавающей запятой + bool для набора данных, который содержит недопустимые значения?

У меня есть большой объем данных для обработки с использованием сложных математических операций над каждым набором данных.Многие из них аналогичны обработке изображений. Однако, поскольку эти данные считываются непосредственно с физического устройства, многие значения пикселей могут быть недействительными.

Это делает свойство NaN представлять значения, которые не являются числами, и распространение на арифметические операции очень убедительным. Однако это также требует отключения некоторых оптимизаций, таких как gcc -ffast-math, плюс нам нужна кроссплатформенность. Наш текущий дизайн использует простую структуру, которая содержит значение с плавающей запятой и логическое значение, указывающее достоверность.

Хотя кажется, NaN был разработан с учетом этого использования, другие думают, что это доставляет больше хлопот, чем того стоит. Есть ли у кого-нибудь совет, основанный на их более тесном опыте работы с IEEE754 с учетом производительности?

23
задан Community 23 May 2017 в 12:19
поделиться