コード例 #1
0
 /// <summary>Computes all eigenvalues and, optionally, eigenvectors of a real symmetric matrix using the Relatively Robust Representations.
 /// </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="a">The symmetric matrix, i.e. containing either upper or lower triangular part of the symmetric matrix, as specified by <paramref name="triangularMatrixType"/>. The length should be at least <paramref name="n"/>^2; overwritten on exit.</param>
 /// <param name="m">The total number of eigenvalues found (output).</param>
 /// <param name="w">The first <paramref name="m"/> values contain the selected eigenvalues in ascending order; this array should have a length of at least <paramref name="n"/> (output).</param>
 /// <param name="z">If <paramref name="job"/> indicates to compute eigenvectors, the first <paramref name="m"/> columns of matrix Z contain the orthonormal eigenvectors.</param>
 /// <param name="isuppz">The support of the eigenvectors in matrix Z, that is the indices indicating the nonzero elements in z (output).</param>
 /// <param name="work">A workspace array with at least 26 * <paramref name="n"/> elements.</param>
 /// <param name="iwork">A workspace array with at least 10 * <paramref name="n"/> elements.</param>
 /// <param name="triangularMatrixType">A value indicating whether the upper or lower triangular part of the symmetric input matrix is stored.</param>
 /// <param name="abstol">The absolute error tolerance for the eigenvalues.</param>
 public static void driver_dsyevr(this LapackEigenvalues.ISymmetricEigenvalueProblems symmetricEigenvalueProblems, LapackEigenvalues.SymmetricGeneralJob job, int n, double[] a, out int m, double[] w, double[] z, int[] isuppz, double[] work, int[] iwork, BLAS.TriangularMatrixType triangularMatrixType = BLAS.TriangularMatrixType.LowerTriangularMatrix, double abstol = MachineConsts.Epsilon)
 {
     symmetricEigenvalueProblems.driver_dsyevr(job, LapackEigenvalues.SymmetricEigenvaluesRange.All, n, a, 0, 0, 0, 0, out m, w, z, isuppz, work, iwork, triangularMatrixType, abstol);
 }
コード例 #2
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);
 }
コード例 #3
0
 public void dstemrQuery(LapackEigenvalues.SymmetricGeneralJob job, LapackEigenvalues.SymmetricEigenvaluesRange range, int n, double vl, double vu, int il, int iu, out int lwork, out int liwork, out int nzc)
 {
     throw new NotImplementedException();
 }
コード例 #4
0
 public void zstemr(LapackEigenvalues.SymmetricGeneralJob job, LapackEigenvalues.SymmetricEigenvaluesRange range, int n, double[] d, double[] e, double vl, double vu, int il, int iu, out int m, double[] w, Complex[] z, int nzc, int[] isuppz, double[] work, int[] iwork, bool tryrac = true)
 {
     throw new NotImplementedException();
 }
コード例 #5
0
 public void driver_zhpev(LapackEigenvalues.SymmetricGeneralJob job, int n, Complex[] ap, double[] w, Complex[] z, Complex[] work, double[] rwork, BLAS.TriangularMatrixType triangularMatrixType = BLAS.TriangularMatrixType.LowerTriangularMatrix)
 {
     throw new NotImplementedException();
 }
コード例 #6
0
 public void dstegr(LapackEigenvalues.SymmetricGeneralJob job, LapackEigenvalues.SymmetricEigenvaluesRange range, int n, double[] d, double[] e, double vl, double vu, int il, int iu, out int m, double[] w, double[] z, int[] isuppz, double[] work, int[] iwork)
 {
     throw new NotImplementedException();
 }
コード例 #7
0
 public int driver_zheevxQuery(LapackEigenvalues.SymmetricGeneralJob job, LapackEigenvalues.SymmetricEigenvaluesRange range, int n, double vl, double vu, int il, int iu, BLAS.TriangularMatrixType triangularMatrixType = BLAS.TriangularMatrixType.LowerTriangularMatrix, double abstol = 1E-08)
 {
     throw new NotImplementedException();
 }
コード例 #8
0
 public void driver_zheevx(LapackEigenvalues.SymmetricGeneralJob job, LapackEigenvalues.SymmetricEigenvaluesRange range, int n, Complex[] a, double vl, double vu, int il, int iu, out int m, double[] w, Complex[] z, int[] ifail, Complex[] work, double[] rwork, int[] iwork, BLAS.TriangularMatrixType triangularMatrixType = BLAS.TriangularMatrixType.LowerTriangularMatrix, double abstol = 1E-08)
 {
     throw new NotImplementedException();
 }
コード例 #9
0
 public int driver_zheevQuery(LapackEigenvalues.SymmetricGeneralJob job, int n, BLAS.TriangularMatrixType triangularMatrixType = BLAS.TriangularMatrixType.LowerTriangularMatrix)
 {
     throw new NotImplementedException();
 }
コード例 #10
0
 public void driver_zheevdQuery(LapackEigenvalues.SymmetricGeneralJob job, int n, out int lwork, out int liwork, out int lrwork, BLAS.TriangularMatrixType triangularMatrixType = BLAS.TriangularMatrixType.LowerTriangularMatrix)
 {
     throw new NotImplementedException();
 }
コード例 #11
0
 public void driver_dsyevd(LapackEigenvalues.SymmetricGeneralJob job, int n, double[] a, double[] w, double[] work, int[] iwork, BLAS.TriangularMatrixType triangularMatrixType = BLAS.TriangularMatrixType.LowerTriangularMatrix)
 {
     throw new NotImplementedException();
 }