|
- 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
|