# Simplification in Symbolics

**URL:** <https://discourse.julialang.org/t/simplification-in-symbolics/142803>\
**Category:** General Usage\
**Tags:** symbolics\
**Created:** [November 7, 2026, 7:39pm UTC](https://discourse.julialang.org/t/simplification-in-symbolics/142803 "2026-11-07T19:39:12Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![scheinerman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/scheinerman/32/35303_2.png) [@scheinerman](https://discourse.julialang.org/u/scheinerman)\
**Post date:** [November 7, 2026, 7:39pm UTC](https://discourse.julialang.org/t/simplification-in-symbolics/142803/1 "2026-11-07T19:39:12Z")

</div>

I am using the `Symbolics` package and having trouble figuring out how to simplify expressions. Note that \sqrt{3} and 3/\sqrt{3} are equal, but I can’t seem to get that. For example:

```julia-auto
julia> using Symbolics

julia> a = sqrt(Num(3))
sqrt(3)

julia> a == 3/a
sqrt(3) == (3 / sqrt(3)) # this isn't helpful

julia> a - 3/a
sqrt(3) + -3 / sqrt(3)

julia> iszero(ans)
false # this is incorrect

```

---

<div class="post-metadata">

**Author:** ![araujoms](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/araujoms/32/217734_2.png) [@araujoms](https://discourse.julialang.org/u/araujoms)\
**Post date:** [November 7, 2026, 10:15pm UTC](https://discourse.julialang.org/t/simplification-in-symbolics/142803/2 "2026-11-07T22:15:09Z")

</div>

Looks like a bug, `isequal(a, 3 / a)` should return `true` or at least realize it can’t do the computation. `isequal((3/a)^2, 3)` also fails, but `isequal(simplify((3/a)^2), 3)` succeeds.

---

<div class="post-metadata">

**Author:** ![technocrat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/technocrat/32/220947_2.png) [@technocrat](https://discourse.julialang.org/u/technocrat)\
**Post date:** [November 7, 2026, 10:20pm UTC](https://discourse.julialang.org/t/simplification-in-symbolics/142803/3 "2026-11-07T22:20:03Z")

</div>

```julia-auto
julia> a = sqrt(3)
1.7320508075688772

julia> 3/a
1.7320508075688774

```

Notiice the floating point error in the last digit arising out of dividing a rational by its irrational square root.

---

<div class="post-metadata">

**Author:** ![langestefan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/langestefan/32/207923_2.png) [@langestefan](https://discourse.julialang.org/u/langestefan)\
**Post date:** [November 7, 2026, 10:35pm UTC](https://discourse.julialang.org/t/simplification-in-symbolics/142803/4 "2026-11-07T22:35:00Z")

</div>

I’m not sure Symbolics.jl is really setup for this kind of work but maybe @ChrisRackauckas or @cryptic.ax can comment on that. You can do a similar trick as [Symbolics.jl simplify exp(0) to 1 - #2 by langestefan](https://discourse.julialang.org/t/symbolics-jl-simplify-exp-0-to-1/135970/2)

```julia
julia> using Symbolics

julia> a = sqrt(Num(3))
sqrt(3)

julia> rules = RuleSet([@rule(~x / ~s => ~x * ~s / (~s)^2)])
SymbolicUtils.Rewriters.Walk

julia> simplify(a - 3/a, rewriter=rules)
0

```

Which works because this rule is built in:

```julia
julia> sqrt(Num(3))^2
3

```

---

<div class="post-metadata">

**Author:** ![scheinerman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/scheinerman/32/35303_2.png) [@scheinerman](https://discourse.julialang.org/u/scheinerman)\
**Post date:** [November 7, 2026, 10:46pm UTC](https://discourse.julialang.org/t/simplification-in-symbolics/142803/5 "2026-11-07T22:46:18Z")

</div>

For my project, I’ve swapped out `Symbolics` for `PySym`. So I’m set, but I would have thought `Symbolics` should be able to do this sort of simplification without modifications.

---

<div class="post-metadata">

**Author:** ![Ay11](https://avatars.discourse-cdn.com/v4/letter/a/e95f7d/32.png) [@Ay11](https://discourse.julialang.org/u/Ay11)\
**Post date:** [November 8, 2026, 12:10am UTC](https://discourse.julialang.org/t/simplification-in-symbolics/142803/6 "2026-11-08T00:10:01Z")

</div>

You can use SymJ.jl. It is a Julia version of SymPy and faster than Symbolics.jl .

> using SymJ  
> julia\> a = sqrt(Sym(3))  
> sqrt(3)  
> julia\> a - 3/a  
> 0
