rotmg#

修正されたギブンズ回転のパラメーターを計算します。

説明#

入力ベクトルの直交座標 (x1, y1) が与えられると、rotmg ルーチンは、結果のベクトルの y 成分をゼロにする修正ギブンズ変換行列 H の成分を計算します。

\[\begin{split}\left[ \begin{array}{ccc} x1 \\ 0 \end{array} \right] = H \left[ \begin{array}{ccc} x1 & \sqrt{d1} \\ y1 & \sqrt{d2} \end{array} \right]\end{split}\]

rotmg は次の精度をサポートします。

T

float

double

rotmg (バッファーバージョン)#

構文#

namespace oneapi::mkl::blas::column_major { 
    void rotmg(sycl::queue &queue, 
               sycl::buffer<T,1> &d1, 
               sycl::buffer<T,1> &d2, 
               sycl::buffer<T,1> &x1, 
               sycl::buffer<T,1> y1, 
               sycl::buffer<T,1> &param) 
}
namespace oneapi::mkl::blas::row_major { 
    void rotmg(sycl::queue &queue, 
               sycl::buffer<T,1> &d1, 
               sycl::buffer<T,1> &d2, 
               sycl::buffer<T,1> &x1, 
               sycl::buffer<T,1> y1, 
               sycl::buffer<T,1> &param) 
}

入力パラメーター#

queue

ルーチンを実行するキュー。

d1

入力ベクトルの x 座標のスケーリング係数を保持するバッファー。

d2

入力ベクトルの y 座標のスケーリング係数を保持するバッファー。

x1

入力ベクトルの x 座標を保持するバッファー。

y1

入力ベクトルの y 座標を指定するスカラー。

出力パラメーター#

d1

更新された行列の最初の対角要素を保持するバッファー。

d2

更新された行列の 2 番目の対角要素を保持するバッファー。

x1

スケーリング前に回転ベクトルの x 座標を保持するバッファー

param

サイズ 5 の配列を保持するバッファー。

param 配列の要素は次のとおりです:

param[0] にはスイッチ、flag が含まれます。他の配列要素 param[1-4] には、配列 H の要素 h11、h21、h12、および h22 がそれぞれ格納されます。

flag の値に応じて、H のコンポーネントは次のように設定されます。

flag = -1.0:

\[\begin{split}H = \left[ \begin{array}{ccc} h_{11} & h_{12} \\ h_{21} & h_{22} \end{array} \right]\end{split}\]

flag = 0.0:

\[\begin{split}H = \left[ \begin{array}{ccc} 1.0 & h_{12} \\ h_{21} & 1.0 \end{array} \right]\end{split}\]

flag = 1.0:

\[\begin{split}H = \left[ \begin{array}{ccc} h_{11} & 1.0 \\ -1.9 & h_{22} \end{array} \right]\end{split}\]

flag = -2.0:

\[\begin{split}H = \left[ \begin{array}{ccc} 1.0 & 0.0 \\ 0.0 & 1.0 \end{array} \right]\end{split}\]

最後の 3 つのケースでは、flag の値に基づいて 1.0、-1.0、0.0 の行列エントリーが想定されており、param ベクトルで設定する必要はありません。

rotmg (USM バージョン)#

構文#

namespace oneapi::mkl::blas::column_major { 
    sycl::event rotmg(sycl::queue &queue, 
                      T *d1, 
                      T *d2, 
                      T *x1, 
                      oneapi::mkl::value_or_pointer<T> y1, 
                      T *param, 
                      const std::vector<sycl::event> &dependencies = {}) 
}
namespace oneapi::mkl::blas::row_major { 
    sycl::event rotmg(sycl::queue &queue, 
                      T *d1, 
                      T *d2, 
                      T *x1, 
                      oneapi::mkl::value_or_pointer<T> y1, 
                      T *param, 
                      const std::vector<sycl::event> &dependencies = {}) 
}

入力パラメーター#

queue

ルーチンを実行するキュー。

d1

入力ベクトルの x 座標のスケーリング係数へのポインター。

d2

入力ベクトルの y 座標のスケーリング係数へのポインター。

x1

入力ベクトルの x 座標へのポインター。

y1

入力ベクトルの y 座標を指定するスカラー。value_or_pointer データタイプの詳細については、スカラー引数を参照してください。

dependencies

計算を開始する前に待機するイベントのリスト (存在する場合)。省略した場合、依存関係はデフォルトでなくなります。

出力パラメーター#

d1

更新された行列の最初の対角要素へのポインター。

d2

更新された行列の 2 番目の対角要素へのポインター。

x1

スケーリング前の回転ベクトル x 座標へのポインター

param

サイズ 5 の配列へのポインター。

param 配列の要素は次のとおりです:

param[0] にはスイッチ、flag が含まれます。他の配列要素 param[1-4] には、配列 H の要素 h11、h21、h12、および h22 がそれぞれ格納されます。

flag の値に応じて、H のコンポーネントは次のように設定されます。

flag = -1.0:

\[\begin{split}H = \left[ \begin{array}{ccc} h_{11} & h_{12} \\ h_{21} & h_{22} \end{array} \right]\end{split}\]

flag = 0.0:

\[\begin{split}H = \left[ \begin{array}{ccc} 1.0 & h_{12} \\ h_{21} & 1.0 \end{array} \right]\end{split}\]

flag = 1.0:

\[\begin{split}H = \left[ \begin{array}{ccc} h_{11} & 1.0 \\ -1.0 & h_{22} \end{array} \right]\end{split}\]

flag = -2.0:

\[\begin{split}H = \left[ \begin{array}{ccc} 1.0 & 0.0 \\ 0.0 & 1.0 \end{array} \right]\end{split}\]

最後の 3 つのケースでは、flag の値に基づいて 1.0、-1.0、0.0 の行列エントリーが想定されており、param ベクトルで設定する必要はありません。

戻り値#

計算が完了したことを確認するために待機する出力イベント。