Если FLT_HAS_SUBNORM равен 0, то должно ли преобразование (с плавающей запятой)1E-45 возвращать 0x1p-149?

Простой вопрос: если 0, то вернется ли преобразование?

Причина вопроса: ISO / IEC 9899:2011 (E) определяет поведение / только WRT операций с плавающей точкой . Согласно H.2.3.2 (операции с плавающей запятой) преобразование между точностями с плавающей запятой (термин, взятый из F.3 «Операторы и функции») не является операцией с плавающей запятой. Следовательно, поведение, указанное для FLT_HAS_SUBNORM / DBL_HAS_SUBNORMне имеет значения для преобразования точности с плавающей запятой . Отсюда вывод, что конверсия должна возвращать 0x1p-149. Правильно ли это заключение?

UPD: Объяснение причин этих вопросов: в настоящее время у меня есть тесты, которые проверяют правильность результатов, генерируемых операциями FP (включая преобразования). Я запускаю эти тесты в средах с и с FLT_HAS_SUBNORM is -1. Основная проблема заключается в том, что при некоторых комбинациях параметров компилятора некоторые тесты не работают. Например: под FLT_HAS_SUBNORM is 0:

  • HW (FPU) FP: возвращает 0x1p-149f
  • SW (libfp) FP: (float)1E-45 возвращается

Контрольное значение в тесте: 0.0f.

Поэтому необходимо понимать, если:

  • В тесте есть ошибка (написано неправильно: например, нет проверки на HAS_SUBNORM); или же
  • В компиляторе есть ошибка; или же
  • SW (libfp) FP имеет ошибку; или же
  • HW (FPU) FP имеет ошибку (ошибка в симуляторе; тоже бывает); или же
  • Все возможные комбинации предыдущих случаев.

Первый шаг - прочитать стандарты (C / IEEE 754) и попытаться ответить на открытые вопросы. Однако оказывается, что многие аспекты FP явно не определены. Следовательно, каков наиболее рациональный способ справиться с ситуацией с существующими неудачными тестами?

Также обратите внимание, что в идеале тесты должны быть написаны независимо и «общим способом» (изучение функций системы / среды: проверка макросов функций, проверка пределов и т. Д.), То есть без знания конкретных деталей FP конкретного компилятора. используется для вычислений FP (или как люди называют это средой FP ).

0 ответов

Другие вопросы по тегам