salomon
salomon

Reputation: 283

Complex numbers in R vs. Matlab

I observed the following phenomenon when using R and Matlab.

When I apply log to a negative number in R, I get the following error message:

Warning message: In log(-1) : NaNs produced

However, when I apply log to a negative number in Matlab, I get e.g., the following complex numbers:

log(-1): 0.0000 + 3.1416i

log(-5): 1.6094 + 3.1416i

Is there any way to achieve the same behavior in R? Or is there anything in favor of the default option in R?

Upvotes: 4

Views: 78

Answers (1)

r2evans
r2evans

Reputation: 160437

log gives you complex when you give it complex in the first place.

log(-1+0i)
# [1] 0+3.141593i
log(-5+0i)
# [1] 1.609438+3.141593i

I don't know why it doesn't give an option to do this by default, but then again I don't work in complex numbers all the time.

If you want to do this programmatically, you can use as.complex:

log(as.complex(-1))
# [1] 0+3.141593i

or even make a helper function simplify it for you:

mylog <- function(x, ...) log(as.complex(x), ...)
mylog(-1)
# [1] 0+3.141593i

Upvotes: 5

Related Questions