atan2#
ベクトル a の要素をベクトル b の要素で割った要素ごとの 4 象限逆正接を計算します。
説明#
atan2(a,b) 関数は、2 つのベクトル要素の 4 象限逆正接を計算します。
出力ベクトル y の要素は、a[i] / b[i] の4象限逆正接として計算されます。
引数 1 |
引数 2 |
結果 |
エラーコード |
|---|---|---|---|
-\(\infty\) |
-\(\infty\) |
\(-3\*\ \pi/4\) |
|
-\(\infty\) |
b < +0 |
-\(\pi\)/2 |
|
-\(\infty\) |
-0 |
-\(\pi\)/2 |
|
-\(\infty\) |
+0 |
-\(\pi\)/2 |
|
-\(\infty\) |
b > +0 |
-\(\pi\)/2 |
|
-\(\infty\) |
+\(\infty\) |
-\(\pi\)/4 |
|
a < +0 |
-\(\infty\) |
-\(\pi\) |
|
a < +0 |
-0 |
-\(\pi\)/2 |
|
a < +0 |
+0 |
-\(\pi\)/2 |
|
a < +0 |
+\(\infty\) |
-0 |
|
-0 |
-\(\infty\) |
-\(\pi\) |
|
-0 |
b < +0 |
-\(\pi\) |
|
-0 |
-0 |
-\(\pi\) |
|
-0 |
+0 |
-0 |
|
-0 |
b > +0 |
-0 |
|
-0 |
+\(\infty\) |
-0 |
|
+0 |
-\(\infty\) |
+\(\pi\) |
|
+0 |
b < +0 |
+\(\pi\) |
|
+0 |
-0 |
+\(\pi\) |
|
+0 |
+0 |
+0 |
|
+0 |
b > +0 |
+0 |
|
+0 |
+\(\infty\) |
+0 |
|
a > +0 |
-\(\infty\) |
+\(\pi\) |
|
a > +0 |
-0 |
+\(\pi\)/2 |
|
a > +0 |
+0 |
+\(\pi\)/2 |
|
a > +0 |
+\(\infty\) |
+0 |
|
+\(\infty\) |
-\(\infty\) |
+3*\(\pi\)/4 |
|
+\(\infty\) |
b < +0 |
+\(\pi\)/2 |
|
+\(\infty\) |
-0 |
+\(\pi\)/2 |
|
+\(\infty\) |
+0 |
+\(\pi\)/2 |
|
+\(\infty\) |
b > +0 |
+\(\pi\)/2 |
|
+\(\infty\) |
+\(\infty\) |
+\(\pi\)/4 |
|
a > +0 |
QNAN |
QNAN |
|
a > +0 |
SNAN |
QNAN |
|
QNAN |
b > +0 |
QNAN |
|
SNAN |
b > +0 |
QNAN |
|
QNAN |
QNAN |
QNAN |
|
QNAN |
SNAN |
QNAN |
|
SNAN |
QNAN |
QNAN |
|
SNAN |
SNAN |
QNAN |
atan2(a,b) 関数はエラーを生成しません。
API#
構文
バッファー API
namespace oneapi::mkl::vm {
sycl::event atan2(sycl::queue & exec_queue,
std::int64_t n,
sycl::buffer<T> & a,
sycl::buffer<T> & b,
sycl::buffer<T> & y,
oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::not_defined);
}namespace oneapi::mkl::vm {
sycl::event atan2(sycl::queue & exec_queue,
sycl::buffer<T> & a,
oneapi::mkl::slice sa,
sycl::buffer<T> & b, oneapi::mkl::slice sb,
sycl::buffer<T> & y,
oneapi::mkl::slice sy,
oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::not_defined);
}USM API
namespace oneapi::mkl::vm {
sycl::event atan2(sycl::queue & exec_queue,
std::int64_t n,
T const * a,
T const * b, T * y,
std::vector<sycl::event> const & depends = {},
oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::not_defined);
}namespace oneapi::mkl::vm {
sycl::event atan2(sycl::queue & exec_queue,
T const * a,
oneapi::mkl::slice sa,
T const * b,
oneapi::mkl::slice sb, T * y, oneapi::mkl::slice sy,
std::vector<sycl::event> const & depends = {},
oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::not_defined);
}atan2 は次の精度とデバイスをサポートしています。
T |
デバイスサポート |
|---|---|
|
GPU |
|
CPU |
|
CPU および GPU |
|
CPU および GPU |
説明
入力パラメーター#
バッファー API
- exec_queue
ルーチンが実行されるキュー。
- n
計算する要素の数を指定します。
- a
1 番目の入力ベクトルを含むバッファー。
- sa
aのスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。- b
2 番目の入力ベクトルを含むバッファー。
- sb
bのスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。- sy
yのスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。- mode
この関数呼び出しのグローバル VM モード設定をオーバーライドします。指定可能な値とその説明については、set_mode 関数を参照してください。これはオプションのパラメーターです。デフォルト値は
mode::not_definedです。
USM API
- exec_queue
ルーチンが実行されるキュー。
- n
計算する要素の数を指定します。
- a
最初の入力ベクトルへのポインター。
- sa
aのスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。- b
2 番目の入力ベクトルへのポインター。
- sb
bのスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。- sy
yのスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。- depends
依存イベントのベクトル (入力データの準備ができるまで待機)。これはオプションのパラメーターです。デフォルトは空のベクトルです。
- mode
この関数呼び出しのグローバル VM モード設定をオーバーライドします。指定可能な値とその説明については、set_mode 関数を参照してください。これはオプションのパラメーターです。デフォルト値は
mode::not_definedです。
出力パラメーター#
バッファー API
- y
出力ベクトルを含むバッファー。
- 戻り値 (event)
計算終了イベント。
USM API
- y
出力ベクトルへのポインター。
- 戻り値 (event)
計算終了イベント。
例#
atan2 の使用例は、oneMKL インストール・ディレクトリーの以下の場所にあります。
share/doc/mkl/examples/sycl/vml/source/vatan2.cpp