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) において同様に、無関係になると消失します。規格
hypot(), hypotf(), hypotl(), cabs(), cabsf() と cabsl() 関数は、 ISO/IEC 9899:1999 (“ISO C99”) に適合しています。歴史
hypot() 関数と cabs() 関数は、どちらも Version 7 AT&T UNIX で登場しました。March 30, 2008 | FreeBSD |