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

NAME

6       DTRMM - performs one of the matrix-matrix operations   B := alpha*op( A
7       )*B, or B := alpha*B*op( A ),
8

SYNOPSIS

10       SUBROUTINE DTRMM(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       DTRMM  performs one of the matrix-matrix operations
24
25       where   alpha   is a scalar,  B  is an m by n matrix,  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

ARGUMENTS

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

FURTHER DETAILS

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