211 *     (1) symmetric matrix w: decomposition, solution, inverse
 
  225       DOUBLE PRECISION w(*),aux(n),b(*),x(*),v(*),sum,ratio
 
  228        aux(i)=16.0d0*w((i*i+i)/2) 
 
  233        IF(w(ii)+aux(i).NE.aux(i)) 
THEN      
  243          w(kk+j)=w(kk+j)-w(kk+i)*ratio   
 
  254       entry dchslv(w,n,b, x)       
 
  255       WRITE(*,*) 
'before copy' 
  259       WRITE(*,*) 
'after copy'    
  269       WRITE(*,*) 
'after forward' 
  280       WRITE(*,*) 
'after backward' 
  291          sum=sum-w(j+(k*k-k)/2)*v(l+(m*m-m)/2) 
 
  310       DOUBLE PRECISION w(*),aux(n),sum,sumu,sums
 
  315        IF(w((i*i+i)/2).LT.w((is*is+is)/2)) is=i 
 
  316        IF(w((i*i+i)/2).GT.w((ir*ir+ir)/2)) ir=i 
 
  322        IF(i.EQ.ir) sum=1.0d0
 
  325         sum=sum-w(kk+i)*aux(k)             
 
  329        sumu=sumu+aux(i)*aux(i)
 
  331       xlan=sngl(w((ir*ir+ir)/2)*dsqrt(sumu))
 
  332       IF(xlan.NE.0.0) xlan=1.0/xlan
 
  337        ELSE IF(i.GT.is) 
THEN 
  338           sums=sums+w(is+(i*i-i)/2)**2
 
  342       IF(w((is*is+is)/2).NE.0.0) xla1=sngl(dsqrt(sums)/w((is*is+is)/2))
 
  345       IF(xla1.GT.0.0.AND.xlan.GT.0.0) cond=xla1/xlan 
 
  346 *     estimated condition
 
  351 *     (2) symmetric band matrix: decomposition, solution, complete
 
  352 *                                inverse and band part of the inverse
 
  365       SUBROUTINE dbcdec(W,MP1,N, AUX)  ! decomposition, bandwidth M
 
  366 *     m=mp1-1                                    n*m(m-1) dot operations
 
  368       DOUBLE PRECISION w(mp1,n),v(mp1,n),b(n),x(n),aux(n),vs(*),rxw
 
  374        IF(w(1,i)+aux(i).NE.aux(i)) 
THEN 
  379        DO j=1,min(mp1-1,n-i)
 
  381         DO k=1,min(mp1-1,n-i)+1-j
 
  382          w(k,i+j)=w(k,i+j)-w(k+j,i)*rxw 
 
  389       entry dbcslv(w,mp1,n,b, x)  
 
  390 *                                                n*(2m-1) dot operations
 
  395        DO j=1,min(mp1-1,n-i)
 
  396         x(j+i)=x(j+i)-w(j+1,i)*x(i)   
 
  401        DO j=1,min(mp1-1,n-i)
 
  402         rxw=rxw-w(j+1,i)*x(j+i)         
 
  408       entry dbciel(w,mp1,n, v)    
 
  409 *                                               n*m*(m-1) dot operations
 
  412        DO j=i,max(1,i-mp1+1),-1
 
  413         DO k=j+1,min(n,j+mp1-1)
 
  414          rxw=rxw-v(1+abs(i-k),min(i,k))*w(1+k-j,j)
 
  422       entry dbcinb(w,mp1,n, vs)   
 
  423 *                                             n*m*(m-1) dot operations
 
  426        DO j=i,max(1,i-mp1+1),-1
 
  427         DO k=j+1,min(n,j+mp1-1)
 
  428          rxw=rxw-vs((max(i,k)*(max(i,k)-1))/2+min(i,k))*w(1+k-j,j)
 
  433 c       
DO j=max(1,i-mp1+1)-1,1,-1
 
  434 c        vs((i*i-i)/2+j)=0.0
 
  439       entry dbcinv(w,mp1,n, vs)   
 
  440 *                                             n*n/2*(m-1) dot operations
 
  444         DO k=j+1,min(n,j+mp1-1)
 
  445          rxw=rxw-vs((max(i,k)*(max(i,k)-1))/2+min(i,k))*w(1+k-j,j)
 
  464       DOUBLE PRECISION w(mp1,n),b(n),err
 
  473         IF(i+1-j.GT.0.AND.nj.LT.5) 
