SUBROUTINE orthog(anu,alpha,beta,a,b) USE nrtype; USE nrutil, ONLY : assert_eq IMPLICIT NONE REAL(SP), DIMENSION(:), INTENT(IN) :: anu,alpha,beta REAL(SP), DIMENSION(:), INTENT(OUT) :: a,b INTEGER(I4B) :: k,n,ndum REAL(SP), DIMENSION(2*size(a)+1,2*size(a)+1) :: sig n=assert_eq(size(a),size(b),'orthog: n') ndum=assert_eq(2*n,size(alpha)+1,size(anu),size(beta)+1,'orthog: ndum') sig(1,3:2*n)=0.0 sig(2,2:2*n+1)=anu(1:2*n) a(1)=alpha(1)+anu(2)/anu(1) b(1)=0.0 do k=3,n+1 sig(k,k:2*n-k+3)=sig(k-1,k+1:2*n-k+4)+(alpha(k-1:2*n-k+2) & -a(k-2))*sig(k-1,k:2*n-k+3)-b(k-2)*sig(k-2,k:2*n-k+3) & +beta(k-1:2*n-k+2)*sig(k-1,k-1:2*n-k+2) a(k-1)=alpha(k-1)+sig(k,k+1)/sig(k,k)-sig(k-1,k)/sig(k-1,k-1) b(k-1)=sig(k,k)/sig(k-1,k-1) end do END SUBROUTINE orthog