-check-infinite
)Задайте, как обработать операции с плавающей точкой тот результат в бесконечности
Эта опция влияет на анализ Программы автоматического доказательства Кода только.
Задайте, как анализ должен обработать операции с плавающей точкой тот результат в бесконечностях.
Пользовательский интерфейс (только десктопные решения): В вашей настройке проекта опция находится на узле Check Behavior. Смотрите Зависимости для других опций, которые необходимо также включить.
Командная строка: Используйте опцию -check-infinite
. Смотрите информацию о командной строке.
Используйте эту опцию, чтобы включить обнаружение операций с плавающей точкой тот результат в бесконечностях.
Если вы указываете, что анализ должен рассмотреть неличные плавания, по умолчанию, анализ не отмечает эти операции. Используйте эту опцию, чтобы обнаружить эти операции при тихом слиянии неличных плаваний.
Значение по умолчанию: allow
allow
Верификация не производит проверку на операции.
Например, в следующем коде, нет никакой проверки Overflow.
double func(void) {
double x=1.0/0.0;
return x;
}
warn-first
Верификация производит проверку на операции. Проверка определяет, бесконечен ли результат операции, когда сами операнды весьма конечны. Верификация не отключает поток выполнения, который производит бесконечность.
Если верификация обнаруживает операцию, которая производит бесконечность как единственный возможный результат на всех путях к выполнению, и сами операнды никогда не бесконечны, проверка является красной. Если операция может потенциально привести к бесконечности, проверка является оранжевой.
Например, в следующем коде, существует не блокирующаяся проверка Overflow на бесконечность.
double func(void) { double x=1.0/0.0; return x; }
Даже при том, что Overflow проверяет /
операция является красной, верификация продолжается. Например, зеленая проверка Non-initialized local variable появляется на x
в return
оператор.
forbid
Верификация производит проверку на операции и отключает поток выполнения, который производит бесконечность.
Если проверка является красной, верификация не продолжается для остающегося кода в том же осциллографе как проверка. Если проверка является оранжевой, верификация продолжает, но удаляет из фактора значения переменных, которые произвели бесконечность.
Например, в следующем коде, существует блокирующаяся проверка Overflow на бесконечность.
double func(void) {
double x=1.0/0.0;
return x;
}
Верификация останавливается, потому что Overflow проверяет /
операция является красной. Например, проверка Non-initialized local variable не появляется на x
в return
оператор.
Чтобы использовать эту опцию, необходимо включить режим верификации, который включает бесконечности и NaNs. Смотрите Consider non finite floats (-allow-non-finite-floats)
.
Параметр: -check-infinite |
Значение: allow | warn-first | forbid |
Значение по умолчанию: allow |
Пример (Программа автоматического доказательства Кода): Polyspace Code Prover - источники |
Пример (Сервер Программы автоматического доказательства Кода):
сервер программы автоматического доказательства полипробела кода - источники |