See:
|
# An expression like `base ^ exponent`, where the `base` is a |
|
# non-trivial expression that also needs to be re-written. We need |
|
# `!vectorized` otherwise `A .+ (A + A)^2` would be rewritten as |
|
# `broadcast!!(add_mul, x, AA, AA)` where `AA` is `A + A`. |
|
MulType = :($promote_operation( |
|
*, |
|
typeof($(inner_factor.args[2])), |
|
typeof($(inner_factor.args[2])), |
|
)) |
|
if inner_factor.args[3] == 0 |
|
# If the exponent is 0, rewrite |
|
# new_var = base^0 |
|
# as |
|
# new_var = 1 |
|
return _rewrite( |
|
vectorized, |
|
minus, |
|
:(one($MulType)), |
This is not always true, for example, in jump-dev/JuMP.jl#3474.
See:
MutableArithmetics.jl/src/rewrite.jl
Lines 573 to 590 in 01cae64
This is not always true, for example, in jump-dev/JuMP.jl#3474.