Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
doubleprecision | :: | in_real | ||||
doubleprecision | :: | in_imag | ||||
doubleprecision | :: | out_real | ||||
doubleprecision | :: | out_imag |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
doubleprecision, | public | :: | r | ||||
doubleprecision, | public | :: | t |
subroutine mat_wlog(in_real,in_imag,out_real,out_imag)
! ident_22="@(#)M_LA::mat_wlog(3fp): y = log(x)"
doubleprecision :: in_real, in_imag
doubleprecision :: out_real, out_imag
doubleprecision :: t
doubleprecision :: r
r = mat_pythag(in_real,in_imag)
if (r .eq. 0.0d0) then
call mat_err(32) ! Singularity of LOG or ATAN
else
t = datan2(in_imag,in_real)
if (in_imag.eq.0.0d0 .and. in_real.lt.0.0d0) t = dabs(t)
out_real = dlog(r)
out_imag = t
endif
end subroutine mat_wlog