XLPack 7.0
XLPack 数値計算ライブラリ (C API) リファレンスマニュアル
読み取り中…
検索中…
一致する文字列を見つけられません

◆ zhbtrd()

void zhbtrd ( char  vect,
char  uplo,
int  n,
int  kd,
int  ldab,
doublecomplex  ab[],
double  d[],
double  e[],
int  ldq,
doublecomplex  q[],
doublecomplex  work[],
int *  info 
)

三重対角形への変換 (エルミート帯行列)

目的
本ルーチンはエルミート帯行列 A をユニタリ相似変換 Q^H * A * Q = T により実対称三重対角形 T に変換する.
引数
[in]vect= 'N': Q を求めない.
= 'V': Q を求める.
= 'U': X を X*Q により更新する.
[in]uplo= 'U': A の上三角部分を格納する.
= 'L': A の下三角部分を格納する.
[in]n行列 A の行および列数. (n >= 0) (n = 0 の場合, 処理を行わずに戻る)
[in]kd上帯幅(uplo = 'U' の場合)あるいは下帯幅(uplo = 'L' の場合). (kd >= 0)
[in]ldab二次元配列 ab[][] の整合寸法. (ldab >= kd + 1)
[in,out]ab[][]配列 ab[lab][ldab] (lab >= n)
[in] エルミート帯行列 A の上または下三角部分を配列の最初の kd+1 列に格納する. A の j 列が配列 ab の j 行に次のように格納される.
uplo = 'U': ab[j][kd + i - j] = A(i, j). ただし, max(0, j - kd - 1) <= i <= j <= n - 1.
uplo = 'L': ab[j][i - j] = A(i, j). ただし, 0 <= j <= i <= min(n - 1, j + kd - 1).
[out] ab の対角要素は三重対角行列 T の対角要素で上書きされる. kd > 0 であれば上副対角要素(uplo = 'U' の場合)または下副対角要素(uplo = 'L' の場合)は T の副対角要素で上書きされる. ab のその他の部分は変換中に生成される値で上書きされる.
[out]d[]配列 d[ld] (ld >= n)
三重対角行列 T の対角要素: d[i] = a[i][i].
[out]e[]配列 e[le] (le >= n - 1)
三重対角行列 T の副対角要素: uplo = 'U' の場合 e[i] = a[i+1][i], uplo = 'L' の場合 e[i] = a[i][i+1].
[in]ldq二次元配列 q[][] の整合寸法. (ldq >= 1 (vect = 'N' の場合). ldq >= n (vect = 'V' または 'U' の場合))
[in,out]q[][]配列 q[lq][ldq] (lq >= n)
[in] vect = 'U' の場合, q には n x n 行列 X を入れる. vect = 'N' または 'V' の場合, q は設定不要である.
[out] vect = 'V' の場合, q には n x n ユニタリ行列 Q が入る. vect = 'U' の場合, q には積 X*Q が入る. vect = 'N' の場合, 配列 q は参照されない.
[out]work[]配列 work[lwork] (lwork >= n)
作業領域.
[out]info= 0: 正常終了.
= -1: 入力パラメータ vect の誤り. (vect != 'N', 'V' および 'U')
= -2: 入力パラメータ uplo の誤り. (uplo != 'U' および 'L')
= -3: 入力パラメータ n の誤り. (n < 0) = -4: 入力パラメータ kd の誤り. (kd < 0) = -5: 入力パラメータ ldab の誤り (ldab < kd + 1)
= -9: 入力パラメータ ldq の誤り (ldq が小さすぎる)
出典
LAPACK