sagemath_giac: Symbolic computation with Giac¶
Giac/Xcas is a general purpose Computer algebra system by Bernard Parisse released under GPLv3. It has been developed since 2000 and is widely used: Giac/Xcas is the native CAS engine of the HP Prime calculators; the C++ kernel of the system, Giac, provides the CAS view of Geogebra.
This pip-installable source distribution passagemath-giac
makes Giac available
from Python and provides integration with the Sage Mathematical Software System.
What is included¶
-
The Cython interface is by Frederic Han and was previously available under the name giacpy-sage. It was merged into the Sage library in 2020.
see https://github.com/passagemath/passagemath/blob/main/pkgs/sagemath-giac/MANIFEST.in
The binary wheels on PyPI ship a prebuilt copy of the Giac library.
Examples¶
A quick way to try it out interactively:
$ pipx run --pip-args="--prefer-binary" --spec "passagemath-giac[test]" ipython
In [1]: from sage.all__sagemath_giac import *
In [2]: x = libgiac('x')
In [3]: V = [[x[i]**j for i in range(8)] for j in range(8)]
In [4]: libgiac(V).dim()
Out[4]: [8,8]
In [5]: libgiac.det_minor(V).factor()
Out[5]: (x[6]-(x[7]))*(x[5]-(x[7]))*(x[5]-(x[6]))*(x[4]-(x[7]))*(x[4]-(x[6]))*(x[4]-(x[5]))*(x[3]-(x[7]))*(x[3]-(x[6]))*(x[3]-(x[5]))*(x[3]-(x[4]))*(x[2]-(x[7]))*(x[2]-(x[6]))*(x[2]-(x[5]))*(x[2]-(x[4]))*(x[2]-(x[3]))*(x[1]-(x[7]))*(x[1]-(x[6]))*(x[1]-(x[5]))*(x[1]-(x[4]))*(x[1]-(x[3]))*(x[1]-(x[2]))*(x[0]-(x[7]))*(x[0]-(x[6]))*(x[0]-(x[5]))*(x[0]-(x[4]))*(x[0]-(x[3]))*(x[0]-(x[2]))*(x[0]-(x[1]))
In [6]: (x+5)**(1/3) # note here 1/3 is done in Python before being sent to Giac
Out[6]: (x+5)^0.333333333333
In [7]: (x+5)**QQ('1/3') # using Sage rationals
Out[7]: (x+5)^(1/3)
In [8]: from fractions import Fraction # using Python rationals
In [9]: (x+5)**Fraction(1,3)
Out[9]: (x+5)^(1/3)
The last example again, using the Sage REPL:
$ pipx run --pip-args="--prefer-binary" --spec "passagemath-giac[test]" sage
Warning: sage.all is not available; this is a limited REPL.
sage: from sage.all__sagemath_giac import *
sage: x = libgiac('x')
sage: (x+5)^(1/3) # the Sage preparser translates this to (x+5)**QQ('1/3')
(x+5)^(1/3)
Type¶
optional
Dependencies¶
Version Information¶
package-version.txt:
10.6.3
version_requirements.txt:
passagemath-giac ~= 10.6.3.0
Equivalent System Packages¶
(none known)