THEN 
  475            rho=sngl(w(j,i+1-j)/(err*dsqrt(w(1,i+1-j))))
 
  476            irho(nj)=ifix(100.0*abs(rho)+0.5)
 
  477            IF(rho.LT.0.0) irho(nj)=-irho(nj)
 
  480        WRITE(*,102) i,b(i),err,(irho(j),j=1,nj)
 
  483   101 format(5x,
'i   Param',7x,
'error',7x,
'  c(i,i-1) c(i,i-2)'/)
 
  484   102 format(1x,i5,2g12.4,1x,5i9)
 
  485   103 format(33x,
'(correlation coefficients in percent)')
 
  497       DOUBLE PRECISION w(mp1,n)
 
  503        WRITE(*,102) i,(w(j,i),j=1,mp1)
 
  506   101 format(5x,
'i   Diag  ')
 
  507   102 format(1x,i5,6g12.4)
 
  511 *     (3) symmetric band matrix of band width m=1: decomposition,
 
  512 *            solution, complete, inverse and band part of the inverse
 
  538       DOUBLE PRECISION w(2,n),v(2,n),b(n),x(n),aux(n),rxw
 
  544        IF(w(1,i)+aux(i).NE.aux(i)) 
THEN 
  547           w(1,i+1)=w(1,i+1)-w(2,i)*rxw
 
  554       IF(w(1,n)+aux(n).GT.aux(n)) 
THEN            
  561       entry db2slv(w,n,b, x)      
 
  562 *     the equation w(original)*x=b is solved for x; input is b in vector x.
 
  567        x(i+1)=x(i+1)-w(2,i)*x(i)
 
  571        x(i)=x(i)*w(1,i)-w(2,i)*x(i+1)
 
  576 *     the band elements of the inverse of w(original) are calculated,
 
  577 *     and stored in v in the same order as in w.
 
  578 *     remaining elements of the inverse are not calculated.
 
  580       v(2,n-1)=-v(1,n  )*w(2,n-1)
 
  582        v(1,i  )= w(1,i  )-v(2,i  )*w(2,i  )
 
  583        v(2,i-1)=-v(1,i  )*w(2,i-1)
 
  585       v(1,2)= w(1,2)-v(2,2)*w(2,2)
 
  586       v(2,1)=-v(1,2)*w(2,1)
 
  587       v(1,1)= w(1,1)-v(2,1)*w(2,1)
 
  591 *     (4) symmetric band matrix of band width m=2: decomposition,
 
  592 *            solution, complete, inverse and band part of the inverse
 
  615       SUBROUTINE db3dec(W,N, AUX)      ! decomposition (M=2) 
 
  618       DOUBLE PRECISION w(3,n),v(3,n),b(n),x(n),aux(n),rxw
 
  624        IF(w(1,i)+aux(i).NE.aux(i)) 
THEN 
  627           w(1,i+1)=w(1,i+1)-w(2,i)*rxw
 
  628           w(2,i+1)=w(2,i+1)-w(3,i)*rxw
 
  631           w(1,i+2)=w(1,i+2)-w(3,i)*rxw
 
  639       IF(w(1,n-1)+aux(n-1).GT.aux(n-1)) 
THEN 
  640           w(1,n-1)=1.0d0/w(1,n-1)
 
  641           rxw=w(2,n-1)*w(1,n-1)
 
  642           w(1,n)=w(1,n)-w(2,n-1)*rxw
 
  648       IF(w(1,n)+aux(n).GT.aux(n)) 
THEN 
  655       entry db3slv(w,n,b, x)      
 
  660        x(i+1)=x(i+1)-w(2,i)*x(i)
 
  661        x(i+2)=x(i+2)-w(3,i)*x(i)
 
  663       x(n)=x(n)-w(2,n-1)*x(n-1) 
 
  665       x(n-1)=x(n-1)*w(1,n-1)-w(2,n-1)*x(n)
 
  667        x(i)=x(i)*w(1,i)-w(2,i)*x(i+1)-w(3,i)*x(i+2)
 
  672 *     the band elements of the inverse of w(original) are calculated,
 
  673 *     and stored in v in the same order as in w.
 
  674 *     remaining elements of the inverse are not calculated. 
 
  676       v(2,n-1)=-v(1,n  )*w(2,n-1) 
 
  677       v(3,n-2)=-v(2,n-1)*w(2,n-2)-v(1,n  )*w(3,n-2) 
 
  680       v(2,n-2)=-v(1,n-1)*w(2,n-2)-v(2,n-1)*w(3,n-2)
 
  681       v(3,n-3)=-v(2,n-2)*w(2,n-3)-v(1,n-1)*w(3,n-3)
 
  684      +          -v(2,i  )*w(2,i  )-v(3,i)*w(3,i  ) 
 
  685        v(2,i-1)=-v(1,i  )*w(2,i-1)-v(2,i)*w(3,i-1)
 
  686        v(3,i-2)=-v(2,i-1)*w(2,i-2)-v(1,i)*w(3,i-2)
 
  689      +       -v(2,2)*w(2,2)-v(3,2)*w(3,2)
 
  690       v(2,1)=-v(1,2)*w(2,1)-v(2,2)*w(3,1)
 
  692      +       -v(2,1)*w(2,1)-v(3,1)*w(3,1)
 
  696 *     (5) symmetric matrix with band structure, bordered by full row/col
 
  697 *          - is not yet included -
 
  699 c
      SUBROUTINE bsolv1(N,CU,RU,CK,RK,CH,     BK,UH,   AU) ! 1
 
  700 *     input:  cu = 3*n array         replaced by decomposition 
 
  702 *             ck   diagonal element
 
  706 *     aux:    au   n-vector auxliliary array   
 
  708 *     result: fk   curvature
 
  710 *             uh   smoothed 
