예제 #1
0
 /// <summary>Gets a optimal workspace array length for the <c>driver_dsyevr</c> function.
 /// </summary>
 /// <param name="symmetricEigenvalueProblems">The <see cref="LapackEigenvalues.ISymmetricEigenvalueProblems"/> object.</param>
 /// <param name="job">A value indicating what kind of job to do by the LAPACK function.</param>
 /// <param name="n">The order of the tridiagonal matrix.</param>
 /// <param name="liwork">The optimal workspace array length for parameter 'work'.</param>
 /// <param name="lwork">The optimal workspace array length for parameter 'iwork'.</param>
 /// <param name="triangularMatrixType">A value indicating whether the upper or lower triangular part of the Hermitian input matrix is stored.</param>
 /// <param name="abstol">The absolute error tolerance for the eigenvalues.</param>
 /// <remarks>The parameter <paramref name="triangularMatrixType"/> should not have an impact of the calculation of the optimal length of the workspace array.</remarks>
 public static void driver_dsyevrQuery(this LapackEigenvalues.ISymmetricEigenvalueProblems symmetricEigenvalueProblems, LapackEigenvalues.SymmetricGeneralJob job, int n, out int lwork, out int liwork, BLAS.TriangularMatrixType triangularMatrixType = BLAS.TriangularMatrixType.LowerTriangularMatrix, double abstol = MachineConsts.Epsilon)
 {
     symmetricEigenvalueProblems.driver_dsyevrQuery(job, LapackEigenvalues.SymmetricEigenvaluesRange.All, n, 0, 0, 0, 0, out lwork, out liwork, triangularMatrixType, abstol);
 }