FriCAS is a general purpose computer algebra system (CAS).
This work-in-progress repository includes, in the jlfricas
branch (https://github.com/gvanuxem/fricas/tree/jlfricas)
,
some related Julia
categories/domains/packages to use Julia for specific operations.
It is only supported with SBCL or Clozure CL and Julia prior to 1.10.0 is
not supported with a SBCL based FriCAS.
For general installation instructions see INSTALL. For general documentation consult https://fricas.github.io.
To build FriCAS with Julia support, a simple
./configure --enable-julia
should do the trick.
Notice that with SBCL (default) you will have to increase its dynamic space size, see Caveats.
The julia
executable needs to be available in your PATH.
If you want to add Jupyter support with a SBCL based FriCAS, make sure Hunchentoot is installed.
On a Debian like system add it with sudo apt install cl-hunchentoot
and issue, for example,
./configure --enable-gmp --enable-julia --enable-hunchentoot
.
To know which categories/domains/packages are added to FriCAS issue in the
FriCAS interpreter )what things julia
or use HyperDoc:
(1) -> )what things Julia
Operations whose names satisfy the above pattern(s):
juliaCMPrint juliaCVPrint juliaIVPrint juliaMPrint
juliaVPrint
To get more information about an operation such as juliaIVPrint ,
issue the command )display op juliaIVPrint
------------------------------- Categories --------------------------------
Categories with names matching patterns:
julia
JMATCAT JuliaMatrixCategory JTYPE JuliaType
JVECCAT JuliaVectorCategory
--------------------------------- Domains ---------------------------------
Domains with names matching patterns:
julia
JCF64 JuliaComplexF64 JCF64MAT JuliaComplexF64Matrix
JCF64SMA JuliaComplexF64SquareMatrix JCF64VEC JuliaComplexF64Vector
JF64 JuliaFloat64 JF64MAT JuliaFloat64Matrix
JF64SMAT JuliaF64SquareMatrix JF64VEC JuliaFloat64Vector
JI64 JuliaInt64 JI64VEC JuliaInt64Vector
JSTR JuliaString JSYM JuliaSymbol
-------------------------------- Packages ---------------------------------
Packages with names matching patterns:
julia
JCF64MTF JuliaComplexF64MatrixTranscendentalFunctions
JCLA JuliaComplexLinearAlgebra JDRAW JuliaDrawFunctions
JF64MTF JuliaF64MatrixTranscendentalFunctions
JF64SF JuliaFloat64SpecialFunctions
JF64SF2 JuliaFloat64SpecialFunctions2
JPLOT JuliaPlotFunctions JRLA JuliaRealLinearAlgebra
JUF JuliaUtilityFunctions
JUPF JuliaUnivariatePolynomialFunctions
--------------- System Commands for User Level: development ---------------
System commands at this level matching patterns:
julia
julia juliad
------------------------- System Command Synonyms -------------------------
No user-defined synonyms satisfying patterns:
julia
(1) ->
If you want to build and install locally the HTML documentation,
you need to install Sphinx. On a Debian like system to add it, issue in a
terminal sudo apt install python3 python3-pip && pip3 install -U Sphinx
.
After building FriCAS, and before the installation, issue in the terminal
make htmldoc
.
The basic goal of FriCAS is to create a free advanced world-class CAS. In 2007 FriCAS forked from Axiom. Currently the FriCAS algebra library is one of the largest and most advanced free general purpose computer algebra systems -- this gives a good foundation to build on. Additionally, the FriCAS algebra library is written in a high level strongly typed language (Spad), which allows natural expression of mathematical algorithms. This makes FriCAS easier to understand and extend.
FriCAS uses lightweight development methodology. Compared to Axiom, FriCAS is significantly restructured -- it is more portable and fixed several defects. FriCAS removed rather large unused parts (without removing functionality).
Current development goals:
- continue structural improvements
- add new mathematical algorithms
- develop better user interface
- develop improved Spad compiler
- make it easier for external programs to interface with FriCAS
- support for using external mathematical routines from Spad
With SBCL, you will need to increase the original dynamic space size (thanks to Qian Yun who noticed that with the introduction of the RootSimplification package), so, if your SBCL uses the original dynamic space size, increase it at configure time with ./configure --with-lisp='sbcl --dynamic-space-size=2048'
or whatever you want as dynamic space size. For more information, see the SBCL documentation or the INSTALL file.