スポンサーリンク

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 NaNhypot(infinity, NaN) において同様に、無関係 になると消失します。

関連項目

math(3), sqrt(3)

歴史

hypot() 関数と cabs() 関数はどちらも Version 7 AT&T UNIX から登場しまし た。

4th Berkeley Distribution May 6, 1991 4th Berkeley Distribution

スポンサーリンク