28 lines
		
	
	
		
			702 B
		
	
	
	
		
			Fortran
		
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			702 B
		
	
	
	
		
			Fortran
		
	
	
	
|       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
 |