3
4
5
6
7
8
9 CHARACTER*1 ADIST
10 INTEGER ICONTXT, LCMP, LCMQ, LDA, LDB, , N, NB, NINT
11 COMPLEX*16 BETA
12
13
14 COMPLEX*16 A( LDA, * ), B( LDB, * )
15
16
17
18
19
20
21
22
23
24
25
26
27 COMPLEX*16 ONE
28 parameter( one = ( 1.0d+0, 0.0d+0 ) )
29
30
31 INTEGER JA, JB, K, KK, NJUMP
32
33
35
36
37 LOGICAL LSAME
38 INTEGER ICEIL
40
41
43
44
45
46 IF(
lsame( adist, 'r
' ) ) THEN
47 NJUMP = NB * LCMQ
48 DO 20 K = 0, LCMQ-1
49 JA = NINT * MOD( K*LCMP, LCMQ ) + 1
50 JB = K * NB + 1
51
52 DO 10 KK = 1, ICEIL( NINT, NB )
53.LT. IF( NJB ) GO TO 20
54 CALL PBZMATADD( ICONTXT, 'g', M, MIN( N-JB+1, NB ), ONE,
55 $ A(1, JA), LDA, BETA, B(1, JB), LDB )
56 JA = JA + NB
57 JB = JB + NJUMP
58 10 CONTINUE
59 20 CONTINUE
60
61
62
63 ELSE
64 NJUMP = NB * LCMP
65 DO 40 K = 0, LCMP-1
66 JA = 1
67 JB = K * NB + 1
68
69 DO 30 KK = 1, ICEIL( NINT, NB )
70.LT. IF( MJB ) GO TO 40
71 CALL PBZMATADD( ICONTXT, 'g', MIN( M-JB+1, NB ), N, ONE,
72 $ A(JA, N*MOD(K*LCMQ,LCMP)+1), LDA, BETA,
73 $ B(JB, 1), LDB )
74 JA = JA + NB
75 JB = JB + NJUMP
76 30 CONTINUE
77 40 CONTINUE
78 END IF
79
80 RETURN
81
82
83
logical function lsame(ca, cb)
LSAME
integer function iceil(inum, idenom)
subroutine pbzmatadd(icontxt, mode, m, n, alpha, a, lda, beta, b, ldb)