dsyev
#include "blaswrap.h" #include "f2c.h" /* Subroutine */ int dsyev_(char *jobz, char *uplo, integer *n, doublereal *a, integer *lda, doublereal *w, doublereal *work, integer *lwork, integer *info) { /* -- LAPACK driver routine (version 3.0) -- Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., Courant Institute, Argonne National Lab, and Rice University June 30, 1999
引数
- JOBZ(入力) CHARACTER*1
- = 'N': 固有値のみを計算;
- = 'V': 固有値と固有ベクトルを計算.
- UPLO(入力) CHARACTER*1
- = 'U': Aの上三角行列を保持;
- = 'L': Aの下三角行列を保持;
- N(入力) INTEGER
- 行列Aの次元. N >= 0.
- A(入力/出力)doubleの配列,次元は(LDA,N)
- 入力では,対称行列A.UPLO = 'U'なら,最初のN x N上三角行列部に,行列Aの上三角行列部が含まれている.UPLO = 'L',なら,最初のN x N下三角行列部に,行列Aの下三角行列部が含まれている.
- 出力では,JOBZ = 'V'かつINFO = 0なら, 行列Aの正規直交固有ベクトルがAに保持される.JOBZ = 'N'なら,UPLO='L'では下三角,UPLO='U'では上三角は対角も含めて破壊されている.
- LDA(入力) INTEGER
- 配列Aの先行次元(Leading dimension). LDA >= max(1,N).
- W(出力) doubleの配列,次元N
- INFO = 0なら, 固有値は昇順.
- WORK(作業領域/出力) doubleの配列, 次元LWORK
- 出力で,INFO = 0なら, WORK[0]に最適なLWORKを返す.
- LWORK(入力) long int
- 配列WORKの長さ.LWORK >= max(1,3*N-1).
最適効率はLWORK >= (NB+2)*N.ここでNBはILAENV関数が返すDSYTRD関数用のブロックサイズ.もしLWORK = -1なら,ワークスペースの問い合わせを仮定している.つまり,ルーチンは,WORK配列の最適サイズを計算するだけ.WORK配列の最初の要素にこの値がかえる.下位関数のXERBLAが発するLWORKに関連したエラーメッセージはない.
- INFO(出力) long int
- =0: うまく計算終了
- <0: INFO=-iではi番目の引数が不適当.
- >0: INFO=iでは,アルゴリズムはうまく収束しなかった.つまり,計算の中間段階で生成する三重対角行列のi番目の非対角要素が0に収束しなかった.
Keyword(s):
References:[LinuxEx]