subroutine mat_watan(xr,xi,yr,yi)
! ident_37="@(#) M_LA mat_watan(3fp) y = atan(x) = (i/2)*log((i+x)/(i-x))" --"
doubleprecision,intent(in) :: xr, xi
doubleprecision,intent(out) :: yr, yi
doubleprecision :: tr, ti
if (xi .eq. 0.0d0) then
yr = datan2(xr,1.0d0)
yi = 0.0d0
elseif (xr.ne.0.0d0 .or. dabs(xi).ne.1.0d0) then
call mat_wdiv(xr,1.0d0+xi,-xr,1.0d0-xi,tr,ti)
call mat_wlog(tr,ti,tr,ti)
yr = -(ti/2.0d0)
yi = tr/2.0d0
else
call mat_err(32) ! Singularity of LOG or ATAN
endif
end subroutine mat_watan