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