# Comparing Symbolics.jl with Mathematica

**URL:** <https://discourse.julialang.org/t/comparing-symbolics-jl-with-mathematica/118656>\
**Category:** New to Julia\
**Tags:** symbolics, mathematica\
**Created:** [August 27, 2024, 7:52am UTC](https://discourse.julialang.org/t/comparing-symbolics-jl-with-mathematica/118656 "2024-08-27T07:52:42Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![StevenSiew](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevensiew/32/218393_2.png) [@StevenSiew](https://discourse.julialang.org/u/StevenSiew)\
**Post date:** [August 27, 2024, 7:52am UTC](https://discourse.julialang.org/t/comparing-symbolics-jl-with-mathematica/118656/1 "2024-08-27T07:52:42Z")

</div>

Here I compare performing some simple CAS calculations on Mathematica and on Julia using Symbolics

On Mathematica  
 ![symbolics](https://global.discourse-cdn.com/julialang/original/3X/2/d/2da0a98f7fc6dc20750094794b0fcffdcd1b14bd.png)

On Julia

```julia
using Pkg
Pkg.activate("/Users/ssiew/juliascript/Symbolics")
# Pkg.add("Symbolics")
# Pkg.add("Nemo")
# Pkg.add("SymbolicNumericIntegration")
using Symbolics
using Nemo
# using SymbolicNumericIntegration

@variables x

Expr = -279//16 + x^2 ~ 0
println("Expr is ",Expr)
println()

soln = symbolic_solve(Expr,x)
answer = simplify(soln,expand=true)

println("Symbolic solution is ",answer)

mybuildfunction(ans)=build_function(ans,x,expression=Val{false})

FuncBuilderArray = mybuildfunction.(answer)
FuncArray = eval.(FuncBuilderArray)
FloatAnswer = map(x->Float64(x(nothing)),FuncArray)
FloatAnswer_rounded = map(x->round(x, digits=4),FloatAnswer)
println("Float solution is ",FloatAnswer_rounded)

```

with output

```julia
  Activating project at `~/juliascript/Symbolics`
Expr is -(279//16) + x^2 ~ 0

Symbolic solution is SymbolicUtils.BasicSymbolic{Real}[(1//2)*√(279//4), (-1//2)*√(279//4)]
Float solution is [4.1758, -4.1758]

```

My observations: Julia cannot simplify to “3\*sqrt(31)/4” and turning the final answer to Floating point requires multiple lines of code.

---

<div class="post-metadata">

**Author:** ![fgerick](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fgerick/32/13228_2.png) [@fgerick](https://discourse.julialang.org/u/fgerick)\
**Post date:** [August 27, 2024, 8:25am UTC](https://discourse.julialang.org/t/comparing-symbolics-jl-with-mathematica/118656/2 "2024-08-27T08:25:53Z")

</div>

the conversion to floating point can be made a bit simpler ([Convert symbolic expression to floating point?](https://discourse.julialang.org/t/convert-symbolic-expression-to-floating-point/107788)):

```julia
FloatAnswer = map(x->substitute(x,Dict()), answer)

```

I think the functionality/(licensing fee) ratio is still better for Symbolics.jl 😉 That said, there’s the free Wolfram Engine…

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [August 27, 2024, 2:17pm UTC](https://discourse.julialang.org/t/comparing-symbolics-jl-with-mathematica/118656/3 "2024-08-27T14:17:46Z")

</div>

There is an even better part about open source. If you don’t like something, just change it.

> <https://github.com/JuliaSymbolics/Symbolics.jl/pull/1242>
