HYPOT(3) FreeBSD ライブラリ関数マニュアル HYPOT(3)
名称
hypot, hypotf, cabs, cabsf |
ライブラリ
数値計算ライブラリ (libm, −lm) − ユークリッド距離と複素絶対値関数 |
書式
#include <math.h> double |
hypot(double x, double y); float |
hypotf(float x, float y); struct {double x, y;} z; |
double |
cabs(z); struct {float x, y;} z; |
float |
cabsf(z); |
解説 |
hypot(), hypotf(), cabs(), および cabsf() 関数は、アンダフローが起きず、 最終結果でオーバフローが起こる場合のみオーバフローする方法で sqrt(x*x+y*y) を計算します。 hypot(infinity, v) あるいは hypot(v, infinity) は、全ての v に対して、NaN を含む +infinity になります。 |
誤差 (Roundoff 等に基づく)
0.97 ulps 以下。その結果、完全な hypot(5.0, 12.0) = 13.0 となる。通 常、hypot と cabs は整数値が求められる時には必ず整数を返します。 cabs.c の注釈にある短縮、かつ高速版の hypot と cabs については例外とな り、誤差は 1.2 ulps を超すことがあります。 |
注
想定通り、 hypot(v, NaN) と hypot(NaN, v) は 全有限数 v に対して NaN とな ります。 "reserved operand" が "NaN" に置き換われば、 VAX でも同じ結果に なります。 VAX 以外のマシン ( もし無限数が無ければ ) のプログラマは hypot(±infinity, NaN) = +infinity に初めは驚くかもしれません。これは意図 的なものであり、無限、有限に関係なく、 すべての v について hypot(infinity, v) = +infinity であるために起こります。したがって、 hypot(infinity, v) は、 v とは独立した値です。 VAX での予約オペランドフォ ルトとは異なり、 IEEE NaN は hypot(infinity, NaN) において同様に、無関係 になると消失します。 |
関連項目
歴史
hypot() 関数と cabs() 関数はどちらも Version 7 AT&T UNIX から登場しまし た。 4th Berkeley Distribution May 6, 1991 4th Berkeley Distribution |