706
707
708
709
710
711
712 CHARACTER*1 ADIST, TRANS
713 INTEGER ICONTXT, INTV, LDA, LDB, M, N, NB
714 COMPLEX*16 BETA
715
716
717 COMPLEX*16 A( LDA, * ), B( LDB, * )
718
719
720
721
722
723
724
725
726
727
728
729
730 COMPLEX*16 ONE
731 parameter( one = ( 1.0d+0, 0.0d+0 ) )
732
733
734 INTEGER IA, IB, K
735
736
737 LOGICAL LSAME
738 INTEGER ICEIL
740
741
743
744
746
747
748
749 IF( intv.EQ.nb ) THEN
750 CALL pbzmatadd( icontxt, trans, n, m, one, a, lda, beta, b,
751 $ ldb )
752
753 ELSE
754
755
756
757 IF(
lsame( adist,
'C' ) )
THEN
758 ia = 1
759 ib = 1
760 DO 10 k = 1,
iceil( m, intv )
762 $ one, a(ia,1), lda, beta, b(1,ib), ldb )
763 ia = ia + intv
764 ib = ib + nb
765 10 CONTINUE
766
767
768
769 ELSE
770 ia = 1
771 ib = 1
772 DO 20 k = 1,
iceil( n, intv )
774 $ one, a(1,ia), lda, beta, b(ib,1), ldb )
775 ia = ia + intv
776 ib = ib + nb
777 20 CONTINUE
778 END IF
779 END IF
780
781 RETURN
782
783
784
integer function iceil(inum, idenom)
subroutine pbzmatadd(icontxt, mode, m, n, alpha, a, lda, beta, b, ldb)