Files
piscal/dataassim/math/numrec/f77_sources/rotate.for
T
2016-02-03 18:52:05 +00:00

32 lines
687 B
Fortran

SUBROUTINE rotate(r,qt,n,np,i,a,b)
INTEGER n,np,i
REAL a,b,r(np,np),qt(np,np)
INTEGER j
REAL c,fact,s,w,y
if(a.eq.0.)then
c=0.
s=sign(1.,b)
else if(abs(a).gt.abs(b))then
fact=b/a
c=sign(1./sqrt(1.+fact**2),a)
s=fact*c
else
fact=a/b
s=sign(1./sqrt(1.+fact**2),b)
c=fact*s
endif
do 11 j=i,n
y=r(i,j)
w=r(i+1,j)
r(i,j)=c*y-s*w
r(i+1,j)=s*y+c*w
11 continue
do 12 j=1,n
y=qt(i,j)
w=qt(i+1,j)
qt(i,j)=c*y-s*w
qt(i+1,j)=s*y+c*w
12 continue
return
END