648
649
650
651
652
653
654 INTEGER ICONTXT, N, NB, NZ, INCX, INCY, INTV
655 REAL BETA
656
657
658 REAL X( * ), Y( * )
659
660
661
662
663
664
665
666
667
668
670
671
672 INTEGER ICEIL
674
675
677
678
679 REAL ONE
680 parameter( one = 1.0e+0 )
681
682
683 INTEGER IX, IY, JZ, K, ITER
684
685 ix = 0
686 iy = 0
687 jz = nz
688 iter =
iceil( n+nz, intv )
689
690 IF( iter.GT.1 ) THEN
691 CALL pbsvecadd( icontxt,
'G', nb-jz, one, x(ix*incx+1), incx,
692 $ beta, y(iy*incy+1), incy )
693 ix = ix + nb - jz
694 iy = iy + intv - jz
695 jz = 0
696
697 DO 10 k = 2, iter-1
698 CALL pbsvecadd( icontxt,
'G', nb, one, x(ix*incx+1), incx,
699 $ beta, y(iy*incy+1), incy )
700 ix = ix + nb
701 iy = iy + intv
702 10 CONTINUE
703 END IF
704
706 $ x(ix*incx+1), incx, beta, y(iy*incy+1), incy )
707
708 RETURN
709
710
711
integer function iceil(inum, idenom)
subroutine pbsvecadd(icontxt, mode, n, alpha, x, incx, beta, y, incy)