SIN(3M) — NEWS-OS Programmer’s Manual
名称
sin, cos, tan, asin, acos, atan, atan2 − 三角関数及びそれらの逆関数
形式
#include <math.h>
double sin(x)
double x;
double cos(x)
double x;
double tan(x)
double x;
double asin(x)
double x;
double acos(x)
double x;
double atan(x)
double x;
double atan2(y,x)
double y,x;
解説
sin、 cos 及び tan は、 ラジアンで表される引数 x の、 三角関数の値を 返します。
asin は、 −π/2 から π/2 の範囲で、 逆正弦を 返します。
acos は、 0 から π の範囲で、 逆余弦を 返します。
atan は、 −π/2 から π/2 の範囲で、 逆正接を 返します。
NEWS 上では、
sign(y)∗π/2x = 0 かつ y != 0 の場合
atan2(y,x) :=atan(y/x)x > 0 の場合
sign(y)∗(π − atan(|y/x|))x < 0 の場合
0x = y = 0 の場合
sign(y)∗π/2x = 0 かつ y ≠ 0 の場合
診断
NEWS 上では、 |x|>1 の場合、 asin(x) 及び acos(x) は NaN(Not a number) を返します。
注意事項
atan2(0,0) は以前、 エラーメッセージを 生じる可能性がありましたが、 NEWS 上で atan2 は、 atan2(0,0)=0 と定義しています。 atan2(0,0) にその値を 割り当てた理由は、 次の通りです。
(1)atan2(0,0) を計算しないように 引数をチェックしているプログラムにとっては、 無関係です。 また、 atan2(0,0) に対してエラーが生じることを仮定している プログラムに対しては、 対処のしようがありません。 異なったマシンでのエラーに対するアクションは、 違ったものになるからです。
(2)atan2 を 使って、 x = r∗cosθ かつ y = r∗sinθ を 満たす直交座標 (x,y) から 極座標 (r,θ) への変換を 行います。 NEWS 上では、 (x=0,y=0) が (r=0,θ=0) にマップされた場合に、 これらの方程式が満たされます。 一般に、 極座標への変換は次のように計算されるべきです。
r := hypot(x,y); ... := √(x2+y2)
θ := atan2(y,x).
(3)前述の公式を、 IEEE 754 に準ずるマシン上で、 符号付きゼロ及び無限大に、 正当な方法で対処するよう変化させる必要はありません。 このようなマシンに与えられる hypot 及び atan2 のバージョンは、 全てのケースを 扱うように設計されています。 このようなわけで、 atan2(±0,−0)= ±π, となります。 一般に前記の公式は、 次のものと同値です。
r := √(x2+y2); もし r = 0 ならば x := copysign(1,x);
もし x > 0ならばθ := 2∗atan(y/(r+x))
そうでなければθ := 2∗atan((r−x)/y);
ただし、 r が無限大の場合を除きます。 この場合、 atan2 は、 π/4 を 数倍した値になり、 これは別の値のときに取られる範囲内でなければなりません。
エラー(丸め他に関すること)
コンピュータに格納された値 P を、 π =3.1415926... の代わりに円周率として用います。 P は π と ulp の数分の 1 だけ違います。 その差は、 引数 x が非常に大きな値のときにのみ 重大ですが、 それでも、 その差は x の曖昧さによって無効となる傾向があります。 さらに、 明らかに π に関係しない三角恒等式はどれも、 P = π かどうかにかかわらず、 申し分なく一様に満たされています。 たとえば、 x がどんなに大きな値であろうともかわりなく、 ごく小さい ulp 範囲内で、 sin2(x)+cos2(x) = 1 かつ sin(2x) = 2sin(x)cos(x) が成り立ちます。 従って、 P と π の差は、 科学技術計算にはほとんど影響を およぼしません。
関連事項
math(3M), hypot(3M), sqrt(3M), mathtrap(3).
著者
Robert P. Corbett, W. Kahan, Stuart I. McDonald, Peter Tang 及び IEEE 754のコードに関しては Dr. Kwok−Choi Ng.
NEWS-OSRelease 4.2.1R