Giac / Xcas

B. Parisse, R. de Graeve, J. Manrique #1077

GNU Free Documentation License

Copyright (c) 2002 J.Manrique López de la Fuente

Permission is granted to copy, distribute and/or modify this article under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.

A copy of the license is included in the section entitled "GNU Free Documentation License" in .


Giac is a C++ library for computer algebra system computation. Xcas is a graphical interface to Giac that run on many platforms including Windows, GNU/Linux (PC and PDA like the HP iPAQ with the Familiar distribution or the Sharp Zaurus with Xfree86), Mac OS X. The main features of Xcas are:

Xcas interface

The xcas window is vertically divided in two main parts: the output area and the input buttons.

From top to bottom, you have:

Beginners can choose a function in the menu bar, e.g. Cas->Calc->integrate, click on the first example, modify it to suit their needs and press the enter key or button..

The geometry view is switched on by clicking on the yellow geo key or by issuing any graphical command like Math->Graph->plotfunc to represent a function. Commands in the input line are evaluated like in the history view. In addition clicking on the geometric area will draw a point, and push-drag-release will draw a segment.

Like with other interactive geometry package, one can move the point A, B or C and the whole figure will dynamically move. But unlike other geometry package it is possible to define the geometric objects with exact coordinates and make proof of geometric properties with the symbolic engine instead of numerical checks.

The program view (yellow prg button) gives access to a small program editor, we show here as an example how to compute the greatest common denominator of two

integers using Euclid’s algorithm, an universal example to teach the basic of algorithmic.

The syntax style can be similar to C, Maple or Mupad. There is an interactive debugger to help correct runtime errors.

The eqw view gives access to a powerful way to edit mathematical expressions using the symbolic engine behind to perform simplifications on subexpressions.

The last view is the matrix view that gives an easy way to enter a matrix and

also some spreadsheet functionality (absolute, relative cells, the cell content can be a symbolic expression, the programming language can be used to define one cell as a function of other cells).

Configuration is done with choosebox or for the language localization using the menu.

In conclusion, xcas has the features corresponding to the mathematical curriculum of high school and university. The same software runs on ARM PDA with Linux, PC with Windows or Linux and on the Mac making data exchange easy.


Giac the C++ library is licensed under the GPL (dual-licensing might be possible). It requires the GMP (Gnu Math Precision library, LGPL).


The source code is about 60,000 lines of code.

The xcas interface is built over FLTK and, for the spreadsheet, FLVW. The code is about 10,000 lines.

Compilation requires a C++ compiler compliant with ANSI-3, like g++ 2.95 and above. Compilation for the ARM Linux platform is as easy as for the x86 platform.

Compiled statically with GSL, without PARI/NTL, xcas is around 5MB and 1.3MB on a compressed filesystem (like jffs2 on the HP iPAQ familiar distribution). The static binary requires the X-Windows system on Unix or nano-X (using flnx instead of fltk, not tested). It runs without any problem on my iPAQ (16MB flash ROM, 32M RAM, no extension card).

If xcas is compiled dynamically, it is possible to insert during a session dynamic modules (i.e. shared libraries adding functionality). This can be used for example to customize the programming language, e.g. add French or Spanish keywords instead of if, for, while, ... It may also be used to insert a TI89 or Maple compatibility module if/when available.

Status of the project is alpha. Roadmap: a beta version for the end of year 2002, version 1 Spring 2003.

Downloads of the binaries, source, other informations and complete French documentation (Spanish one is being done) are available at:
Page last modified : 12th August 2002