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