@@ -556,8 +556,27 @@ module stdlib_linalg
556556 #:endfor
557557 end interface
558558
559- interface eig
560- !! Eigendecomposition of a square matrix: return eigenvalues, and optionally eigenvectors
559+ ! Eigendecomposition of a square matrix: eigenvalues, and optionally eigenvectors
560+ interface eig
561+ !! version: experimental
562+ !!
563+ !! Solves the eigendecomposition \( A \cdot \bar{v} - \lambda \cdot \bar{v} \) for square matrix \( A \).
564+ !! ([Specification](../page/specs/stdlib_linalg.html#eig-eigenvalues-and-eigenvectors-of-a-square-matrix))
565+ !!
566+ !!### Summary
567+ !! Subroutine interface for computing eigenvalues and eigenvectors of a square matrix.
568+ !!
569+ !!### Description
570+ !!
571+ !! This interface provides methods for computing the eigenvalues, and optionally eigenvectors,
572+ !! of a general square matrix. Supported data types include `real` and `complex`, and no assumption is
573+ !! made on the matrix structure. The user may request either left, right, or both
574+ !! eigenvectors to be returned. They are returned as columns of a square matrix with the same size as `A`.
575+ !! Preallocated space for both eigenvalues `lambda` and the eigenvector matrices must be user-provided.
576+ !!
577+ !!@note The solution is based on LAPACK's general eigenproblem solvers `*GEEV`.
578+ !!@note BLAS/LAPACK backends do not currently support extended precision (``xdp``).
579+ !!
561580 #:for rk,rt,ri in RC_KINDS_TYPES
562581 #:if rk!="xdp"
563582 module subroutine stdlib_linalg_eig_${ri}$(a,lambda,right,left,overwrite_a,err)
@@ -580,8 +599,26 @@ module stdlib_linalg
580599 #:endfor
581600 end interface eig
582601
602+ ! Eigenvalues of a square matrix
583603 interface eigvals
584- !! Eigenvalues of a square matrix
604+ !! version: experimental
605+ !!
606+ !! Returns the eigenvalues \( lambda \), \( A \cdot \bar{v} - \lambda \cdot \bar{v} \), for square matrix \( A \).
607+ !! ([Specification](../page/specs/stdlib_linalg.html#eigvals-eigenvalues-of-a-square-matrix))
608+ !!
609+ !!### Summary
610+ !! Function interface for computing the eigenvalues of a square matrix.
611+ !!
612+ !!### Description
613+ !!
614+ !! This interface provides functions for returning the eigenvalues of a general square matrix.
615+ !! Supported data types include `real` and `complex`, and no assumption is made on the matrix structure.
616+ !! An `error stop` is thrown in case of failure; otherwise, error information can be returned
617+ !! as an optional `type(linalg_state_type)` output flag.
618+ !!
619+ !!@note The solution is based on LAPACK's general eigenproblem solvers `*GEEV`.
620+ !!@note BLAS/LAPACK backends do not currently support extended precision (``xdp``).
621+ !!
585622 #:for rk,rt,ri in RC_KINDS_TYPES
586623 #:if rk!="xdp"
587624 module function stdlib_linalg_eigvals_${ri}$(a,err) result(lambda)
@@ -605,8 +642,30 @@ module stdlib_linalg
605642 #:endfor
606643 end interface eigvals
607644
645+ ! Eigendecomposition of a real symmetric or complex hermitian matrix
608646 interface eigh
609- !! Eigendecomposition of a real symmetric or complex hermitian matrix
647+ !! version: experimental
648+ !!
649+ !! Solves the eigendecomposition \( A \cdot \bar{v} - \lambda \cdot \bar{v} \) for a real symmetric
650+ !! \( A = A^T \) or complex Hermitian \( A = A^H \) square matrix.
651+ !! ([Specification](../page/specs/stdlib_linalg.html#eigh-eigenvalues-and-eigenvectors-of-a-real-symmetric-or-complex-hermitian-square-matrix))
652+ !!
653+ !!### Summary
654+ !! Subroutine interface for computing eigenvalues and eigenvectors of a real symmetric or complex Hermitian square matrix.
655+ !!
656+ !!### Description
657+ !!
658+ !! This interface provides methods for computing the eigenvalues, and optionally eigenvectors,
659+ !! of a real symmetric or complex Hermitian square matrix. Supported data types include `real` and `complex`.
660+ !! The matrix must be symmetric (if `real`) or Hermitian (if `complex`). Only the lower or upper
661+ !! half of the matrix is accessed, and the user can select which using the optional `upper_a`
662+ !! flag (default: use lower half). The vectors are orthogonal, and may be returned as columns of an optional
663+ !! matrix `vectors` with the same kind and size as `A`.
664+ !! Preallocated space for both eigenvalues `lambda` and the eigenvector matrix must be user-provided.
665+ !!
666+ !!@note The solution is based on LAPACK's eigenproblem solvers `*SYEV`/`*HEEV`.
667+ !!@note BLAS/LAPACK backends do not currently support extended precision (``xdp``).
668+ !!
610669 #:for rk,rt,ri in RC_KINDS_TYPES
611670 #:if rk!="xdp"
612671 module subroutine stdlib_linalg_eigh_${ri}$(a,lambda,vectors,upper_a,overwrite_a,err)
@@ -629,8 +688,29 @@ module stdlib_linalg
629688 #:endfor
630689 end interface eigh
631690
691+ ! Eigenvalues of a real symmetric or complex hermitian matrix
632692 interface eigvalsh
633- !! Eigenvalues of a real symmetric or complex hermitian matrix
693+ !! version: experimental
694+ !!
695+ !! Returns the eigenvalues \( lambda \), \( A \cdot \bar{v} - \lambda \cdot \bar{v} \), for a real
696+ !! symmetric \( A = A^T \) or complex Hermitian \( A = A^H \) square matrix.
697+ !! ([Specification](../page/specs/stdlib_linalg.html#eigvalsh-eigenvalues-of-a-real-symmetric-or-complex-hermitian-square-matrix))
698+ !!
699+ !!### Summary
700+ !! Function interface for computing the eigenvalues of a real symmetric or complex hermitian square matrix.
701+ !!
702+ !!### Description
703+ !!
704+ !! This interface provides functions for returning the eigenvalues of a real symmetric or complex Hermitian
705+ !! square matrix. Supported data types include `real` and `complex`. The matrix must be symmetric
706+ !! (if `real`) or Hermitian (if `complex`). Only the lower or upper half of the matrix is accessed,
707+ !! and the user can select which using the optional `upper_a` flag (default: use lower half).
708+ !! An `error stop` is thrown in case of failure; otherwise, error information can be returned
709+ !! as an optional `type(linalg_state_type)` output flag.
710+ !!
711+ !!@note The solution is based on LAPACK's eigenproblem solvers `*SYEV`/`*HEEV`.
712+ !!@note BLAS/LAPACK backends do not currently support extended precision (``xdp``).
713+ !!
634714 #:for rk,rt,ri in RC_KINDS_TYPES
635715 #:if rk!="xdp"
636716 module function stdlib_linalg_eigvalsh_${ri}$(a,upper_a,err) result(lambda)
0 commit comments