subroutine csroot(xr,xi,yr,yi) real xr,xi,yr,yi c c (yr,yi) = complex dsqrt(xr,xi) c branch chosen so that yr .ge. 0.0 and sign(yi) .eq. sign(xi) c real s,tr,ti,pythag tr = xr ti = xi s = sqrt(0.5e0*(pythag(tr,ti) + abs(tr))) if (tr .ge. 0.0e0) yr = s if (ti .lt. 0.0e0) s = -s if (tr .le. 0.0e0) yi = s if (tr .lt. 0.0e0) yr = 0.5e0*(ti/yi) if (tr .gt. 0.0e0) yi = 0.5e0*(ti/yr) return end