!----------------------------------------------------------------- ! ! Purpose ! ======= ! ! LA_ORGTR / LA_UNGTR generates a real orthogonal / complex unitary ! matrix Q which is defined as the product of elementary reflectors, ! as returned by LA_SYTRD / LA_HETRD: ! ! if UPLO = 'U', Q = H(n-1) . . . H(2) H(1), ! ! if UPLO = 'L', Q = H(1) H(2) . . . H(n-1). ! ! ======= ! ! SUBROUTINE LA_ORGTR / LA_UNGTR( A, TAU, UPLO, INFO ) ! .. Scalar Arguments .. ! CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO ! INTEGER, INTENT(OUT), OPTIONAL :: INFO ! .. Array Arguments .. ! (), INTENT(IN) :: TAU(:) ! (), INTENT(INOUT) :: A(:,:) ! where ! ::= REAL | COMPLEX ! ::= KIND(1.0) | KIND(1.0D0) ! ! Defaults ! ======== ! ! 1. If UPLO is not present then UPLO = 'U' is assumed. ! ! Arguments ! ========= ! ! A (input/output) either REAL or COMPLEX square array, ! shape (:,:), size(A,1) == size(A,2) >= 0. ! On entry, the vectors which define the elementary ! reflectors, as returned by LA_SYTRD or LA_HETRD. ! On exit the orthogonal or unitary matrix Q. ! ! TAU (input) either REAL or COMPLEX array, ! shape (:), size(TAU) == size(A,1)-1. ! TAU(i) must contain the scalar factor of the elementary ! reflector H(i), as returned by LA_SYTRD or LA_HETRD. ! ! UPLO Optional, (input) CHARACTER*1 ! If UPLO is present then: ! = 'U': Upper triangle of A is stored ! = 'L': Lower triangle of A is stored ! otherwise UPLO = 'U' is assumed. ! ! INFO Optional, (output) INTEGER ! If INFO is present: ! = 0: successful exit ! < 0: if INFO = -i, the i-th argument had an illegal value ! If INFO is not present and an error occurs, then the program ! is terminated with an error message. ! ! ---------------------------------- .