Неправильное поведение математических функций стандартной библиотеки

Проблема

В ваших верификациях результатах стандартная библиотечная математическая функция ведет себя не так, как ожидалось.

Например, оператор assert(isinf(x)) не ограничивает значение x к положительной или отрицательной бесконечности в последующих операторах.

Причина

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

В некоторых случаях реализация функции Polyspace может не совпадать со спецификацией функции. Обратите внимание, что в таких случаях реализация Polyspace переутверждает поведение функции. Например, следуя оператору assert(isinf(x)), область значений значений x включают положительную и отрицательную бесконечность. Поэтому такое поведение не приводит к зеленым проверкам для операций, которые могут вызвать ошибки времени выполнения.

Решение

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

Если вы используете кросс-компилятор и создаете проект Polyspace из системы сборки, проект использует заголовочные файлы, предоставленные вашим компилятором.