1DTRSM(1)                         BLAS routine                         DTRSM(1)
2
3
4

NAME

6       DTRSM  -  solves  one of the matrix equations   op( A )*X = alpha*B, or
7       X*op( A ) = alpha*B,
8

SYNOPSIS

10       SUBROUTINE DTRSM(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
11
12           DOUBLE                                                    PRECISION
13                                                                     ALPHA
14
15           INTEGER                                                   LDA,LDB,M,N
16
17           CHARACTER                                                 DIAG,SIDE,TRANSA,UPLO
18
19           DOUBLE                                                    PRECISION
20                                                                     A(LDA,*),B(LDB,*)
21

PURPOSE

23       DTRSM  solves one of the matrix equations
24
25       where  alpha  is a scalar, X and B are m by n matrices, A is a unit, or
26       non-unit,  upper or lower triangular matrix  and  op( A )  is one  of
27
28          op( A ) = A   or   op( A ) = A'.
29
30       The matrix X is overwritten on B.
31
32

ARGUMENTS

34       SIDE   - CHARACTER*1.
35              On entry, SIDE specifies whether op( A ) appears on the left  or
36              right of X as follows:
37
38              SIDE = 'L' or 'l'   op( A )*X = alpha*B.
39
40              SIDE = 'R' or 'r'   X*op( A ) = alpha*B.
41
42              Unchanged on exit.
43
44       UPLO   - CHARACTER*1.
45              On  entry,  UPLO  specifies  whether the matrix A is an upper or
46              lower triangular matrix as follows:
47
48              UPLO = 'U' or 'u'   A is an upper triangular matrix.
49
50              UPLO = 'L' or 'l'   A is a lower triangular matrix.
51
52              Unchanged on exit.
53
54              TRANSA - CHARACTER*1.  On entry, TRANSA specifies  the  form  of
55              op( A ) to be used in the matrix multiplication as follows:
56
57              TRANSA = 'N' or 'n'   op( A ) = A.
58
59              TRANSA = 'T' or 't'   op( A ) = A'.
60
61              TRANSA = 'C' or 'c'   op( A ) = A'.
62
63              Unchanged on exit.
64
65       DIAG   - CHARACTER*1.
66              On  entry, DIAG specifies whether or not A is unit triangular as
67              follows:
68
69              DIAG = 'U' or 'u'   A is assumed to be unit triangular.
70
71              DIAG = 'N' or 'n'   A is not assumed to be unit triangular.
72
73              Unchanged on exit.
74
75       M      - INTEGER.
76              On entry, M specifies the number of rows of  B.  M  must  be  at
77              least zero.  Unchanged on exit.
78
79       N      - INTEGER.
80              On  entry, N specifies the number of columns of B.  N must be at
81              least zero.  Unchanged on exit.
82
83       ALPHA  - DOUBLE PRECISION.
84              On entry,  ALPHA specifies the scalar   alpha.  When   alpha  is
85              zero  then   A  is  not referenced and  B need not be set before
86              entry.  Unchanged on exit.
87
88       A      - DOUBLE PRECISION array of DIMENSION ( LDA, k ), where k is m
89              when  SIDE = 'L' or 'l'  and is  n  when  SIDE  =  'R'  or  'r'.
90              Before  entry   with   UPLO  = 'U' or 'u',  the  leading  k by k
91              upper triangular part of the array  A  must  contain  the  upper
92              triangular  matrix   and the strictly lower triangular part of A
93              is not referenced.  Before entry  with  UPLO = 'L' or 'l',   the
94              leading   k by k lower triangular part of the array  A must con‐
95              tain the lower triangular matrix  and the strictly upper  trian‐
96              gular  part  of A is not referenced.  Note that when  DIAG = 'U'
97              or 'u',  the diagonal elements of A  are not referenced  either,
98              but are assumed to be  unity.  Unchanged on exit.
99
100       LDA    - INTEGER.
101              On  entry, LDA specifies the first dimension of A as declared in
102              the calling (sub) program.  When  SIDE = 'L' or  'l'   then  LDA
103              must be at least  max( 1, m ),  when  SIDE = 'R' or 'r' then LDA
104              must be at least max( 1, n ).  Unchanged on exit.
105
106       B      - DOUBLE PRECISION array of DIMENSION ( LDB, n ).
107              Before entry,  the leading  m by n part of  the  array   B  must
108              contain   the   right-hand   side   matrix  B,  and  on exit  is
109              overwritten by the solution matrix  X.
110
111       LDB    - INTEGER.
112              On entry, LDB specifies the first dimension of B as declared  in
113              the  calling  (sub)  program.   LDB  must  be  at  least max( 1,
114              m ).  Unchanged on exit.
115

FURTHER DETAILS

117       Level 3 Blas routine.
118
119
120       -- Written on 8-February-1989.
121          Jack Dongarra, Argonne National Laboratory.
122          Iain Duff, AERE Harwell.
123          Jeremy Du Croz, Numerical Algorithms Group Ltd.
124          Sven Hammarling, Numerical Algorithms Group Ltd.
125
126
127
128
129BLAS routine                     November 2008                        DTRSM(1)
Impressum