atan、atanf、atan2、atan2f
x (atan または atanf) のアークタンジェントを計算します。または y/x (atan2 または atan2f) のアークタンジェントを計算します。
double atan(
double x
);
float atan(
float x
); // C++ only
long double atan(
long double x
); // C++ only
double atan2(
double y,
double x
);
float atan2(
float y,
float x
); // C++ only
long double atan2(
long double y,
long double x
); // C++ only
float atanf(
float x
);
float atan2f(
float y,
float x
);
パラメーター
- x, y
任意の数値。
戻り値
atan は、π/2 ~π/2 ラジアンの範囲で、x のアークタンジェントを返します。 atan2 は、– π~πラジアンの範囲で、y/x のアークタンジェントを返します。 x が 0 の場合、atan は 0 を返します。 atan2 の両方のパラメーターが 0 の場合、この関数は 0 を返します。 結果はすべてラジアン単位です。
atan2 は 2 つのパラメーターの符号を使用し、戻り値のクワドラントを決定します。
入力 |
SEH 例外 |
Matherr 例外 |
---|---|---|
± QNAN,IND |
[none] |
_DOMAIN |
解説
atan 関数は、x のアークタンジェントを計算します。 atan2 は、y/x のアークタンジェントを計算します (x が 0 のとき、atan2 は、y が正数の場合はπ/2 を、y が負数の場合は-π/2 を、y が 0 の場合は 0 を返します)。
atan には、SSE2 (Streaming SIMD Extensions 2) を使用する実装があります。 SSE2 実装の使用に関する情報と制限については、「_set_SSE2_enable」を参照してください。
C++ ではオーバーロードが可能であるため、atan と atan2 のオーバーロードを呼び出すことができます。 C プログラムでは、atan と atan2 は常に倍精度浮動小数点数を受け取り、倍精度浮動小数点数を返します。
必要条件
ルーチン |
必須ヘッダー |
---|---|
atan, atan2, atanf, atan2f |
<math.h> |
使用例
// crt_atan.c
// arguments: 5 0.5
#include <math.h>
#include <stdio.h>
#include <errno.h>
int main( int ac, char* av[] )
{
double x, y, theta;
if( ac != 3 ){
fprintf( stderr, "Usage: %s <x> <y>\n", av[0] );
return 1;
}
x = atof( av[1] );
theta = atan( x );
printf( "Arctangent of %f: %f\n", x, theta );
y = atof( av[2] );
theta = atan2( y, x );
printf( "Arctangent of %f / %f: %f\n", y, x, theta );
return 0;
}