ungbr#

gebrd によって決定された複素ユニタリー行列 Q または Pt を生成します。このルーチンは、oneapi::mkl::lapack 名前空間に属します。

説明#

このルーチンは、ルーチン gebrd によって形成されたユニタリー行列 Q および PH の全体または一部を生成します。cgebrd/zgebrd の呼び出しの後にこのルーチンを使用します。有効な引数の組み合わせはすべて入力パラメーターに記載されています。ほとんどの場合、以下が必要です:

mm 列の行列 Q 全体を計算するには、次を使用します。

ungbr(queue, generate::q, m, m, n, a, ...)

(バッファー a には、少なくとも m 列が必要であることに注意してください)。

m > n の場合に Q の先頭の n 列を形成するには、次を使用します。

ungbr(queue, generate::q, m, n, n, a, ...)

nn 列の行列 PT 全体を計算するには、次を使用します。

ungbr(queue, generate::p, n, n, m, a, ...)

(配列 a には少なくとも n 行が必要であることに注意してください)。

m < n の場合に PT の先頭の m 行を形成するには、次を使用します。

ungbr(queue, generate::p, m, n, m, a, ...)

API#

構文#

namespace oneapi::mkl::lapack { 
  void ungbr(sycl::queue &queue, 
  mkl::generate gen, 
  int64_t m, 
  int64_t n, 
  int64_t k, 
  sycl::buffer<T> &a, 
  int64_t lda, 
  sycl::buffer<T> &tau, 
  sycl::buffer<T> &scratchpad, 
  int64_t scratchpad_size) 
}

ungbr は次の精度とデバイスをサポートしています。

T

デバイスサポート

std::complex<float>

CPU

std::complex<double>

CPU

入力パラメーター#

queue

計算が実行されるデバイスキュー。

gen

generate::q または generate::p である必要があります。

gen= generate::q の場合、ルーチンは行列 Q を生成します。

gen= generate::p の場合、ルーチンは行列 P を生成します。

m

戻される行列 Q または PT の行数 (0 m)

gen= generate::q の場合、m n min(m, k) となります。

gen= generate::p の場合、n m min(n, k) となります。

n

戻される行列 Q または PT の行数 (0 n)。制約については m を参照してください。

k

gen= generate::q の場合、元の m 行 k 列の行列の列数が gebrd によって縮小されます。

gen= generate::p の場合、元の k 行 n 列の行列の行数は gebrd によって縮小されます。

a

gebrd が返すメモリーを保持するバッファー。

lda

a の先頭次元。

tau

gen= generate::q の場合、配列 tauq は gebrd 関数によって返されます。

gen= generate::p の場合、配列 taup は gebrd 関数によって返されます。

tau の次元は gen = generate::q の場合 min(m,k) 以上で、gen = generate::p の場合は min(n,k) 以上でなければなりません。

scratchpad

ルーチンが中間結果を維持するスクラッチパッド・メモリーを保持するバッファー。

scratchpad_size

T タイプの浮動小数点要素の数であるスクラッチパッド・メモリーのサイズ。サイズは、ungbr_scratchpad_size 関数が返す値以下であってはなりません。

出力パラメーター#

a

gen、m、n で指定された、m 行 m 列のユニタリー行列 Q または PT の先頭の n 列 (またはその先頭の行または列) で上書きされます。

例外#

例外

説明

mkl::lapack::exception

この例外は、計算中に問題が発生した場合にスローされます。例外オブジェクトの info() メソッドを使用して、問題の情報コードを取得できます。

info = -i の場合、i 番目のパラメーターの値が不正です。

info がスクラッチパッドのサイズとして渡された値と等しく、detail() がゼロ以外を返す場合、渡されたスクラッチパッドのサイズが十分ではなく、必要なサイズは例外オブジェクトの detail() メソッドによって返される値以上である必要があります。