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