File: immdda.f

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