kusano 2b45e8
      subroutine crotgf(ca,cb,c,s)
kusano 2b45e8
      complex ca,cb,s
kusano 2b45e8
      real c
kusano 2b45e8
      real norm,scale
kusano 2b45e8
      complex alpha
kusano 2b45e8
      if (cabs(ca) .ne. 0.) go to 10
kusano 2b45e8
         c = 0.
kusano 2b45e8
         s = (1.,0.)
kusano 2b45e8
         ca = cb
kusano 2b45e8
         go to 20
kusano 2b45e8
   10 continue
kusano 2b45e8
         scale = cabs(ca) + cabs(cb)
kusano 2b45e8
         norm = scale * sqrt((cabs(ca/scale))**2 + (cabs(cb/scale))**2)
kusano 2b45e8
         alpha = ca /cabs(ca)
kusano 2b45e8
         c = cabs(ca) / norm
kusano 2b45e8
         s = alpha * conjg(cb) / norm
kusano 2b45e8
         ca = alpha * norm
kusano 2b45e8
   20 continue
kusano 2b45e8
      return
kusano 2b45e8
      end