Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
doubleprecision | :: | xr | ||||
doubleprecision | :: | xi | ||||
doubleprecision | :: | yr | ||||
doubleprecision | :: | yi |
subroutine mat_watan(xr,xi,yr,yi) ! ident_47="@(#)M_LA::mat_watan(3fp): y = atan(x) = (i/2)*log((i+x)/(i-x))" doubleprecision :: xr doubleprecision :: xi doubleprecision :: yr doubleprecision :: yi doubleprecision :: tr doubleprecision :: 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 la_err(32) ! Singularity of LOG or ATAN endif end subroutine mat_watan