Пример #1
0
// note: both H and S are overwritten. Eigenvectors go into H.
void DiagonalizeGen(double *pEw, double *pH, uint ldH, double *pS, uint ldS, uint N)
{
    FORTINT info = 0, nWork = 128*N;
    double *pWork = (double*)::malloc(sizeof(double)*nWork);
    DSYGV(1, 'V', 'L', N, pH, ldH, pS, ldS, pEw, pWork, nWork, info );
    ::free(pWork);
    if ( info != 0 ) throw std::runtime_error("dsygv failed.");
};
Пример #2
0
 inline static void f( INTEGER * ITYPE, char * JOBZ, char * UPLO, INTEGER * N,
                       double * A, INTEGER * LDA, double * B, INTEGER * LDB, 
                       double * W, double * WORK, INTEGER * LWORK, INTEGER * INFO)
 {
   DSYGV( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, INFO );
 }