Skip to content

Commit 7295ac1

Browse files
authored
Merge pull request #998 from christoph-conrads/997-xSYEVR-clarify-use-of-multiple-algorithms
xSY/HEEVR: clarify use of multiple algorithms
2 parents 5426147 + e79eae6 commit 7295ac1

File tree

4 files changed

+66
-12
lines changed

4 files changed

+66
-12
lines changed

SRC/cheevr.f

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,16 @@
4141
*> \verbatim
4242
*>
4343
*> CHEEVR computes selected eigenvalues and, optionally, eigenvectors
44-
*> of a complex Hermitian matrix A. Eigenvalues and eigenvectors can
45-
*> be selected by specifying either a range of values or a range of
46-
*> indices for the desired eigenvalues.
44+
*> of a complex Hermitian matrix A. Eigenvalues and eigenvectors can be
45+
*> selected by specifying either a range of values or a range of indices
46+
*> for the desired eigenvalues. Invocations with different choices for
47+
*> these parameters may result in the computation of slightly different
48+
*> eigenvalues and/or eigenvectors for the same matrix. The reason for
49+
*> this behavior is that there exists a variety of algorithms (each
50+
*> performing best for a particular set of options) with CHEEVR
51+
*> attempting to select the best based on the various parameters. In all
52+
*> cases, the computed values are accurate within the limits of finite
53+
*> precision arithmetic.
4754
*>
4855
*> CHEEVR first reduces the matrix A to tridiagonal form T with a call
4956
*> to CHETRD. Then, whenever possible, CHEEVR calls CSTEMR to compute
@@ -107,6 +114,9 @@
107114
*> JOBZ is CHARACTER*1
108115
*> = 'N': Compute eigenvalues only;
109116
*> = 'V': Compute eigenvalues and eigenvectors.
117+
*>
118+
*> This parameter influences the choice of the algorithm and
119+
*> may alter the computed values.
110120
*> \endverbatim
111121
*>
112122
*> \param[in] RANGE
@@ -118,6 +128,9 @@
118128
*> = 'I': the IL-th through IU-th eigenvalues will be found.
119129
*> For RANGE = 'V' or 'I' and IU - IL < N - 1, SSTEBZ and
120130
*> CSTEIN are called
131+
*>
132+
*> This parameter influences the choice of the algorithm and
133+
*> may alter the computed values.
121134
*> \endverbatim
122135
*>
123136
*> \param[in] UPLO
@@ -242,6 +255,7 @@
242255
*> Note: the user must ensure that at least max(1,M) columns are
243256
*> supplied in the array Z; if RANGE = 'V', the exact value of M
244257
*> is not known in advance and an upper bound must be used.
258+
*> Supplying N columns is always safe.
245259
*> \endverbatim
246260
*>
247261
*> \param[in] LDZ

SRC/dsyevr.f

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,16 @@
3939
*> \verbatim
4040
*>
4141
*> DSYEVR computes selected eigenvalues and, optionally, eigenvectors
42-
*> of a real symmetric matrix A. Eigenvalues and eigenvectors can be
43-
*> selected by specifying either a range of values or a range of
44-
*> indices for the desired eigenvalues.
42+
*> of a real symmetric matrix A. Eigenvalues and eigenvectors can be
43+
*> selected by specifying either a range of values or a range of indices
44+
*> for the desired eigenvalues. Invocations with different choices for
45+
*> these parameters may result in the computation of slightly different
46+
*> eigenvalues and/or eigenvectors for the same matrix. The reason for
47+
*> this behavior is that there exists a variety of algorithms (each
48+
*> performing best for a particular set of options) with DSYEVR
49+
*> attempting to select the best based on the various parameters. In all
50+
*> cases, the computed values are accurate within the limits of finite
51+
*> precision arithmetic.
4552
*>
4653
*> DSYEVR first reduces the matrix A to tridiagonal form T with a call
4754
*> to DSYTRD. Then, whenever possible, DSYEVR calls DSTEMR to compute
@@ -105,6 +112,9 @@
105112
*> JOBZ is CHARACTER*1
106113
*> = 'N': Compute eigenvalues only;
107114
*> = 'V': Compute eigenvalues and eigenvectors.
115+
*>
116+
*> This parameter influences the choice of the algorithm and
117+
*> may alter the computed values.
108118
*> \endverbatim
109119
*>
110120
*> \param[in] RANGE
@@ -116,6 +126,9 @@
116126
*> = 'I': the IL-th through IU-th eigenvalues will be found.
117127
*> For RANGE = 'V' or 'I' and IU - IL < N - 1, DSTEBZ and
118128
*> DSTEIN are called
129+
*>
130+
*> This parameter influences the choice of the algorithm and
131+
*> may alter the computed values.
119132
*> \endverbatim
120133
*>
121134
*> \param[in] UPLO

