@variables x
sqrt(cos(x)^2 + sin(x)^2) |> simplify
gives me sqrt(1)
. Why isn’t this reduced to simply 1
?
OTOH
sqrt(0*x+1) |> simplify
reduces to 1
, no problem.
@variables x
sqrt(cos(x)^2 + sin(x)^2) |> simplify
gives me sqrt(1)
. Why isn’t this reduced to simply 1
?
OTOH
sqrt(0*x+1) |> simplify
reduces to 1
, no problem.
This is clearly a bug / missing feature so would be better to open as an Issue on GitHub
Note that simplify does nothing here:
julia> sqrt(0*x+1)
1.0
julia> sqrt(0*x+2)
1.4142135623730951
However
julia> Symbolics.Term(sqrt,1) |> simplify
sqrt(1)
julia> using SymbolicUtils
julia> r = @rule sqrt(1) => 1
sqrt(1) => 1
julia> simplify(Symbolics.Term(sqrt, 1), RuleSet([r]))
1
julia> r2 = @rule cos(~x)^2+sin(~x)^2 => 1
cos(~x) ^ 2 + sin(~x) ^ 2 => 1
julia> simplify(sqrt(cos(x)^2 + sin(x)^2) , RuleSet([r,r2]))
1
I always thought the square root of 1 was -1
This isn’t quite true:
julia> @variables x
julia> sqrt(0*x+1) |> typeof
Num
It just gets repr
d as 1.0
. OTOH
julia> sqrt(1) |> simplify |> typeof
Float64
Thanks for pointing out simplify
with rule sets! Is there any way to simplify
with all of the standard rules and then in addition some custom rules? AFAICT simplify(..., RuleSet([r]))
only applies r
and no other simplifications.