SCALAPACK 2.2.2
LAPACK: Linear Algebra PACKage
Loading...
Searching...
No Matches
immdda.f
Go to the documentation of this file.
1 SUBROUTINE immdda( M, N, ALPHA, A, LDA, BETA, B, LDB )
2*
3* -- PBLAS auxiliary routine (version 2.0) --
4* University of Tennessee, Knoxville, Oak Ridge National Laboratory,
5* and University of California, Berkeley.
6* April 1, 1998
7*
8* .. Scalar Arguments ..
9 INTEGER LDA, LDB, M, N
10 INTEGER ALPHA, BETA
11* ..
12* .. Array Arguments ..
13 INTEGER A( LDA, * ), B( LDB, * )
14* ..
15*
16* Purpose
17* =======
18*
19* IMMDDA performs the following operation:
20*
21* A := alpha * A + beta * B,
22*
23* where alpha, beta are scalars and A and B are m by n matrices.
24*
25* Arguments
26* =========
27*
28* M (local input) INTEGER
29* On entry, M specifies the number of rows of A and B. M must
30* be at least zero.
31*
32* N (local input) INTEGER
33* On entry, N specifies the number of columns of A and B.
34* N must be at least zero.
35*
36* ALPHA (local input) INTEGER
37* On entry, ALPHA specifies the scalar alpha. When ALPHA is
38* supplied as zero then the local entries of the array A need
39* not be set on input.
40*
41* A (local input/local output) INTEGER array
42* On entry, A is an array of dimension ( LDA, N ). On exit, the
43* leading m by n part of B has been added to the leading m by n
44* part of A.
45*
46* LDA (local input) INTEGER
47* On entry, LDA specifies the leading dimension of the array A.
48* LDA must be at least max( 1, M ).
49*
50* BETA (local input) INTEGER
51* On entry, BETA specifies the scalar beta. When BETA is sup-
52* plied as zero then the local entries of the array B need not
53* be set on input.
54*
55* B (local input) INTEGER array
56* On entry, B is an array of dimension ( LDB, N ).
57*
58* LDB (local input) INTEGER
59* On entry, LDB specifies the leading dimension of the array B.
60* LDB must be at least max( 1, M ).
61*
62* -- Written on April 1, 1998 by
63* Antoine Petitet, University of Tennessee, Knoxville 37996, USA.
64*
65* =====================================================================
66*
67* .. Parameters ..
68 INTEGER ONE, ZERO
69 parameter( one = 1, zero = 0 )
70* ..
71* .. Local Scalars ..
72 INTEGER I, J
73* ..
74* .. Executable Statements ..
75*
76 IF( beta.EQ.one ) THEN
77 IF( alpha.EQ.zero ) THEN
78 DO 20 j = 1, n
79 DO 10 i = 1, m
80 a( i, j ) = b( i, j )
81 10 CONTINUE
82 20 CONTINUE
83 ELSE IF( alpha.NE.one ) THEN
84 DO 40 j = 1, n
85 DO 30 i = 1, m
86 a( i, j ) = b( i, j ) + alpha * a( i, j )
87 30 CONTINUE
88 40 CONTINUE
89 ELSE
90 DO 60 j = 1, n
91 DO 50 i = 1, m
92 a( i, j ) = b( i, j ) + a( i, j )
93 50 CONTINUE
94 60 CONTINUE
95 END IF
96 ELSE IF( beta.NE.zero ) THEN
97 IF( alpha.EQ.zero ) THEN
98 DO 80 j = 1, n
99 DO 70 i = 1, m
100 a( i, j ) = beta * b( i, j )
101 70 CONTINUE
102 80 CONTINUE
103 ELSE IF( alpha.NE.one ) THEN
104 DO 100 j = 1, n
105 DO 90 i = 1, m
106 a( i, j ) = beta * b( i, j ) + alpha * a( i, j )
107 90 CONTINUE
108 100 CONTINUE
109 ELSE
110 DO 120 j = 1, n
111 DO 110 i = 1, m
112 a( i, j ) = beta * b( i, j ) + a( i, j )
113 110 CONTINUE
114 120 CONTINUE
115 END IF
116 ELSE
117 IF( alpha.EQ.zero ) THEN
118 DO 140 j = 1, n
119 DO 130 i = 1, m
120 a( i, j ) = zero
121 130 CONTINUE
122 140 CONTINUE
123 ELSE IF( alpha.NE.one ) THEN
124 DO 160 j = 1, n
125 DO 150 i = 1, m
126 a( i, j ) = alpha * a( i, j )
127 150 CONTINUE
128 160 CONTINUE
129 END IF
130 END IF
131*
132 RETURN
133*
134* End of IMMDDA
135*
136 END
subroutine immdda(m, n, alpha, a, lda, beta, b, ldb)
Definition immdda.f:2