program test external dorgql,ddot double precision ddot integer n,lwork,info parameter (n=50,lwork=784) integer i,j,idum,jdum double precision q(n,n),work(lwork),tau(n) open(10,file='q.dat') do j=1,n-1 do i=1,n-1 read(10,'(i2,x,i2,x,z16)')idum,jdum,q(i,j) end do end do close(10) open(10,file='tau.dat') do i=1,n-1 read(10,'(i2,x,z16)')idum,tau(i) end do close(10) call dorgql(n-1,n-1,n-1,q,n,tau,work,lwork,info) open(10,file='q.out') do j=1,n-1 do i=1,n-1 write(10,'(i2,x,i2,x,e24.16)')i,j,q(i,j) end do end do close(10) do i=1,n-1 do j=i+1,n-1 r=ddot(n-1,q(1,i),1,q(1,j),1) if( r.lt.-0.001 .or. r.gt.0.001 ) then print*,'FAILED: vectors are not orthogonal:',i,j stop end if end do end do print*,'Orthogonality test PASSED' stop end