Scroll to navigation

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():

_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
|| /* начиная с 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.

ДЕФЕКТЫ

Historical bugs (now fixed)

Before glibc 2.28, on some architectures (e.g., x86-64) pow() may be more than 10,000 times slower for some inputs than for other nearby inputs. This affects only pow(), and not powf() nor powl(). This problem was fixed in glibc 2.28.

A number of bugs in the glibc implementation of pow() were fixed in glibc version 2.16.

В glibc 2.9 и ранее при возникновении ошибки особой точки, значению errno присваивается EDOM вместо ERANGE согласно POSIX. Начиная с версии 2.10, в glibc это исправлено.

В glibc версии 2.3.2 или старее при возникновении ошибки переполнения или исчерпания, функция pow() в дополнение к исключениям переполнения и исчерпания генерирует необоснованное исключение неправильной плавающей запятой (FE_INVALID)

СМ. ТАКЖЕ

cbrt(3), cpow(3), sqrt(3)

ЗАМЕЧАНИЯ

Эта страница является частью проекта Linux man-pages версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу 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.

9 июня 2020 г.