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