exponenta event banner

Недопустимое использование стандартных стандартных программ с плавающей точкой библиотеки

Polyspace® Code Prover™ выполняет проверку Invalid Use of Standard Library Routine для стандартных стандартных программ, чтобы определить, действительны ли их аргументы. Проверка работает по-разному для стандартных программ памяти, стандартных программ с плавающей точкой или строковых стандартных программ, поскольку их аргументы могут быть недопустимыми различными способами. В этом разделе описывается работа проверки для стандартных стандартных программ с плавающей точкой библиотеки.

Для получения дополнительной информации о проверке см. Invalid use of standard library routine.

Что ищет чек

Проверка Invalid Use of Standard Library Routine последовательно ищет следующие проблемы при использовании стандартных программ с плавающей точкой.

  • Ошибка области: ошибка области возникает, если аргументы функции недопустимы. Определение недопустимого аргумента варьируется в зависимости от того, разрешаете ли вы не конечные поплавки или нет. Если вы допускаете неоконечные поплавки, но:

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

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

    Для получения дополнительной информации смотрите NaNs (-check-nan).

    Проверка работает почти так же, как и проверка Invalid operation on floats. Проверка Invalid Use of Standard Library Routine работает со стандартными функциями библиотеки, в то время как проверка Invalid Operation on Floats работает с числовыми операциями с переменными с плавающей точкой.

  • Водосливная ошибка: водосливная ошибка происходит, если результат функции переполняется. Определение переполнения изменяется в зависимости от того, разрешаете ли вы не конечные поплавки и основано на заданных режимах округления. Если вы разрешаете не конечные поплавки, но задаете, что вы должны быть предупреждены о бесконечных результатах, возникает ошибка переполнения, если функция возвращает бесконечность, а сами аргументы не являются бесконечностью. Для получения дополнительной информации смотрите Infinities (-check-infinite).

    Проверка работает так же, как и проверка Overflow. Проверка Invalid Use of Standard Library Routine работает со стандартными функциями библиотеки, в то время как проверка Overflow работает с числовыми операциями с переменными с плавающей точкой.

  • Недопустимый аргумент указателя: Для таких функций, как frexp которые берут аргументы указателя, верификация проверяет, является ли она допустимой, чтобы лишить указателя. Для образца указатель не имеет значение NULL или не указывает за пределы допустимых границ.

Проверка ищет эти ошибки последовательно.

  • Если проверка находит определенную ошибку области, она не ищет ошибку переполнения.

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

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

Проверены функции с одним аргументом

Проверка Invalid Use of Standard Library Routine охватывает следующие стандартные программы, их версии с одной точностью с помощью суффикса f (если у них есть одна) и их длинные двойные версии с суффиксом l. Проверка работает точно так же для C и Кода С++.

  • acos

  • acosh

  • asin

  • asinh

  • atan

  • atanh

  • ceil

  • cos

  • cosh

  • exp

  • exp2

  • expm1

  • fabs

  • floor

  • log

  • log10

  • log1p

  • logb

  • round

  • sin

  • sinh

  • sqrt

  • tan

  • tanh

  • trunc

  • cbrt

Функции с несколькими аргументами

Проверка Invalid Use of Standard Library Routine охватывает следующие стандартные программы, их версии с одной точностью с помощью суффикса f (если у них есть одна) и их длинные двойные версии с суффиксом l. Проверка работает точно так же для C и Кода С++.

  • atan2

  • fdim

  • fma

  • fmax

  • fmin

  • fmod

  • frexp

  • hypot

  • ilogb

  • ldexp

  • modf

  • nextafter

  • nexttoward

  • pow

  • remainder

См. также

|