28 lines
675 B
FortranFixed
28 lines
675 B
FortranFixed
|
subroutine drotgf(da,db,c,s)
|
||
|
c
|
||
|
c construct givens plane rotation.
|
||
|
c jack dongarra, linpack, 3/11/78.
|
||
|
c
|
||
|
double precision da,db,c,s,roe,scale,r,z
|
||
|
c
|
||
|
roe = db
|
||
|
if( dabs(da) .gt. dabs(db) ) roe = da
|
||
|
scale = dabs(da) + dabs(db)
|
||
|
if( scale .ne. 0.0d0 ) go to 10
|
||
|
c = 1.0d0
|
||
|
s = 0.0d0
|
||
|
r = 0.0d0
|
||
|
z = 0.0d0
|
||
|
go to 20
|
||
|
10 r = scale*dsqrt((da/scale)**2 + (db/scale)**2)
|
||
|
r = dsign(1.0d0,roe)*r
|
||
|
c = da/r
|
||
|
s = db/r
|
||
|
z = 1.0d0
|
||
|
if( dabs(da) .gt. dabs(db) ) z = s
|
||
|
if( dabs(db) .ge. dabs(da) .and. c .ne. 0.0d0 ) z = 1.0d0/c
|
||
|
20 da = r
|
||
|
db = z
|
||
|
return
|
||
|
end
|