--- ai05s/ai05-0047-1.txt 2008/01/18 05:34:29 1.5 +++ ai05s/ai05-0047-1.txt 2008/03/07 06:15:19 1.6 @@ -1,6 +1,11 @@ -!standard G.3.1 08-01-17 AI05-0047-1/04 -!standard G.3.2 +!standard G.3.1(78/2) 08-02-26 AI05-0047-1/05 +!standard G.3.1(90/2) +!standard G.3.1(16/2) +!standard G.3.2(75/2) +!standard G.3.2(146/2) +!standard G.3.2(160/2) !class binding interpretation 07-04-04 +!status ARG Approved 7-0-2 08-02-09 !status work item 07-04-04 !status received 07-04-04 !priority Medium @@ -148,8 +153,13 @@ AARM NOTE J. H. Wilkinson is the acknowledged expert in this area. See for example Wilkinson, J. H., and Reinsch, C. , Linear Algebra , vol II of Handbook - for Automatic Computation, Springer-Verlag. + for Automatic Computation, Springer-Verlag, or Wilkinson, J. H., The + Algebraic Eigenvalue Problem, Oxford University Press. + +Modify G.3.2(16/2) and G.3.2(75/2) as follows + +function "abs" (Right : Complex_Vector) return [Complex]{Real'Base}; Insert after G.3.2(56/2) @@ -159,10 +169,6 @@ is required then this has to be stated explicitly by writing for example X * Conjugate(Y). This mimics the usual mathematical notation. -Modify G.3.2(75/2) as follows - -function "abs" (Right : Complex_Vector) return [Complex]{Real'Base}; - Modify G.3.2(146/2) as follows ... Constraint_Error is raised if A'Length(1) is not equal to A'Length(2) @@ -320,6 +326,93 @@ orthonormal vectors in the 2-space concerned might be returned. It seems that the unpleasantness mentioned by the implementor is inherent in the problem. + +!corrigendum G.3.1(78/2) + +@drepl +@xindent<This procedure computes both the eigenvalues and +eigenvectors of the symmetric matrix A. The out parameter Values is the same as +that obtained by calling the function Eigenvalues. The out parameter Vectors is +a matrix whose columns are the eigenvectors of the matrix A. The order of the +columns corresponds to the order of the eigenvalues. The eigenvectors are +normalized and mutually orthogonal (they are orthonormal), including when there +are repeated eigenvalues. Constraint_Error is raised if A'Length(1) is not +equal to A'Length(2). The index ranges of the parameter Vectors are those of A. +Argument_Error is raised if the matrix A is not symmetric.> +@dby +@xindent<This procedure computes both the eigenvalues and +eigenvectors of the symmetric matrix A. The out parameter Values is the same as +that obtained by calling the function Eigenvalues. The out parameter Vectors is +a matrix whose columns are the eigenvectors of the matrix A. The order of the +columns corresponds to the order of the eigenvalues. The eigenvectors are +normalized and mutually orthogonal (they are orthonormal), including when there +are repeated eigenvalues. Constraint_Error is raised if A'Length(1) is not +equal to A'Length(2), or if Values'Range is not equal to A'Range(1), or if the +index ranges of the parameter Vectors are not equal to those of A. +Argument_Error is raised if the matrix A is not symmetric. +Constraint_Error is also raised in implementation-defined circumstances +if the algorithm used does not converge quickly enough.> + +!corrigendum G.3.1(90/2) + +@dinsa +The test that a matrix is symmetric should be performed by using the equality +operator to compare the relevant components. +@dinst +An implementation should minimize the circumstances under which the +algorithm used for Eigenvalues and Eigensystem fails to converge. + +!corrigendum G.3.2(16/2) + +@drepl +@xcode<@b<function> "@b<abs>" (Right : Complex_Vector) @b<return> Complex;> +@dby +@xcode<@b<function> "@b<abs>" (Right : Complex_Vector) @b<return> Real'Base;> + +!corrigendum G.3.2(75/2) + +@drepl +@xcode<@b<function> "@b<abs>" (Right : Complex_Vector) @b<return> Complex;> +@dby +@xcode<@b<function> "@b<abs>" (Right : Complex_Vector) @b<return> Real'Base;> + +!corrigendum G.3.2(146/2) + +@drepl +@xindent<This procedure computes both the eigenvalues and +eigenvectors of the Hermitian matrix A. The out parameter Values is the same as +that obtained by calling the function Eigenvalues. The out parameter Vectors is +a matrix whose columns are the eigenvectors of the matrix A. The order of the +columns corresponds to the order of the eigenvalues. The eigenvectors are +normalized and mutually orthogonal (they are orthonormal), including when there +are repeated eigenvalues. Constraint_Error is raised if A'Length(1) is not +equal to A'Length(2). The index ranges of the parameter Vectors are those of A. +Argument_Error is raised if the matrix A is not Hermitian.> +@dby +@xindent<This procedure computes both the eigenvalues and +eigenvectors of the Hermitian matrix A. The out parameter Values is the same as +that obtained by calling the function Eigenvalues. The out parameter Vectors is +a matrix whose columns are the eigenvectors of the matrix A. The order of the +columns corresponds to the order of the eigenvalues. The eigenvectors are +normalized and mutually orthogonal (they are orthonormal), including when there +are repeated eigenvalues. Constraint_Error is raised if A'Length(1) is not +equal to A'Length(2), or if Values'Range is not equal to A'Range(1), or if the +index ranges of the parameter Vectors are not equal to those of A. +Argument_Error is raised if the matrix A is not Hermitian. +Constraint_Error is also raised in implementation-defined circumstances +if the algorithm used does not converge quickly enough.> + + +!corrigendum G.3.2(160/2) + +@dinsa +The test that a matrix is Hermitian should use the equality operator to +compare the real components and negation followed by equality to compare +the imaginary components (see G.2.1). +@dinst +An implementation should minimize the circumstances under which the +algorithm used for Eigenvalues and Eigensystem fails to converge. + !ACATS test

Questions? Ask the ACAA Technical Agent