data points
 
  713 c      
DOUBLE PRECISION cu(3,n),ci(3,n),ck,bk,au(n),uh(n)
 
  715 c      CALL bdadec(cu,3,n, au)    
 
  716 c      CALL dbaslv(cu,3,n, ru,uh)  
 
  717 c      CALL dbaslv(cu,3,n, ch,au)  
 
  721 c       ctz=ctz+ch(i)*au(i)        
 
  722 c       zru=zru+ry(i)*au(i)        
 
  727 c       uh(i)=uh(i)-fk*au(i)       
 
  731 c      entry binv1(n,cu,ci, fk,au)
 
  732 c      
DOUBLE PRECISION ci(3,n)
 
  734 c      CALL dbaibm(cu,3,n, ci)           
 
  736 c       ci(1,i)=ci(1,i)+fk*au(i)*au(i)   
 
  737 c       
IF(i.LT.n) ci(2,i)=ci(2,i)+fk*au(i)*au(i+1) 
 
  738 c       
IF(i.LT.n-1) ci(3,i)=ci(3,i)+fk*au(i)*au(i+2) 
 
  756       DOUBLE PRECISION w(*),epsm,gamm,xchi,beta,delta,theta
 
  762        gamm=max(gamm,abs(w((k*k+k)/2)))
 
  764         xchi=max(xchi,abs(w((j*j-j)/2+k)))
 
  767       beta=sqrt(max(gamm,xchi/max(1.0d0,sqrt(dfloat(n*n-1))),epsm))
 
  768       delta=epsm*max(1.0d0,gamm+xchi)
 
  772          w((k*k-k)/2+i)=w((k*k-k)/2+i)*w((i*i+i)/2)   
 
  776          w((j*j-j)/2+k)=w((j*j-j)/2+k)-w((k*k-k)/2+i)*w((j*j-j)/2+i)
 
  781         theta=max(theta,abs(w((j*j-j)/2+k)))
 
  783        w((k*k+k)/2)=1.0d0/max(abs(w((k*k+k)/2)),(theta/beta)**2,delta)
 
  785         w((j*j+j)/2)=w((j*j+j)/2)-w((j*j-j)/2+k)**2*w((k*k+k)/2)
 
  805       DOUBLE PRECISION w(mp1,n),epsm,gamm,xchi,beta,delta,theta
 
  811        gamm=max(gamm,abs(w(1,k)))
 
  812        DO j=2,min(mp1,n-k+1)
 
  813         xchi=max(xchi,abs(w(j,k)))
 
  816       beta=sqrt(max(gamm,xchi/max(1.0d0,sqrt(dfloat(n*n-1))),epsm))
 
  817       delta=epsm*max(1.0d0,gamm+xchi)
 
  821         w(i,k-i+1)=w(i,k-i+1)*w(1,k-i+1)
 
  823        DO j=2,min(mp1,n-k+1)
 
  824         DO i=max(2,j+k+1-mp1),k
 
  825          w(j,k)=w(j,k)-w(k-i+2,i-1)*w(j-i+k+1,i-1)
 
  829        DO j=2,min(mp1,n-k+1)
 
  830         theta=max(theta,abs(w(j,k))) 
 
  832        w(1,k)=1.0d0/max(abs(w(1,k)),(theta/beta)**2,delta) 
 
  833        DO j=2,min(mp1,n-k+1)
 
  834         w(1,k+j-1)=w(1,k+j-1)-w(1,k)*w(j,k)**2