615
  616
  617
  618
  619
  620
  621      CHARACTER*1        ADIST, TRANS
  622      INTEGER            ICONTXT, LCMP, LCMQ, LDA, LDB, M, N, NB
  623      COMPLEX*16         BETA
  624
  625
  626      COMPLEX*16         A( LDA, * ), B( LDB, * )
  627
  628
  629
  630
  631
  632
  633
  634
  635
  636
  637
  638
  639      COMPLEX*16         ONE
  640      parameter( one  = ( 1.0d+0, 0.0d+0 ) )
  641
  642
  643      INTEGER            IA, IB, K, INTV, JNTV
  644
  645
  647
  648
  649      LOGICAL            LSAME
  650      INTEGER            ICEIL
  652
  653
  655
  656
  657
  658      IF( lcmp.EQ.lcmq ) THEN
  659         CALL pbzmatadd( icontxt, trans, n, m, one, a, lda, beta, b,
 
  660     $                   ldb )
  661
  662      ELSE
  663
  664
  665
  666         IF( 
lsame( adist, 
'C' ) ) 
THEN 
  667            intv = lcmp * nb
  668            jntv = lcmq * nb
  669            ia = 1
  670            ib = 1
  671            DO 10 k = 1, 
iceil( m, intv )
 
  673     $                         one, a(ia,1), lda, beta, b(1,ib), ldb )
  674               ia = ia + intv
  675               ib = ib + jntv
  676   10       CONTINUE
  677
  678
  679
  680         ELSE
  681            intv = lcmp * nb
  682            jntv = lcmq * nb
  683            ia = 1
  684            ib = 1
  685            DO 20 k = 1, 
iceil( n, jntv )
 
  687     $                         one, a(1,ia), lda, beta, b(ib,1), ldb )
  688               ia = ia + jntv
  689               ib = ib + intv
  690   20       CONTINUE
  691         END IF
  692      END IF
  693
  694      RETURN
  695
  696
  697
integer function iceil(inum, idenom)
 
subroutine pbzmatadd(icontxt, mode, m, n, alpha, a, lda, beta, b, ldb)