Announcing Maxima.jl

I’d like to announce here for the first time the availability of Maxima.jl. A symbolic mathematics package for julia that uses the Maxima CAS. Maxima features:

  • a full Maxima REPL mode that can be extends the Julia REPL
  • Pretty I/O for Maxima expressions including Latex output when using IJulia and formatted ‘2d’ plain text in the REPL
  • Basic translation of expressions between Maxima and Julia
  • Wrapper functions for many standard Maxima functions that operate on both Maxima and Julia expressions
  • Plotting via Maxima’s gnuplot functionality

Maxima.jl is available through Julia METADATA so you can try it out by adding it at the REPL

julia> Pkg.add("Maxima")
INFO: Installing Compat v0.21.0
INFO: Installing Maxima v0.0.4
INFO: Package database updated

julia> using Maxima

julia> trigsimp(:(sin(x)^2 + cos(x)^2))
1

julia> expand(m"(a + b)^3")
 
                            3        2      2      3
                           b  + 3 a b  + 3 a  b + a

Enjoy and feel free to submit issues or join the effort at https://github.com/nsmith5/Maxima.jl

13 Likes

Nice. I can now use Maxima.jl to play with maxima. (I’ve been using sagemath to access maxima from python.)

FYI, you can use Conda.jl to install maxima on Linux and OSX and use that so that the users don’t have to install maxima themselves. Maxima in conda-forge is compiled with ecl. I’m maintaining the conda-forge maxima package, so let me know if there are any issues.

using Conda
Conda.add_channel("conda-forge")
Conda.add("maxima")
"$(Conda.BINDIR)/maxima"      # where maxima binary is located.
6 Likes

Excellent! Thanks for the heads up. I didn’t think to look in conda-forge and it seems ecl has unicode support so that’s perfect! :slight_smile:

It seems that the unicode support in ecl is shaker than I would have hoped.

Maxima 5.39.0 http://maxima.sourceforge.net
using Lisp ECL 16.1.3
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.
(%i1) π
;

Maxima encountered a Lisp error:

 Cannot coerce string $Π to a base-string

Automatically continuing.
To enable the Lisp debugger set *debugger-hook* to nil.

@isuruf Is there any chance you’d consider compiling your conda package against sbcl? Clisp also works well, its just quite a bit slower than sbcl.

That looks like a maxima issue, because I can use unicode from an ECL shell.
About using sbcl, we’ll have to package sbcl as well, since there’s no conda package for it. If you want to package sbcl, let me know, I can help.