Бесконечности (-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 -sources file_name -check-infinite forbid
Пример (сервер программы автоматического доказательства кода): polyspace-code-prover-server -sources file_name -check-infinite forbid

Смотрите также

Аналитические опции Polyspace

Результаты Polyspace

Введенный в R2016a