Операция с плавающей точкой имеет субнормальные результаты
Эта проверка определяет, дает ли операция с плавающей точкой субнормальный результат.
Субнормальные числа имеют величины меньше, чем наименьшее число с плавающей запятой, которое может быть представлено без ведущих нулей в значении и. Наличие субнормальных чисел указывает на потерю значащих цифр. Эта потеря может накопиться за последующие операции и в конечном счете привести к неожиданным значениям. Субнормальные числа могут также замедлить выполнение на целевых устройствах без аппаратной поддержки.
По умолчанию результаты проверки не отображаются в результатах верификации. Чтобы увидеть результаты проверки, измените значение по умолчанию опции Subnormal detection mode (-check-subnormal)
. Результаты проверки варьируются в зависимости от заданного режима обнаружения. Во всех режимах кроме allow
Чтобы идентифицировать субнормальные результаты, проверьте операции на Subnormal float красного или оранжевого цвета.
Способ | Проверяйте цвета | Поведение после проверки |
---|---|---|
Этот режим обнаруживает вхождение субнормального значения. Этот режим останавливает путь выполнения с субнормальным результатом и препятствует дальнейшему распространению субнормальных значений. Поэтому на практике вы видите только первое вхождение субнормального значения. | Цвет проверки зависит только от результата операции. Проверка помечает операцию, которая имеет субнормальные результаты, даже если эти результаты получены только от субнормальных операндов. Для образца, если | Проверка на блокировку. Если проверка красная, верификация прекращается. Если чек оранжевый, верификация удаляет пути выполнения, содержащие субнормальный результат, из фактора. Для образца всплывающая подсказка результата не показывает субнормальные значения. |
Этот режим подсвечивает все вхождения субнормальных значений. Даже если субнормальный результат исходит из предыдущих субнормальных значений, результат подсвечивается. | Цвет проверки зависит только от результата операции. Проверка помечает операцию, которая имеет субнормальные результаты, даже если эти результаты получены только от субнормальных операндов. Для образца, если | Проверка без блокировки. Проверка продолжается верификация даже если она красная. Если чек оранжевый, верификация не удаляет пути выполнения, содержащие субнормальный результат, из фактора. |
Этот режим подсвечивает первое вхождение субнормального значения. Если субнормальное значение переходит к дальнейшим субнормальным результатам, эти последующие результаты не подсвечиваются. | Цвет проверки зависит от результата операции и значений операнда. Проверка не помечает субнормальный результат, если он происходит только от субнормальных операндов. В этом режиме проверка выполняется следующим образом:
| Проверка без блокировки. Проверка продолжается верификация даже если она красная. Если чек оранжевый, верификация не удаляет пути выполнения, содержащие субнормальный результат, из фактора. |
Если вы принимаете решение проверить на поднормали, можно также определить из всплывающих подсказок, исключает ли область значений переменных субнормальные значения. Например, если подсказки показывают [-1.0 .. -1.1754E-38] or [-0.0..0.0] or [1.1754E-38..1.0]
можно интерпретировать, что переменная не имеет субнормальных значений.
Группа: Численный |
Язык: C | C++ |
Акроним: SUBNORMAL |