428 REAL(mpd),
INTENT(IN OUT) :: w(mp1,n)
429 INTEGER(mpi),
INTENT(IN) :: mp1
430 INTEGER(mpi),
INTENT(IN) :: n
431 REAL(mpd),
INTENT(OUT) :: aux(n)
433 REAL(mpd) :: v(mp1,n),b(n),x(n), vs(*),rxw
436 aux(i)=16.0_mpd*w(1,i)
439 IF(w(1,i)+aux(i) /= aux(i))
THEN
444 DO j=1,min(mp1-1,n-i)
446 DO k=1,min(mp1-1,n-i)+1-j
447 w(k,i+j)=w(k,i+j)-w(k+j,i)*rxw
454 entry dbcslv(w,mp1,n,b, x)
460 DO j=1,min(mp1-1,n-i)
461 x(j+i)=x(j+i)-w(j+1,i)*x(i)
466 DO j=1,min(mp1-1,n-i)
467 rxw=rxw-w(j+1,i)*x(j+i)
473 entry dbciel(w,mp1,n, v)
477 DO j=i,max(1,i-mp1+1),-1
478 DO k=j+1,min(n,j+mp1-1)
479 rxw=rxw-v(1+abs(i-k),min(i,k))*w(1+k-j,j)
487 entry dbcinb(w,mp1,n, vs)
491 DO j=i,max(1,i-mp1+1),-1
492 DO k=j+1,min(n,j+mp1-1)
493 rxw=rxw-vs((max(i,k)*(max(i,k)-1))/2+min(i,k))*w(1+k-j,j)
504 entry dbcinv(w,mp1,n, vs)
509 DO k=j+1,min(n,j+mp1-1)
510 rxw=rxw-vs((max(i,k)*(max(i,k)-1))/2+min(i,k))*w(1+k-j,j)
629 REAL(mpd),
INTENT(IN OUT) :: w(2,n)
630 INTEGER(mpi),
INTENT(IN OUT) :: n
631 REAL(mpd),
INTENT(OUT) :: aux(n)
633 REAL(mpd) :: v(2,n),b(n),x(n), rxw
636 aux(i)=16.0_mpd*w(1,i)
639 IF(w(1,i)+aux(i) /= aux(i))
THEN
640 w(1,i)=1.0_mpd/w(1,i)
642 w(1,i+1)=w(1,i+1)-w(2,i)*rxw
649 IF(w(1,n)+aux(n) > aux(n))
THEN
650 w(1,n)=1.0_mpd/w(1,n)
656 entry db2slv(w,n,b, x)
662 x(i+1)=x(i+1)-w(2,i)*x(i)
666 x(i)=x(i)*w(1,i)-w(2,i)*x(i+1)
675 v(2,n-1)=-v(1,n )*w(2,n-1)
677 v(1,i )= w(1,i )-v(2,i )*w(2,i )
678 v(2,i-1)=-v(1,i )*w(2,i-1)
680 v(1,2)= w(1,2)-v(2,2)*w(2,2)
681 v(2,1)=-v(1,2)*w(2,1)
682 v(1,1)= w(1,1)-v(2,1)*w(2,1)
717 REAL(mpd),
INTENT(IN OUT) :: w(3,n)
718 INTEGER(mpi),
INTENT(IN OUT) :: n
719 REAL(mpd),
INTENT(OUT) :: aux(n)
722 REAL(mpd) :: v(3,n),b(n),x(n), rxw
725 aux(i)=16.0_mpd*w(1,i)
728 IF(w(1,i)+aux(i) /= aux(i))
THEN
729 w(1,i)=1.0_mpd/w(1,i)
731 w(1,i+1)=w(1,i+1)-w(2,i)*rxw
732 w(2,i+1)=w(2,i+1)-w(3,i)*rxw
735 w(1,i+2)=w(1,i+2)-w(3,i)*rxw
743 IF(w(1,n-1)+aux(n-1) > aux(n-1))
THEN
744 w(1,n-1)=1.0_mpd/w(1,n-1)
745 rxw=w(2,n-1)*w(1,n-1)
746 w(1,n)=w(1,n)-w(2,n-1)*rxw
752 IF(w(1,n)+aux(n) > aux(n))
THEN
753 w(1,n)=1.0_mpd/w(1,n)
759 entry db3slv(w,n,b, x)
764 x(i+1)=x(i+1)-w(2,i)*x(i)
765 x(i+2)=x(i+2)-w(3,i)*x(i)
767 x(n)=x(n)-w(2,n-1)*x(n-1)
769 x(n-1)=x(n-1)*w(1,n-1)-w(2,n-1)*x(n)
771 x(i)=x(i)*w(1,i)-w(2,i)*x(i+1)-w(3,i)*x(i+2)
780 v(2,n-1)=-v(1,n )*w(2,n-1)
781 v(3,n-2)=-v(2,n-1)*w(2,n-2)-v(1,n )*w(3,n-2)
782 v(1,n-1)= w(1,n-1) -v(2,n-1)*w(2,n-1)
783 v(2,n-2)=-v(1,n-1)*w(2,n-2)-v(2,n-1)*w(3,n-2)
784 v(3,n-3)=-v(2,n-2)*w(2,n-3)-v(1,n-1)*w(3,n-3)
786 v(1,i )= w(1,i ) -v(2,i )*w(2,i )-v(3,i)*w(3,i )
787 v(2,i-1)=-v(1,i )*w(2,i-1)-v(2,i)*w(3,i-1)
788 v(3,i-2)=-v(2,i-1)*w(2,i-2)-v(1,i)*w(3,i-2)
790 v(1,2)= w(1,2) -v(2,2)*w(2,2)-v(3,2)*w(3,2)
791 v(2,1)=-v(1,2)*w(2,1)-v(2,2)*w(3,1)
792 v(1,1)= w(1,1) -v(2,1)*w(2,1)-v(3,1)*w(3,1)
856 REAL(mpd),
INTENT(OUT) :: w(*)
857 INTEGER(mpi),
INTENT(IN) :: n
858 INTEGER(mpi) :: i,j,k
859 REAL(mpd) :: epsm,gamm,xchi,beta,delta,theta
865 gamm=max(gamm,abs(w((k*k+k)/2)))
867 xchi=max(xchi,abs(w((j*j-j)/2+k)))
870 beta=sqrt(max(gamm,xchi/max(1.0_mpd,sqrt(real(n*n-1,mpd))),epsm))
871 delta=epsm*max(1.0_mpd,gamm+xchi)
875 w((k*k-k)/2+i)=w((k*k-k)/2+i)*w((i*i+i)/2)
879 w((j*j-j)/2+k)=w((j*j-j)/2+k)-w((k*k-k)/2+i)*w((j*j-j)/2+i)
884 theta=max(theta,abs(w((j*j-j)/2+k)))
886 w((k*k+k)/2)=1.0_mpd/max(abs(w((k*k+k)/2)),(theta/beta)**2,delta)
888 w((j*j+j)/2)=w((j*j+j)/2)-w((j*j-j)/2+k)**2*w((k*k+k)/2)
908 REAL(mpd),
INTENT(OUT) :: w(mp1,n)
909 INTEGER(mpi),
INTENT(IN OUT) :: mp1
910 INTEGER(mpi),
INTENT(IN) :: n
911 INTEGER(mpi) :: i,j,k
912 REAL(mpd) :: epsm,gamm,xchi,beta,delta,theta
918 gamm=max(gamm,abs(w(1,k)))
919 DO j=2,min(mp1,n-k+1)
920 xchi=max(xchi,abs(w(j,k)))
923 beta=sqrt(max(gamm,xchi/max(1.0_mpd,sqrt(real(n*n-1,mpd))),epsm))
924 delta=epsm*max(1.0_mpd,gamm+xchi)
928 w(i,k-i+1)=w(i,k-i+1)*w(1,k-i+1)
930 DO j=2,min(mp1,n-k+1)
931 DO i=max(2,j+k+1-mp1),k
932 w(j,k)=w(j,k)-w(k-i+2,i-1)*w(j-i+k+1,i-1)
936 DO j=2,min(mp1,n-k+1)
937 theta=max(theta,abs(w(j,k)))
939 w(1,k)=1.0_mpd/max(abs(w(1,k)),(theta/beta)**2,delta)
940 DO j=2,min(mp1,n-k+1)
941 w(1,k+j-1)=w(1,k+j-1)-w(1,k)*w(j,k)**2