Subroutine */
| 4820 | } /* ctrmm_ */ |
| 4821 | |
| 4822 | /* Subroutine */ int ctrmv_(char *uplo, char *trans, char *diag, integer *n, |
| 4823 | complex *a, integer *lda, complex *x, integer *incx) |
| 4824 | { |
| 4825 | /* System generated locals */ |
| 4826 | integer a_dim1, a_offset, i__1, i__2, i__3, i__4, i__5; |
| 4827 | complex q__1, q__2, q__3; |
| 4828 | |
| 4829 | /* Local variables */ |
| 4830 | static integer i__, j, ix, jx, kx, info; |
| 4831 | static complex temp; |
| 4832 | extern logical lsame_(char *, char *); |
| 4833 | extern /* Subroutine */ int xerbla_(char *, integer *); |
| 4834 | static logical noconj, nounit; |
| 4835 | |
| 4836 | |
| 4837 | /* |
| 4838 | Purpose |
| 4839 | ======= |
| 4840 | |
| 4841 | CTRMV performs one of the matrix-vector operations |
| 4842 | |
| 4843 | x := A*x, or x := A'*x, or x := conjg( A' )*x, |
| 4844 | |
| 4845 | where x is an n element vector and A is an n by n unit, or non-unit, |
| 4846 | upper or lower triangular matrix. |
| 4847 | |
| 4848 | Arguments |
| 4849 | ========== |
| 4850 | |
| 4851 | UPLO - CHARACTER*1. |
| 4852 | On entry, UPLO specifies whether the matrix is an upper or |
| 4853 | lower triangular matrix as follows: |
| 4854 | |
| 4855 | UPLO = 'U' or 'u' A is an upper triangular matrix. |
| 4856 | |
| 4857 | UPLO = 'L' or 'l' A is a lower triangular matrix. |
| 4858 | |
| 4859 | Unchanged on exit. |
| 4860 | |
| 4861 | TRANS - CHARACTER*1. |
| 4862 | On entry, TRANS specifies the operation to be performed as |
| 4863 | follows: |
| 4864 | |
| 4865 | TRANS = 'N' or 'n' x := A*x. |
| 4866 | |
| 4867 | TRANS = 'T' or 't' x := A'*x. |
| 4868 | |
| 4869 | TRANS = 'C' or 'c' x := conjg( A' )*x. |
| 4870 | |
| 4871 | Unchanged on exit. |
| 4872 | |
| 4873 | DIAG - CHARACTER*1. |
| 4874 | On entry, DIAG specifies whether or not A is unit |
| 4875 | triangular as follows: |
| 4876 | |
| 4877 | DIAG = 'U' or 'u' A is assumed to be unit triangular. |
| 4878 | |
| 4879 | DIAG = 'N' or 'n' A is not assumed to be unit |