Неправильные аргументы в стандартной функции библиотеки
Этот дефект возникает, когда вы используете недопустимые аргументы с функцией с плавающей точкой из стандартной библиотеки. Этот дефект подхватывает:
Округление и абсолютное значение стандартных программ
ceil, fabs, floor, fmod
Дроби и стандартные программы деления
fmod, modf
Экспоненты и стандартные программы журнала
frexp, ldexp, sqrt, pow, exp, log, log10
Стандартные программы тригонометрии функций
cos, sin, tan, acos, asin, atan, atan2, cosh, sinh, tanh, acosh, asinh, atanh
Ошибки области в стандартных функциях с плавающей точкой библиотеки приводят к заданным реализацией значениям. Если вы используете возвращаемое значение функции в последующих расчетах, можно увидеть неожиданные результаты.
Исправление зависит от первопричины дефекта. Часто детали результата показывают последовательность событий, которые привели к дефекту. Используйте этот список событий, чтобы определить, как аргумент функции получает недопустимые значения. Вы можете реализовать исправление на любом событии в последовательности. Если сведения о результате не отображают историю событий, можно отследить их с помощью опций правого щелчка в исходном коде и просмотреть предыдущие связанные события. Смотрите также Результаты интерпретации Bug Finder в интерфейсе пользователя Polyspace Desktop.
Рекомендуется обрабатывать ошибки области перед использованием стандартной функции с плавающей точкой библиотеки. Например, перед вызовом acos
function, проверьте, находится ли аргумент в [-1.0, 1.0] и обработайте ошибку.
См. примеры исправлений ниже.
Если вы не хотите устранять проблему, например, когда вы обрабатываете бесконечности в коде, добавляйте комментарии к своему результату или коду, чтобы избежать другого рассмотрения. Смотрите Адрес Результаты Polyspace через исправления ошибок или обоснования.
Группа: Численный |
Язык: C | C++ |
По умолчанию: On |
Синтаксис командной строки: FLOAT_STD_LIB |
Влияние: Высокий |
ИДЕНТИФИКАТОР CWE: 227, 369, 682, 873 |
Find defects (-checkers)
| Invalid use of standard library integer routine
| Invalid use of standard library memory routine
| Invalid use of standard library routine
| Invalid use of standard library string routine