ScaLAPACK 2.1  2.1
ScaLAPACK: Scalable Linear Algebra PACKage
immadd.f
Go to the documentation of this file.
1  SUBROUTINE immadd( 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 * IMMADD performs the following operation:
20 *
21 * B := 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) INTEGER array
42 * On entry, A is an array of dimension ( LDA, N ).
43 *
44 * LDA (local input) INTEGER
45 * On entry, LDA specifies the leading dimension of the array A.
46 * LDA must be at least max( 1, M ).
47 *
48 * BETA (local input) INTEGER
49 * On entry, BETA specifies the scalar beta. When BETA is sup-
50 * plied as zero then the local entries of the array B need not
51 * be set on input.
52 *
53 * B (local input/local output) INTEGER array
54 * On entry, B is an array of dimension ( LDB, N ). On exit, the
55 * leading m by n part of A has been added to the leading m by n
56 * part of B.
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( alpha.EQ.one ) THEN
77  IF( beta.EQ.zero ) THEN
78  DO 20 j = 1, n
79  DO 10 i = 1, m
80  b( i, j ) = a( i, j )
81  10 CONTINUE
82  20 CONTINUE
83  ELSE IF( beta.NE.one ) THEN
84  DO 40 j = 1, n
85  DO 30 i = 1, m
86  b( i, j ) = a( i, j ) + beta * b( i, j )
87  30 CONTINUE
88  40 CONTINUE
89  ELSE
90  DO 60 j = 1, n
91  DO 50 i = 1, m
92  b( i, j ) = a( i, j ) + b( i, j )
93  50 CONTINUE
94  60 CONTINUE
95  END IF
96  ELSE IF( alpha.NE.zero ) THEN
97  IF( beta.EQ.zero ) THEN
98  DO 80 j = 1, n
99  DO 70 i = 1, m
100  b( i, j ) = alpha * a( i, j )
101  70 CONTINUE
102  80 CONTINUE
103  ELSE IF( beta.NE.one ) THEN
104  DO 100 j = 1, n
105  DO 90 i = 1, m
106  b( i, j ) = alpha * a( i, j ) + beta * b( i, j )
107  90 CONTINUE
108  100 CONTINUE
109  ELSE
110  DO 120 j = 1, n
111  DO 110 i = 1, m
112  b( i, j ) = alpha * a( i, j ) + b( i, j )
113  110 CONTINUE
114  120 CONTINUE
115  END IF
116  ELSE
117  IF( beta.EQ.zero ) THEN
118  DO 140 j = 1, n
119  DO 130 i = 1, m
120  b( i, j ) = zero
121  130 CONTINUE
122  140 CONTINUE
123  ELSE IF( beta.NE.one ) THEN
124  DO 160 j = 1, n
125  DO 150 i = 1, m
126  b( i, j ) = beta * b( i, j )
127  150 CONTINUE
128  160 CONTINUE
129  END IF
130  END IF
131 *
132  RETURN
133 *
134 * End of IMMADD
135 *
136  END
immadd
subroutine immadd(M, N, ALPHA, A, LDA, BETA, B, LDB)
Definition: immadd.f:2