-
Notifications
You must be signed in to change notification settings - Fork 124
Open
Description
julia> r = @rule ~a + ~b*x => (~a)^(-~b)
~a + ~b * x => (~a) ^ -(~b)
julia> r(3+2x)
ERROR: Failed to apply rule ~a + ~b * x => (~a) ^ -(~b) on expression 3 + 2x
Stacktrace:
[1] (::SymbolicUtils.Rule{…})(term::SymbolicUtils.BasicSymbolic{…})
@ SymbolicUtils ~/.julia/dev/SymbolicUtils/src/rule.jl:216
[2] top-level scope
@ REPL[4]:1
caused by: DomainError with -2:
Cannot raise an integer x to a negative power -2.
Make x or -2 a float by adding a zero decimal (e.g., 2.0^-2 or 2^-2.0 instead of 2^-2)or write 1/x^2, float(x)^-2, x^float(-2) or (x//1)^-2.
Stacktrace:
[1] throw_domerr_powbysq(::Int64, p::Int64)
@ Base ./intfuncs.jl:302
[2] power_by_squaring(x_::Int64, p::Int64; mul::typeof(*))
@ Base ./intfuncs.jl:324
[3] power_by_squaring
@ ./intfuncs.jl:313 [inlined]
[4] ^(x::Int64, p::Int64)
@ Base ./intfuncs.jl:348
[5] (::var"#1#2")(__MATCHES__::Base.ImmutableDict{Symbol, Any})
@ Main ~/.julia/dev/SymbolicUtils/src/rule.jl:440
[6] macro expansion
@ ~/.julia/dev/SymbolicUtils/src/utils.jl:11 [inlined]
[7] (::SymbolicUtils.var"#success#106"{SymbolicUtils.BasicSymbolic{Number}, var"#1#2"})(bindings::Base.ImmutableDict{Symbol, Any}, n::Int64)
@ SymbolicUtils ~/.julia/dev/SymbolicUtils/src/rule.jl:213
[8] (::SymbolicUtils.var"#commutative_term_matcher#128"{…})(success::SymbolicUtils.var"#success#106"{…}, data::Tuple{…}, bindings::Base.ImmutableDict{…})
@ SymbolicUtils ~/.julia/dev/SymbolicUtils/src/matchers.jl:191
[9] (::SymbolicUtils.Rule{…})(term::SymbolicUtils.BasicSymbolic{…})
@ SymbolicUtils ~/.julia/dev/SymbolicUtils/src/rule.jl:214
[10] top-level scope
@ REPL[4]:1
Some type information was truncated. Use `show(err)` to see complete types.
I dont understand how this can error, since executing:
julia> 3^(-2)
0.1111111111111111
gives no error
Metadata
Metadata
Assignees
Labels
No labels