【发布时间】:2018-09-08 13:05:09
【问题描述】:
当我试图计算时
julia> -2.3^-7.6
-0.0017818389423254909
但是我的计算器给出的结果是
0.0005506 + 0.001694 i
为了安全起见,我又试了一次,但这次它抱怨了。为什么我第一次尝试时它没有抱怨?
julia> a = -2.3; b = -7.6; a^b
ERROR: DomainError with -2.6:
Exponentiation yielding a complex result requires a complex argument.
Replace x^y with (x+0im)^y, Complex(x)^y, or similar.
Stacktrace:
[1] throw_exp_domainerror(::Float64) at ./math.jl:35
[2] ^(::Float64, ::Float64) at ./math.jl:769
[3] top-level scope at none:0
[4] eval at ./boot.jl:319 [inlined]
[5] #85 at /Users/ssiew/.julia/packages/Atom/jodeb/src/repl.jl:129 [inlined]
[6] with_logstate(::getfield(Main, Symbol("##85#87")),::Base.CoreLogging.LogState) at ./logging.jl:397
[7] with_logger(::Function, ::Atom.Progress.JunoProgressLogger) at ./logging.jl:493
[8] top-level scope at /Users/ssiew/.julia/packages/Atom/jodeb/src/repl.jl:128
【问题讨论】:
-
顺便说一句。
-2.3**-7.6的 python 的结果是相同的 (-0.0017818389423254909) ... -
在python中尝试(-2.3)**(-7.6)
-
我明白你的意思! :) 你可能会create issue。但是您也可以尝试
import Base.^;function Base.:^(x::Float64, y::Float64) z = ccall("llvm.pow.f64", llvmcall, Float64, (Float64, Float64), x, y); if isnan(z) & !isnan(x+y) return Complex(x)^y; end; z; end,然后(-2.3) ^ -7.6可能会像您期望的那样工作:P
标签: math julia operator-precedence