442 & ( ido, bmat, n, which, nev, tol, resid, ncv, v, ldv, iparam,
443 & ipntr, workd, workl, lworkl, info, verbose )
456 character bmat*1, which*2
457 integer ido, info, ldv, lworkl, n, ncv, nev
466 integer iparam(11), ipntr(11)
468 & resid(n), v(ldv,ncv), workd(3*n), workl(lworkl)
476 parameter(one = 1.0d+0 , zero = 0.0d+0 )
482 integer bounds, ierr, ih, iq, ishift, iupd, iw,
483 & ldh, ldq, msglvl, mxiter, mode, nb,
484 & nev0, next, np, ritz, j, usrchk, unconv
485 save bounds, ierr, ih, iq, ishift, iupd, iw,
486 & ldh, ldq, msglvl, mxiter, mode, nb,
487 & nev0, next, np, ritz, usrchk, unconv
493 external mydsaup2 , dvout , ivout, second, dstats
539 else if (nev .le. 0)
then
541 else if (ncv .le. nev .or. ncv .gt. n)
then
552 if (mxiter .le. 0) ierr = -4
553 if (which .ne.
'LM' .and.
554 & which .ne.
'SM' .and.
555 & which .ne.
'LA' .and.
556 & which .ne.
'SA' .and.
557 & which .ne.
'BE') ierr = -5
558 if (bmat .ne.
'I' .and. bmat .ne.
'G') ierr = -6
560 if (lworkl .lt. ncv**2 + 8*ncv) ierr = -7
561 if (mode .lt. 1 .or. mode .gt. 5)
then
563 else if (mode .eq. 1 .and. bmat .eq.
'G')
then
565 else if (ishift .lt. 0 .or. ishift .gt. 1)
then
567 else if (nev .eq. 1 .and. which .eq.
'BE')
then
575 if (ierr .ne. 0)
then
585 if (nb .le. 0) nb = 1
586 if (tol .le. zero .and. usrchk .eq. 0)
587 & tol = dlamch(
'EpsMach')
603 do 10 j = 1, ncv**2 + 8*ncv
643 if (unconv .lt. 0 .or. unconv .gt. ncv )
then
656 & ( ido, bmat, n, which, nev0, np, tol, resid, mode, iupd,
657 & ishift, mxiter, v, ldv, workl(ih), ldh, workl(ritz),
658 & workl(bounds), workl(iq), ldq, workl(iw), ipntr, workd,
659 & info, verbose, usrchk, unconv )
666 if (ido .eq. 3) iparam(8) = np
667 if (ido .ne. 99) go to 9000
680 if (info .lt. 0) go to 9000
681 if (info .eq. 2) info = 3
683 if (msglvl .gt. 0)
then
684 call ivout(logfil, 1, mxiter, ndigit,
685 &
'_saupd: number of update iterations taken')
686 call ivout(logfil, 1, np, ndigit,
687 &
'_saupd: number of "converged" Ritz values')
688 call dvout(logfil, np, workl(ritz), ndigit,
689 &
'_saupd: final Ritz values')
690 call dvout(logfil, np, workl(bounds), ndigit,
691 &
'_saupd: corresponding error bounds')
697 if (msglvl .gt. 0)
then
704 write (6,1100) mxiter, nopx, nbx, nrorth, nitref, nrstrt,
705 & tmvopx, tmvbx, tsaupd, tsaup2, tsaitr, titref,
706 & tgetv0, tseigt, tsgets, tsapps, tsconv
708 & 5x,
'==========================================',/
709 & 5x,
'= Symmetric implicit Arnoldi update code =',/
710 & 5x,
'= Version Number:',
' 2.4' , 19x,
' =',/
711 & 5x,
'= Version Date: ',
' 07/31/96' , 14x,
' =',/
712 & 5x,
'==========================================',/
713 & 5x,
'= Summary of timing statistics =',/
714 & 5x,
'==========================================',//)
716 & 5x,
'Total number update iterations = ', i5,/
717 & 5x,
'Total number of OP*x operations = ', i5,/
718 & 5x,
'Total number of B*x operations = ', i5,/
719 & 5x,
'Total number of reorthogonalization steps = ', i5,/
720 & 5x,
'Total number of iterative refinement steps = ', i5,/
721 & 5x,
'Total number of restart steps = ', i5,/
722 & 5x,
'Total time in user OP*x operation = ', f12.6,/
723 & 5x,
'Total time in user B*x operation = ', f12.6,/
724 & 5x,
'Total time in Arnoldi update routine = ', f12.6,/
725 & 5x,
'Total time in saup2 routine = ', f12.6,/
726 & 5x,
'Total time in basic Arnoldi iteration loop = ', f12.6,/
727 & 5x,
'Total time in reorthogonalization phase = ', f12.6,/
728 & 5x,
'Total time in (re)start vector generation = ', f12.6,/
729 & 5x,
'Total time in trid eigenvalue subproblem = ', f12.6,/
730 & 5x,
'Total time in getting the shifts = ', f12.6,/
731 & 5x,
'Total time in applying the shifts = ', f12.6,/
732 & 5x,
'Total time in convergence testing = ', f12.6)