793
  794
  795
  796
  797
  798
  799      CHARACTER*1          ADIST
  800      INTEGER              ICONTXT, M, N, NB, LDA, LDB, LCMP, LCMQ, NINT
  801      COMPLEX              BETA
  802
  803
  804      COMPLEX              A( LDA, * ), B( LDB, * )
  805
  806
  807
  808
  809
  810
  811
  812
  813
  814
  815
  816      COMPLEX            ONE
  817      parameter( one = ( 1.0e+0, 0.0e+0 ) )
  818
  819
  820      INTEGER            JA, JB, K, INTV
  821
  822
  823      LOGICAL            LSAME
  824      INTEGER            ICEIL
  826
  827
  829
  830
  831
  832      IF( 
lsame( adist, 
'R' ) ) 
THEN 
  833         intv = nb * lcmq
  834         ja = 1
  835         jb = 1
  836         DO 10 k = 1, 
iceil( nint, nb )
 
  837            CALL pbcmatadd( icontxt, 
'G', m, 
min( n-jb+1, nb ), one,
 
  838     $                      a(1,ja), lda, beta, b(1,jb), ldb )
  839            ja = ja + nb
  840            jb = jb + intv
  841   10    CONTINUE
  842
  843
  844
  845      ELSE
  846         intv = nb * lcmp
  847         ja = 1
  848         jb = 1
  849         DO 20 k = 1, 
iceil( nint, nb )
 
  850            CALL pbcmatadd( icontxt, 
'G', 
min( m-jb+1, nb ), n, one,
 
  851     $                      a(ja,1), lda, beta, b(jb,1), ldb )
  852            ja = ja + nb
  853            jb = jb + intv
  854   20    CONTINUE
  855      END IF
  856
  857      RETURN
  858
  859
  860
integer function iceil(inum, idenom)
 
subroutine pbcmatadd(icontxt, mode, m, n, alpha, a, lda, beta, b, ldb)