exponenta event banner

Рассмотрим несграничные поплавки (-allow-non-finite-floats)

Включить режим анализа, включающий бесконечности и NaNs

Описание

Включите режим анализа, который включает бесконечности и NaNs для операций с плавающей запятой.

Задать опцию

Пользовательский интерфейс (только для настольных ПК): в конфигурации проекта параметр находится в узле Проверить поведение.

файл командной строки и параметров: Использовать параметр -allow-non-finite-floats. См. раздел Сведения о командной строке.

Зачем использовать этот параметр

Проверка кода

По умолчанию анализ не включает бесконечности и NaNs. Например, анализ завершает поток выполнения, где происходит деление на ноль, и не считает, что результат может быть бесконечным.

При использовании таких функций, как isinf или isnan и учитывайте бесконечности и NaNs в коде, установите этот параметр. Когда эта опция задана, и, например, происходит деление на ноль, поток выполнения продолжается с бесконечностью в результате деления.

Установите этот параметр отдельно, если вы уверены, что учитывали бесконечности и NaNs в своем коде. Использование только этой опции эффективно отключает многие числовые проверки операций с плавающей запятой. Если вы, как правило, учитывали бесконечности и NaNs, но вы не уверены, что рассмотрели все ситуации, установите следующие дополнительные опции:

Поиск ошибок

Если анализ помечает сравнения с помощью isinf или isnan в качестве мертвого кода используйте этот параметр. По умолчанию анализ Bug Finder не включает бесконечности и NaNs.

Настройки

На

Анализ допускает бесконечности и NaNs. Например, в этом режиме:

  • Анализ предполагает, что операции с плавающей запятой могут давать результаты, такие как бесконечности и NaNs.

    С помощью опций Infinities (-check-infinite) и NaNs (-check-nan), можно выбрать подсвечивание операций, которые дают неокончательные результаты, и остановку потоков выполнения, в которых возникают неокончательные результаты. Эти параметры недоступны для анализа Bug Finder.

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

Выкл. (по умолчанию)

Анализ не допускает бесконечности и NaNs. Например, в этом режиме:

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

  • Анализ проверки кода предполагает, что переменные с плавающей запятой с неизвестными значениями являются переменными с полным диапазоном, но конечными.

  • Анализ Bug Finder показывает сравнения с бесконечностью с помощью isinf как мертвый код.

Совет

  • Стандарт IEEE ® 754 допускает использование специальных величин, таких как бесконечности иNaN для обработки определенных числовых исключений без прерывания кода. Некоторые реализации стандарта C поддерживают бесконечности и NaN.

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

      Например, если деление приводит к бесконечности, в коде указывается альтернативное действие. Поэтому не требуется, чтобы проверка выделяла операции деления, которые приводят к бесконечности.

    • Если компилятор поддерживает бесконечности и NaNs, но вы не уверены, если вы учитываете их явно в своем коде, используйте эту опцию, чтобы проверка включала бесконечности и NaNs. Используйте опции -check-nan и -check-infinite с аргументом warn таким образом, что проверка выделяет операции, которые приводят к бесконечности и NaNs, но не останавливает поток выполнения. Эти параметры недоступны для анализа Bug Finder.

  • При выполнении анализа средства проверки кода (Code Prover) и использовании этой опции средства проверки переполнения, деления на ноль и другие числовые ошибки времени выполнения отключаются. См. раздел Цифровые проверки.

    При выполнении анализа Bug Finder и использовании этой опции:

  • При выборе этой опции количество и тип проверок программы проверки кода в коде могут измениться.

    Например, в следующем примере при выборе опции результаты имеют одну меньшую проверку красного цвета и еще три проверки зеленого цвета.

    Бесконечности и NaNs не допускаютсяДопускаемые бесконечности и NaNs

    Средство проверки кода создает деление по нулевой ошибке и прекращает проверку.

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

    При выборе этой опции средство проверки кода не проверяет наличие деления по нулевой ошибке.

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

    Анализ предполагает, что деление на ноль приводит к:

    • Значение x равно Inf

    • Значение y равно 0,0

    • Значение z равно NaN

    В результатах анализа в интерфейсе пользователя Polyspace ®, если поместить курсор наy и z, вы можете видеть неокончательные значения Inf и NaN соответственно в подсказке.

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

Параметр: -allow-non-finite-floats
По умолчанию: Откл.
Пример (поиск ошибок): polyspace-bug-finder -sources file_name -allow-non-finite-floats
Пример (проверка кода): polyspace-code-prover -sources file_name -allow-non-finite-floats
Пример (сервер поиска ошибок): polyspace-bug-finder-server -sources file_name -allow-non-finite-floats
Пример (сервер проверки кода): polyspace-code-prover-server -sources file_name -allow-non-finite-floats
Представлен в R2016a