private final static int dsygvd(int itype, String jobz, String uplo, int n, double[] a, int lda, double[] b, int ldb, double[] w) {
double[] work = new double[1];
double[] tmp = new double[1];
intW info = new intW(-1);
int lwork;
int[] iwork = new int[1];
int liwork;
LAPACK.getInstance().dsygvd(itype, jobz, uplo, n, tmp, lda, tmp, ldb, tmp, work, -1, iwork, 0, info);
if (info.val != 0)
return info.val;
lwork = (int) work[0];
work = new double[lwork];
liwork = (int) iwork[0];
iwork = new int[liwork];
LAPACK.getInstance().dsygvd(itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, iwork, liwork, info);
return info.val;
}