POW(3) | Руководство программиста Linux | POW(3) |
ИМЯ¶
pow, powf, powl - функции возведения в степень
СИНТАКСИС¶
#include <math.h>
double pow(double x, double y); float powf(float x, float y); long double powl(long double x, long double y);
Компонуется при указании параметра -lm.
Требования
макроса
тестирования
свойств
для glibc (см.
feature_test_macros(7)):
powf(), powl():
|| /* начиная с glibc 2.19: */ _DEFAULT_SOURCE
|| /* в версиях glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
ОПИСАНИЕ¶
Данные функции возвращают значение x, возведённое в степень y.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ¶
При успешном выполнении данные функции возвращают значение x, возведённое в степень y.
Если x — конечное значение меньшее 0 и y — конечное не целое, то будет сгенерирована ошибка выхода за пределы области, а в качестве результата будет возвращено NaN.
Если происходит переполнение результата, возникает ошибка диапазона, а функция возвращает HUGE_VAL, HUGE_VALF или HUGE_VALL, соответственно, с математически правильным знаком.
Если в результате исчерпана степень числа и оно не представимо, то возникает ошибка диапазона и возвращается 0.0.
За исключениями, указанными далее, если значение x или y равно NaN, то результат равен NaN.
Если x равно +1, то результат равен 1.0 (даже если y равно NaN).
Если y равно 0, то результат равен 1.0 (даже если x равно NaN).
Если x равно +0 (-0) и y — нечётное целое большее 0, то результат равен +0 (-0).
Если x равно 0 и y больше 0 и не чётное целое, то результат равен +0.
Если x равно -1 и y стремится к плюс или минус бесконечности, то результат равен 1.0.
Если абсолютное значение x меньше 1 и y стремится к минус бесконечности, то результат стремится к плюс бесконечности.
Если абсолютное значение x больше 1 и y стремится к минус бесконечности, то результат равен +0.
Если абсолютное значение x меньше 1 и y стремится к плюс бесконечности, то результат равен +0.
Если абсолютное значение x больше 1 и y стремится к плюс бесконечности, то результат стремится к плюс бесконечности.
Если x стремится к минус бесконечности и y — нечётное целое меньшее 0, то результат равен -0.
Если x стремится к минус бесконечности и y — меньше 0 и чётное целое, то результат равен +0.
Если x стремится к минус бесконечности и y — нечётное целое большее 0, то результат стремится к минус бесконечности.
Если x стремится к минус бесконечности и y — больше 0 и чётное целое, то результат стремится к плюс бесконечности.
Если x стремится к плюс бесконечности и y — меньше 0, то результат равен +0.
Если x стремится к плюс бесконечности и y — больше 0, то результат стремится к плюс бесконечности.
Если x равно +0 или -0 и y — нечётное целое меньшее 0, то генерируется ошибка особой точки и возвращается HUGE_VAL, HUGE_VALF или HUGE_VALLс тем же знаком что и у x.
Если x равно + или -0 и y — меньше 0 и чётное целое, то генерируется ошибка особой точки и возвращается +HUGE_VAL, +HUGE_VALF или +HUGE_VALL.
ОШИБКИ¶
Смотрите math_error(7), чтобы определить, какие ошибки могут возникать при вызове этих функций.
Могут возникать следующие ошибки:
- Ошибка области: x является отрицательным и y конечное нецелое
- errno устанавливается в EDOM. Вызывается исключение неправильной плавающей точки (FE_INVALID).
- Ошибка особой точки: x равно нулю и y отрицательно
- errno устанавливается в ERANGE (но смотрите ДЕФЕКТЫ). Возникает исключение деления плавающей запятой на ноль (FE_DIVBYZERO).
- Ошибка диапазона: результат превысил разрядность
- Значение errno устанавливается в ERANGE. Возникает исключение переполнения плавающей запятой (FE_OVERFLOW).
- Ошибка диапазона: результат исчерпал степень
- Значение errno устанавливается в ERANGE. Возникает исключение исчерпания степени чисел с плавающей запятой (FE_UNDERFLOW).
АТРИБУТЫ¶
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение |
pow(), powf(), powl() | Безвредность в нитях | MT-Safe |
СООТВЕТСТВИЕ СТАНДАРТАМ¶
C99, POSIX.1-2001, POSIX.1-2008.
Вариант, возвращающий значение типа double, также соответствует SVr4, 4.3BSD, C89.
ДЕФЕКТЫ¶
На 64-битных архитектурах pow() может быть медленнее более чем в 10000 раз для некоторых значений (очень редких). Это происходит только с pow(), и отсутствует у powf() и powl().
В glibc 2.9 и ранее при возникновении ошибки особой точки, значению errno присваивается EDOM вместо ERANGE согласно POSIX. Начиная с версии 2.10, в glibc это исправлено.
Если x отрицательно, то большие отрицательные или положительные значения y приводят к результату NaN, с присвоением errno значения EDOM или исключению неправильной плавающей запятой (FE_INVALID). Например для pow() такое случает когда абсолютное значение y больше 9.223373e18.
В glibc версии 2.3.2 или старее при возникновении ошибки переполнения или исчерпания, функция pow() в дополнение к исключениям переполнения и исчерпания генерирует необоснованное исключение неправильной плавающей запятой (FE_INVALID)
СМ. ТАКЖЕ¶
ЗАМЕЧАНИЯ¶
Эта страница является частью проекта Linux man-pages версии 4.16. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.
ПЕРЕВОД¶
Русский перевод этой страницы руководства был сделан Alexey, Azamat Hackimov <azamat.hackimov@gmail.com>, kogamatranslator49 <r.podarov@yandex.ru>, Kogan, Max Is <ismax799@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>
Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.
15 сентября 2017 г. |