// dstev.cc // 実対称3重対角行列の固有値方程式を解く #include extern "C" { void dstev_ ( const char& JOBZ, const int& N, double* D, double* E, double** Z, const int& LDZ, double* WORK, int& INFO, int JOBZlen ); }; // 実対称3重対角行列 H の固有値方程式 H x = E x を解く簡易関数 // Input: H[2][N], Output: U[N][N], E[N] // H[0][N] に対角成分、H[1][N] 下副対角成分 // U^\dagger H U が対角行列となる // template int dstev( double H[2][N], double U[N][N], double E[N] ) { int i, j, info; static double work[4*N]; static double DL[N]; for( j=0; j