tail head cat sleep
QR code linking to this page

manページ  — ATAN2

名称

atan2, atan2f – 2 つの変数の逆正接関数

内容

ライブラリ

Math Library (libm, -lm)

書式


#include <math.h>
double
atan2(double y, double x);

float
atan2f(float y, float x);

解説

atan2() 関数と atan2f() 関数は、 y/, Ns, Ar, x の逆正接の主値を計算します。その際、 両方の引数の符号を使用して戻り値の象限を判定します。

戻り値

atan2() 関数と atan2f() 関数は、処理が成功すると、範囲 [amp;-π, amp;+π] のラジアンで、 y/, Ns, Ar, x の逆正接を返します。 xy の両方が 0 の場合、 グローバル変数 errnoEDOM に設定されます。 VAX では次のとおりです。
atan2(y, x) :=atan(y/x) x > 0 の場合
sign(y)*(π -atan(|y/x|) x < 0 の場合
0 x = y = 0 の場合、
sign( y)*π/2 x = 0 != y の場合

関数 atan2() VAX で ``x > 0 の場合''、 atan2() 0 = 0 を定義します。以前は atan2() 0 はエラーメッセージを生成していた 可能性があるにもかかわらずです。 atan2() 0 に値を割り当てる理由は次のとおりです。
  1. atan2() 0 の計算を回避するために引数をテストするプログラムは、この値に 無関係である必要があります。これが無効であることを要求するプログラムは、 さまざまなコンピュータシステム上でこれが無効であることに対するさまざまな 反応に対し脆弱です。
  2. atan2() 関数は、矩形 (x,y) を、極座標 (r,theta) (r,θ) に変換するために最も良く使用されます。この座標は、 r*cos theta r*cosθ および y = r*sin theta r*sinθ を満たします。 (r,theta) これらの等式が 満たされるのは、(x=0,y=0) が VAX で (r=0,theta=0)

    (r=0,θ=0) にマップされるときです。 一般に、極座標への変換は次のようにして計算する必要があります。

    r       := hypot(x,y); ... := sqrt(x*x+y*y)
    theta   := atan2(y,x)
    
    r       := hypot(x,y); ... := √(x2+y2)
    theta   := atan2(y,x)
    
    
  3. 上記の公式は、 IEEE 754 に準拠するマシンでは符号付きの 0 および無限に、 合理的な方法で、対処しようと変更する必要はありません。そのようなマシン用に 提供されている hypot(3)atan2() はすべてのケースを処理するよう 設計されています。これがたとえば atan2(&#177;0, -0) = &#177;π である理由です。一般に、 上記の公式は次のものと同等です。
    r := sqrt(x*x+y*y); r =0 の場合は、x := copysign(1,x);
    

    r := √(x*x+y*y);   r =0 の場合は、x := copysign(1,x);

関連項目

acos(3), asin(3), atan(3), cos(3), cosh(3), math(3), sin(3), sinh(3), tan(3), tanh(3)

規格

atan2() 関数は ISO/IEC 9899:1990 ("ISO C90") に適合しています。

ATAN2 (3) May 2, 1991

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

With features like these, who needs bugs?
— Henry Spencer