NaNs (-check-nan)

Задайте, как обработать операции с плавающей точкой тот результат в NaN

Описание

Эта опция влияет на анализ Программы автоматического доказательства Кода только.

Задайте, как анализ должен обработать операции с плавающей точкой тот результат в NaN.

Установите опцию

Пользовательский интерфейс (только десктопные решения): В вашей настройке проекта опция находится на узле Check Behavior. Смотрите Зависимости для других опций, которые необходимо также включить.

Командная строка и файл опций: Используйте опцию -check-nan. Смотрите информацию о командной строке.

Почему использование эта опция

Используйте эту опцию, чтобы включить обнаружение операций с плавающей точкой тот результат в NaN-s.

Если вы указываете, что анализ должен рассмотреть неличные плавания, по умолчанию, анализ не отмечает эти операции. Используйте эту опцию, чтобы обнаружить эти операции при тихом слиянии неличных плаваний.

Настройки

Значение по умолчанию: allow

allow

Верификация не производит проверку на операции.

Например, в следующем коде, нет никакой проверки Invalid operation on floats.

double func(void) {
    double x=1.0/0.0;
    double y=x-x;
    return y;
}
warn-first

Верификация производит проверку на операции. Проверка определяет, является ли результатом операции NaN, когда самими операндами не является NaN. Например, проверка отмечает операцию val1 + val2 только если результатом может быть NaN когда оба val1 и val2 не NaN. Верификация не отключает поток выполнения, который производит NaN.

Если верификация обнаруживает операцию, которая производит NaN как единственный возможный результат на всех путях к выполнению, и самими операндами никогда не является NaN, проверка является красной. Если операция может потенциально привести к NaN, проверка является оранжевой.

Например, в следующем коде, существует не блокирующаяся проверка Invalid operation on floats на NaN.

double func(void) {
    double x=1.0/0.0;
    double y=x-x;
    return y;
}

Даже при том, что Invalid operation on floats проверяет - операция является красной, верификация продолжается. Например, зеленая проверка Non-initialized local variable появляется на y в return оператор.

forbid

Верификация производит проверку на операции и отключает поток выполнения, который производит NaN.

Если проверка является красной, верификация не продолжается для остающегося кода в том же осциллографе как проверка. Если проверка является оранжевой, верификация продолжает, но удаляет из фактора значения переменных, которые произвели NaN.

Например, в следующем коде, существует блокирующаяся проверка Invalid operation on floats на NaN.

double func(void) {
    double x=1.0/0.0;
    double y=x-x;
    return y;
}

Верификация останавливается, потому что Invalid operation on floats проверяет - операция является красной. Например, проверка Non-initialized local variable не появляется на y в return оператор.

Проверка Invalid operation on floats на NaN также появляется на / операция и является зеленой.

Зависимости

Чтобы использовать эту опцию, необходимо включить режим верификации, который включает бесконечности и NaNs. Смотрите Consider non finite floats (-allow-non-finite-floats).

Информация о командной строке

Параметр: -check-nan
Значение: allow | warn-first | forbid
Значение по умолчанию: allow
Пример (Программа автоматического доказательства Кода): Polyspace Code Prover - источники file_name - проверка-nan запрещает
Пример (Сервер Программы автоматического доказательства Кода): сервер программы автоматического доказательства полипробела кода - источники file_name - проверка-nan запрещает
Введенный в R2016a