EN JA
HYPOT(3)
HYPOT(3) FreeBSD Library Functions Manual HYPOT(3)

名称

hypot, hypotf, hypotl, cabs, cabsf, cabslユークリッド距離と複素数の絶対値関数

ライブラリ

Math Library (libm, -lm)

書式

#include < math.h>

double
hypot( double x, double y);

float
hypotf( float x, float y);

long double
hypotl( long double x, long double y);

#include < complex.h>

double
cabs( double complex z);

float
cabsf( float complex z);

long double
cabsl( long double complex z);

解説

hypot(), hypotf() と hypotl() 関数は、アンダフローが起きない方法で、 sqrt(x*x+y*y) を計算します。そして、最終結果でオーバフローがふさわしいときのみ、オーバフローが起こります。 cabs(), cabsf() と cabsl() 関数は、 z の複素数の絶対値を計算します。

全ての v について hypot( infinity, v) = hypot( v, infinity) = +infinity (無限大) となります。 NaN を含みます。

誤差 (Roundoff 等に基づく)

0.97 ulps 以下。その結果、完全な hypot( 5.0, 12.0) = 13.0 となる。通常、 hypot と cabs は整数値が期待される時には必ず整数を返します。

想定通り、 hypot( v, NaN) と hypot( NaN, v) は、 全有限数 v に対して NaN となります。プログラマは hypot( ±infinity, NaN) = +infinity に初めは驚くかもしれません。これは意図的なものであり、無限、有限に関係なく、 すべての v について hypot( infinity, v) = +infinity であるために起こります。したがって、 hypot( infinity, v) は、 v とは独立した値です。 VAX での予約オペランドフォルトとは異なり、 IEEE NaN は hypot( infinity, NaN) において同様に、無関係になると消失します。

関連項目

carg(3), math(3), sqrt(3)

規格

hypot(), hypotf(), hypotl(), cabs(), cabsf() と cabsl() 関数は、 ISO/IEC 9899:1999 (“ISO C99”) に適合しています。

歴史

hypot() 関数と cabs() 関数は、どちらも Version 7 AT&T UNIX で登場しました。
March 30, 2008 FreeBSD