|
|
◆ dopmtr()
| void dopmtr |
( |
char |
side, |
|
|
char |
uplo, |
|
|
char |
trans, |
|
|
int |
m, |
|
|
int |
n, |
|
|
double |
ap[], |
|
|
double |
tau[], |
|
|
int |
ldc, |
|
|
double |
c[], |
|
|
double |
work[], |
|
|
int * |
info |
|
) |
| |
三重対角形への変換行列の乗算 (対称行列) (圧縮形式)
- 目的
- 本ルーチンは m x n 一般行列 C に以下の演算を行い上書きする.
side = 'L' side = 'R'
trans = 'N': Q * C C * Q
trans = 'T': Q^T * C C * Q^T
ただし, Q は nq 次の実直交行列である(nq = m (side = 'L' の場合), nq = n (side = 'R' の場合)). Q は dsptrd が圧縮形式で返す nq - 1 個の基本鏡映の積で定義される. uplo = 'U' の場合, Q = H(nq-1) . . . H(2) H(1),
uplo = 'L' の場合, Q = H(1) H(2) . . . H(nq-1).
- 引数
-
| [in] | side | = 'L': Q または Q^T を左から適用する.
= 'R': Q または Q^T を右から適用する. |
| [in] | uplo | = 'U': 圧縮形式の上三角部分が dsptrd の前回呼び出しで使われた.
= 'L': 圧縮形式の下三角部分が dsptrd の前回呼び出しで使われた. |
| [in] | trans | = 'N': 転置しない. Q を適用する.
= 'T': 転置する. Q^T を適用する. |
| [in] | m | 行列 C の行数. (m >= 0) (m = 0 の場合, 処理を行わずに戻る) |
| [in] | n | 行列 C の列数. (n >= 0) (n = 0 の場合, 処理を行わずに戻る) |
| [in] | ap[] | 配列 ap[lap] (lap >= m(m + 1)/2 (side = 'L' の場合), lap >= n(n + 1)/2 (side = 'R' の場合)
dsptrd が返す基本鏡映を定義するベクトル. ap[] は変更されるが終了時には元に戻される. |
| [in] | tau[] | 配列 tau[ltau] (ltau >= m - 1 (side = 'L' の場合), ltau >= n - 1 (side = 'R' の場合))
tau[i] は dsptrd により返された基本鏡映 H(i) のスカラー係数でなければならない. |
| [in] | ldc | 二次元配列c[][]の整合寸法. (ldc >= max(1, m)) |
| [in,out] | c[][] | 配列 c[lc][ldc] (lc >= n)
[in] m x n 行列 C.
[out] C は Q*C, Q^T*C, C*Q^T または C*Q により上書きされる. |
| [out] | work[] | 配列 work[lwork] (lwork >= n (side = 'L' の場合), lwork >= m (side = 'R' の場合))
作業領域. |
| [out] | info | = 0: 正常終了.
= -1: 入力パラメータ side の誤り. (side != 'L' および 'R')
= -2: 入力パラメータ uplo の誤り. (uplo != 'U' および 'L')
= -3: 入力パラメータ trans の誤り. (trans != 'N' および 'T')
= -4: 入力パラメータ m の誤り. (m < 0)
= -5: 入力パラメータ n の誤り. (n < 0)
= -8: 入力パラメータ ldc の誤り. (ldc < n) |
- 出典
- LAPACK
|