SRC/ssyevr.f

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,16 @@
3939
*> \verbatim
4040
*>
4141
*> SSYEVR computes selected eigenvalues and, optionally, eigenvectors
42-
*> of a real symmetric matrix A. Eigenvalues and eigenvectors can be
43-
*> selected by specifying either a range of values or a range of
44-
*> indices for the desired eigenvalues.
42+
*> of a real symmetric matrix A. Eigenvalues and eigenvectors can be
43+
*> selected by specifying either a range of values or a range of indices
44+
*> for the desired eigenvalues. Invocations with different choices for
45+
*> these parameters may result in the computation of slightly different
46+
*> eigenvalues and/or eigenvectors for the same matrix. The reason for
47+
*> this behavior is that there exists a variety of algorithms (each
48+
*> performing best for a particular set of options) with SSYEVR
49+
*> attempting to select the best based on the various parameters. In all
50+
*> cases, the computed values are accurate within the limits of finite
51+
*> precision arithmetic.
4552
*>
4653
*> SSYEVR first reduces the matrix A to tridiagonal form T with a call
4754
*> to SSYTRD. Then, whenever possible, SSYEVR calls SSTEMR to compute
@@ -105,6 +112,9 @@
105112
*> JOBZ is CHARACTER*1
106113
*> = 'N': Compute eigenvalues only;
107114
*> = 'V': Compute eigenvalues and eigenvectors.
115+
*>
116+
*> This parameter influences the choice of the algorithm and
117+
*> may alter the computed values.
108118
*> \endverbatim
109119
*>
110120
*> \param[in] RANGE
@@ -116,6 +126,9 @@
116126
*> = 'I': the IL-th through IU-th eigenvalues will be found.
117127
*> For RANGE = 'V' or 'I' and IU - IL < N - 1, SSTEBZ and
118128
*> SSTEIN are called
129+
*>
130+
*> This parameter influences the choice of the algorithm and
131+
*> may alter the computed values.
119132
*> \endverbatim
120133
*>
121134
*> \param[in] UPLO

SRC/zheevr.f

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,16 @@
4141
*> \verbatim
4242
*>
4343
*> ZHEEVR computes selected eigenvalues and, optionally, eigenvectors
44-
*> of a complex Hermitian matrix A. Eigenvalues and eigenvectors can
45-
*> be selected by specifying either a range of values or a range of
46-
*> indices for the desired eigenvalues.
44+
*> of a complex Hermitian matrix A. Eigenvalues and eigenvectors can be
45+
*> selected by specifying either a range of values or a range of indices
46+
*> for the desired eigenvalues. Invocations with different choices for
47+
*> these parameters may result in the computation of slightly different
48+
*> eigenvalues and/or eigenvectors for the same matrix. The reason for
49+
*> this behavior is that there exists a variety of algorithms (each
50+
*> performing best for a particular set of options) with ZHEEVR
51+
*> attempting to select the best based on the various parameters. In all
52+
*> cases, the computed values are accurate within the limits of finite
53+
*> precision arithmetic.
4754
*>
4855
*> ZHEEVR first reduces the matrix A to tridiagonal form T with a call
4956
*> to ZHETRD. Then, whenever possible, ZHEEVR calls ZSTEMR to compute
@@ -107,6 +114,9 @@
107114
*> JOBZ is CHARACTER*1
108115
*> = 'N': Compute eigenvalues only;
109116
*> = 'V': Compute eigenvalues and eigenvectors.
117+
*>
118+
*> This parameter influences the choice of the algorithm and
119+
*> may alter the computed values.
110120
*> \endverbatim
111121
*>
112122
*> \param[in] RANGE
@@ -118,6 +128,9 @@
118128
*> = 'I': the IL-th through IU-th eigenvalues will be found.
119129
*> For RANGE = 'V' or 'I' and IU - IL < N - 1, DSTEBZ and
120130
*> ZSTEIN are called
131+
*>
132+
*> This parameter influences the choice of the algorithm and
133+
*> may alter the computed values.
121134
*> \endverbatim
122135
*>
123136
*> \param[in] UPLO
@@ -242,6 +255,7 @@
242255
*> Note: the user must ensure that at least max(1,M) columns are
243256
*> supplied in the array Z; if RANGE = 'V', the exact value of M
244257
*> is not known in advance and an upper bound must be used.
258+
*> Supplying N columns is always safe.
245259
*> \endverbatim
246260
*>
247261
*> \param[in] LDZ

0 commit comments

Comments
 (0)