Manpages

名 前

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

_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L;
or cc −std=c99

説 明

pow() 関 数 は xy 乗 の 値 を 返 す 。

返 り 値

成 功 す る と 、 こ れ ら の 関 数 は xy 乗 の 値 を 返 す 。

x が 0 未 満 の 有 限 値 で y が 整 数 で な い 有 限 値 の 場 合 、 領 域 エ ラ ー (domain error) が 発 生 し 、 NaN が 返 さ れ る 。 結 果 が オ ー バ ー フ ロ ー す る 場 合 、 範 囲 エ ラ ー (range error) が 発 生 し 、 各 関 数 は そ れ ぞ れ HUGE_VAL, HUGE_VALF, HUGE_VALL を 返 す 。 返 り 値 に は 数 学 的 に 正 し い 符 号 が 付 与 さ れ る 。 結 果 が ア ン ダ ー フ ロ ー し 、 そ の 値 が 表 現 可 能 で な い 場 合 、 範 囲 エ ラ ー が 発 生 し 、 0.0 が 返 さ れ る 。 以 下 で 規 定 さ れ て い な い 場 合 で 、 xy が NaN の 場 合 、 返 り 値 は NaN と な る 。

x が +1 の 場 合 、 (y が NaN で あ っ た と し て も ) 返 り 値 は 1.0 と な る 。

y が 0 の 場 合 、 (x が NaN で あ っ た と し て も ) 返 り 値 は 1.0 と な る 。

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 よ り 小 さ い 奇 数 の 場 合 、 極 エ ラ ー (pole error) が 発 生 し 、 返 り 値 は HUGE_VAL, HUGE_VALF, HUGE_VALL と な る 。 x と 同 じ 符 号 が 付 与 さ れ る 。

x が +0 か −0 で 、 y が 0 よ り 小 さ く 奇 数 で な い 場 合 、 極 エ ラ ー が 発 生 し 、 返 り 値 は +HUGE_VAL, +HUGE_VALF, +HUGE_VALL と な る 。

エ ラ ー

こ れ ら の 関 数 を 呼 び 出 し た 際 に エ ラ ー が 発 生 し た か の 判 定 方 法 に つ い て の 情 報 は math_error(7) を 参 照 の こ と 。 以 下 の エ ラ ー が 発 生 す る 可 能 性 が あ る 。 領 域 エ ラ ー :

x が 負 で 、 y が 整 数 で な い 有 限 値

errnoEDOM が 設 定 さ れ る 。 不 正 (invalid) 浮 動 小 数 点 例 外 (FE_INVALID) が 上 が る 。 極 エ ラ ー :

x が ゼ ロ で 、 y が 負

errnoERANGE が 設 定 さ れ る (「 バ グ 」 の 節 も 参 照 )。 0 に よ る 除 算 (divide−by−zero) 浮 動 小 数 点 例 外 (FE_DIVBYZERO) が 上 が る 。 範 囲 エ ラ ー : 結 果 が オ ー バ ー フ ロ ー
errno
ERANGE が 設 定 さ れ る 。 オ ー バ ー フ ロ ー 浮 動 小 数 点 例 外 (FE_OVERFLOW) が 上 が る 。 範 囲 エ ラ ー : 結 果 が ア ン ダ ー フ ロ ー
errno
ERANGE が 設 定 さ れ る 。 ア ン ダ ー フ ロ ー 浮 動 小 数 点 例 外 (FE_UNDERFLOW) が 上 が る 。

準 拠

C99, POSIX.1−2001. double 版 の 関 数 は SVr4, 4.3BSD, C89 に も 準 拠 し て い る 。

バ グ

64 ビ ッ ト で は 、 pow は 、 特 定 の (ご く 稀 な ) 入 力 に 対 し て 、 そ の 直 近 の 似 た よ う な 数 字 の 場 合 と 比 べ て 10000 倍 以 上 遅 く な る こ と が あ る 。 こ れ は pow() で の み 起 こ る こ と で あ り 、 powf() や powl() で は 起 こ ら な い 。

glibc 2.9 と そ れ 以 前 の バ ー ジ ョ ン で は 、 極 エ ラ ー が 発 生 し た 場 合 、 POSIX で 要 求 さ れ て い る ERANGE で は な く EDOMerrno に 設 定 さ れ る 。 バ ー ジ ョ ン 2.10 以 降 の glibc で は 、 正 し い 動 作 を す る 。

x が 負 の 場 合 、 大 き な 正 負 の 値 の y が 与 え ら れ る と 、 関 数 の 結 果 が NaN と な り 、 errnoEDOM が 設 定 さ れ 、 不 正 浮 動 小 数 点 例 外 (FE_INVALID) が 発 生 す る 。 例 え ば 、 pow() で は 、 y の 絶 対 値 が 約 9.223373e18 よ り 大 き い 場 合 に こ の 状 況 と な る 。

glibc バ ー ジ ョ ン 2.3.2 以 前 で は 、 ア ン ダ ー フ ロ ー や ア ン ダ ー フ ロ ー の エ ラ ー が 発 生 す る 場 合 、 glibc の pow() は 、 オ ー バ ー フ ロ ー 例 外 や ア ン ダ ー フ ロ ー 例 外 を 上 げ る だ け で な く 、 不 正 浮 動 小 数 点 例 外 (FE_INVALID) を 間 違 っ て 発 生 す る 。

関 連 項 目

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

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。