rotm#

平面上の点の修正ギブンズ回転を実行します。

説明#

2 つのベクトル xy が与えられた場合、これらのベクトルの要素は次のように置き換えられます。

\[\begin{split}\left[ \begin{array}{ccc} x_i \\ y_i \end{array} \right] = H \left[ \begin{array}{ccc} x_i \\ y_i \end{array} \right]\end{split}\]

i は 1 から n までで、H は修正されたギブンズ変換行列です。

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

T

float

double

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

構文#

namespace oneapi::mkl::blas::column_major { 
    void rotm(sycl::queue &queue, 
              std::int64_t n, 
              sycl::buffer<T,1> &x, 
              std::int64_t incx, 
              sycl::buffer<T,1> &y, 
              std::int64_t incy, 
              sycl::buffer<T,1> &param) 
}
namespace oneapi::mkl::blas::row_major { 
    void rotm(sycl::queue &queue, 
              std::int64_t n, 
              sycl::buffer<T,1> &x, 
              std::int64_t incx, 
              sycl::buffer<T,1> &y, 
              std::int64_t incy, 
              sycl::buffer<T,1> &param) 
}

入力パラメーター#

queue

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

n

ベクトル x 内の要素数。

x

入力ベクトル x を保持するバッファー。バッファーのサイズは (1 + (n - 1)*abs(incx) 以上である必要があります。行列ストレージを参照してください。

incx

ベクトル x のストライド。

y

入力ベクトル y を保持するバッファー。バッファーのサイズは (1 + (n - 1)*abs(incy) 以上である必要があります。行列ストレージを参照してください。

incy

ベクトル y のストライド。

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 ベクトルで設定する必要はありません。

出力パラメーター#

x

更新されたベクトル x を保持するバッファー。

y

更新されたベクトル y を保持するバッファー。

rotm (USM バージョン)#

構文#

namespace oneapi::mkl::blas::column_major { 
    sycl::event rotm(sycl::queue &queue, 
                     std::int64_t n, 
                     T *x, 
                     std::int64_t incx, 
                     T *y, 
                     std::int64_t incy, 
                     const T *param, 
                     const std::vector<sycl::event> &dependencies = {}) 
}
namespace oneapi::mkl::blas::row_major { 
    sycl::event rotm(sycl::queue &queue, 
                     std::int64_t n, 
                     T *x, 
                     std::int64_t incx, 
                     T *y, 
                     std::int64_t incy, 
                     const T *param, 
                     const std::vector<sycl::event> &dependencies = {}) 
}

入力パラメーター#

queue

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

n

ベクトル x 内の要素数。

x

入力ベクトル x へのポインター。ベクトル x を保持する配列のサイズは、(1 + (n - 1)*abs(incx)) 以上である必要があります。行列ストレージを参照してください。

incx

ベクトル x のストライド。

yparam

入力ベクトル y へのポインター。ベクトル y を保持する配列のサイズは、(1 + (n - 1)*abs(incy)) 以上である必要があります。行列ストレージを参照してください。

incy

ベクトル y のストライド。

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 ベクトルで設定する必要はありません。

dependencies

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

出力パラメーター#

x

更新された配列 x へのポインター。

y

更新された配列 y へのポインター。

戻り値#

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