Manpages

名 前

hypot, hypotf, hypotl − ユ ー ク リ ッ ド 距 離 関 数

書 式

#include <math.h>

double hypot(double x, double y);
float hypotf(float
x, float y);
long double hypotl(long double
x, long double y);

−lm で リ ン ク す る 。

glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 (feature_test_macros(7) 参 照 ):

hypot():

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

hypotf(), hypotl():

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

説 明

hypot() 関 数 は sqrt(x*x+y*y) の 値 を 返 す 。 こ れ は 直 角 を 挟 む 2 辺 の 長 さ が xy で あ る 直 角 三 角 形 の 斜 辺 の 長 さ 、 す な わ ち 、 原 点 と 点 (x,y) と の 距 離 で あ る 。 計 算 の 中 間 ス テ ッ プ で は 、 必 要 以 上 の オ ー バ ー フ ロ ー や ア ン ダ ー フ ロ ー が 起 き な い よ う に し て 計 算 が 実 行 さ れ る 。

返 り 値

成 功 す る と 、 こ れ ら の 関 数 は 、 直 角 を 挟 む 2 辺 の 長 さ が xy で あ る 直 角 三 角 形 の 斜 辺 の 長 さ を 返 す 。

xy が 無 限 大 の 場 合 、 正 の 無 限 大 が 返 さ れ る 。

xy の 一 方 が NaN で 、 も う 一 方 が 無 限 大 で な い 場 合 、 NaN が 返 さ れ る 。 結 果 が オ ー バ ー フ ロ ー す る 場 合 、 範 囲 エ ラ ー (range error) が 発 生 し 、 各 関 数 は そ れ ぞ れ HUGE_VAL, HUGE_VALF, HUGE_VALL を 返 す 。 両 方 の 引 き 数 が 非 正 規 化 数 (subnormal) で 、 結 果 も 非 正 規 化 数 (subnormal) の 場 合 、 範 囲 エ ラ ー が 発 生 し 、 正 し い 結 果 が 返 さ れ る 。

エ ラ ー

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

(range error): 結 果 の オ ー バ ー フ ロ ー

errnoERANGE が 設 定 さ れ る 。 オ ー バ ー フ ロ ー 浮 動 小 数 点 例 外 (FE_OVERFLOW) が 上 が る 。 範 囲 エ ラ ー

(range error): 結 果 の ア ン ダ ー フ ロ ー ア ン ダ ー フ ロ ー 浮 動 小 数 点 例 外 (FE_UNDERFLOW) が 上 が る 。 こ れ ら の 関 数 は 、 こ の 場 合 に errno を 設 定 し な い 。

準 拠

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

関 連 項 目

cabs(3), sqrt(3)

こ の 文 書 に つ い て

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