Commit 4b7c66b9 authored by Gilles Filippini's avatar Gilles Filippini

Imported Upstream version 0.8.4-dfsg1

This diff is collapsed.
B. Parisse,
Institut Fourier, 100 rue des maths,
F-38402 St Martin d'Heres Cedex
ifactor, isom, mkisom, gauss: R. De Graeve
This diff is collapsed.
2000-10-24 Richard B. Kreckel <>
* src/ in sym2r(): imul_todo was never initialized.
* src/ removed dependency on private data structures,
except for expairseq::seq, since it didn't work. :-(
* include/power.h, include/utils.h, include/numeric.h: removed.
2000-10-20 Richard B. Kreckel <>
*, and all that belongs to it: added.
* ./*: moved all files around, headers to ./include/, source files
to ./src, in order to ease autoconfication.
2000-10-19 Bernard Parisse <>
* ./*: packed it again
2000-09-22 Bernard Parisse <>
* ./*: released version 0.2.
* ./*: added optional support for NTL.
2000-08-23 Bernard Parisse <>
* ./*: released version 0.1.
This diff is collapsed.
Quick overview
1/ Check that the file /etc/ contains a line
if not edit the file as root and add this line
2/ Get and install GMP, MPFR, FLTK 1.1, readline, optionnaly GSL if you want
to do numerical stuff, PARI 2.3 or above for advanced arithmetic,
NTL for fast polynomial (see configuration compatible with giac below).
Look at the prerequisites section for download addresses and instructions.
3/ Run ldconfig as root to insure the newly installed library are recognized
on your system
4/ Go in the giac directory
If you want a quick compilation, type respectively for tcsh or bash
$ setenv CXXFLAGS -g
  $ export CXXFLAGS=-g
$ ./configure
$ make
become root
# make install
# ldconfig
* Enjoy!
* If you want to cross-compile for the ARM architecture look also at
the file src/README.ipaq
* You must first check that you have installed GMP (available at any GNU ftp
mirror site, see, for example in France try
* If you want numerical functions you should install the Gnu Scientific
Library (
* If you want long float support, get MPFR at
If you have MPFR version 2.1 or >, you must make a change in src/
since it does call mpfr_set_str_raw, which is no more defined, try
mpfr_strtofr(r.inf,(char *)s.c_str(),0,2,GMP_RNDN);
* If you want to use NTL, get version >= 5.2 at,
check that you configured with namespace enabled (this is not the
default) and with GMP enabled (not the default, but this is not mandatory)
If you are not sure of your install go in the NTL directory and type
$ make clean
$ ./configure NTL_GMP_LIP=on NTL_STD_CXX=on
$ make
$ make install
* If you want advanced arithmetic functions, get
PARI ** version 2.3.0 or above ** at
Recompile (make all) and reinstall PARI (make libpari.a make install
and check that libpari.a has been updated or copy it explicitely from
the O<os> directory to /usr/local/lib)
Check in the giac src directory, file that the memory allocated
to the PARI stack suit your needs (default is 10M of RAM) or modify
long pari_mem_size=10000000;
* For faster Groebner basis, install CoCoA library from
Note that giac compiles with version up to 0.9915 (0.9918 does not work)
N.B.: there is no make install target currently, you must copy
lib/libcocoa.a to /usr/local/lib and include/CoCoA/* to
/usr/local/include/CoCoA by hand
* If you want GUI support, check that you have FLTK 1.1.x installed
(available at For scrollbars to work properly,
you must check that STACK_SIZE is large enough in
src/fl_rect.cxx (or src/fl_rect_generic.cxx with FL_Device patch)
(100 should be large enough). If you want printer support, get the
Fl-Device modified version of fltk, available from my webpage.
* TeXmacs may be used as an interface for giac.
If you have TeXmacs installed (, after installing giac,
run texmacs and use Insert->Session->giac.
If you copy Init.scm in your ~/.TeXmacs/progs directory you will get
a Cas menu for giac.
* If you want garbage collection, get the gc library
Then remove all libraries from config.h except gmp (see config.h.gc),
add #define HAVE_LIBGC 1
replace malloc/realloc in with
rm -f *.o and look at for the cas2 target
* For installation inside sage,
sage -sh
./configure --prefix="$SAGE_LOCAL" --disable-gui
Like with any autoconfiguring GNU software, you can type this:
$ ./configure
[add options as needed: try ./configure -help for option info, see
$ make
$ make check
[become root if necessary]
# make install-strip
Alternatives or tips:
** If you are updating giac for bug fixes, you can run
$ ./config.status
instead of ./configure, this will keep the same configuration options
** If you don't want optimizations, set the environment variable CXXFLAGS
to -g before calling configure
(tcsh) setenv CXXFLAGS -g
(bash) CXXFLAGS=-g
** If you just want to build xcas,
$ ./configure
$ cd src
$ make -f
Replace -g by -O2 in if you want full optimizations.
** If you want to build xcas for the iPaq with the Linux familiar distribution
assuming you have the skiff toolchain installed and FLTK installed.
Check that config.h defines HAVE_LIBFLTK and does not define HAVE_LIBGSL
and HAVE_LIBGSLCBLAS unless you have these libraries too, then
$ make -f Makefile.ipaq
Note that I never succeded to build with optimization for the iPaq.
** If you want the commandline cas only run
$ ./configure --disable-gui
$ make
There is some support for those who must use Microsoft Windows (R).
Assuming you have the cygwin tools, gmp, FLTK, FLVW installed (see for cygwin, any GNU mirror for gmp e.g., for FLTK, configure
FLTK with ./configure --enable-cygwin), run cygwin,
go in the giac-0.4.0 directory and run
$ ./configure
$ make
$ make install
As usual, before these steps do
$ export CXXFLAGS=-g
if you want a faster compilation
Alternatively you can
$ cp config.h
or edit config.h and modify to suit your needs, then
go in the src directory and run
$ make -f
After that, you may run xcas.exe standalone, provided /usr/bin/cygwin1.dll
has been copied in the path (e.g. in the same directory as xcas.exe)
You should be able to compile the library version of giac like under Unix using
$ sh configure ; make
The first Carbon port for Mac OS X was done by Jean-Yves Avenard.
See the file README.MACOSX for info on compiling the required libraries.
Once the libraries are installed, run
tcsh mkosx
* gcc 4.0: comment UNORDERED_MAP in config.h
* Cygwin: various linking errors
Be sure to compile FLTK with --enable-cygwin
* Cygwin: error when compiling
... sys/types.h ... does not define anything
Remove the #undef off_t lines from and #define lines from config.h
* If you get an error about libtool not found when running make, run
$ ./ltconfig
* If you have recently installed a library and this lib seems not to be
recognized, type
$ rm config.cache
before running configure
* Optimization requires much memory for compilation. If you are low in memory
edit src/Makefile and if necessary replace the line :
by :
* If you get an error like
autoheader: Symbol 'CONSTANT_DEBUG_SUPPORT' is not covered by ...
autoheader --localdir=.
* If you get error when compiling, it's most certainly because
you compiled NTL without namespaces. Recompile it (see Prerequisites section
* If you get a linker error about combine_factors not found in modfactor.o
it's because you did not modify PARI correctly or forgot to re-install the
PARI libraries
* Cygwin compilation of Giac with PARI 2.1.1 requires you to make
some hand work. I could not get the dynamic version of PARI library.
Therefore I had to do the install by hand
cp libpari.a /usr/local/lib
mkdir /usr/local/include/pari
cp src/headers/*.h /usr/local/include/pari
cp Ocygwin/*.h /usr/local/include/pari
Then I got an error compiling that dispeared by commenting
the offending line in the header /usr/local/include/pari/paricom.h
After that all went OK.
* If your cygwin installation lacks internationalization support (you will
get errors about #include <libintl.h> in plotfltk.h)
you must modify xcas.fl to remove internationalization support, run
fluid xcas.fl
menu Edit->Preferences, deselect gettext and choose None
(The program fluid.exe should be in your fltk-1.0.x source directory, in the
fluid subdirectory)
Then edit plotfltk.h and comment
#include <locale.h>
#include <libintl.h>
as well as the object_bidon class definition
Edit and comment
objet_bidon mon_objet_bidon;
If you want some documentation, go in the doc directory
$ cd doc
and type
$ make dvi
At the end of the compilation, you should have:
* xcas, cas, aide (programs) in /usr/local/bin
* the libgiac libraries in /usr/local/lib
* the include files in /usr/local/include/giac
* the on-line help file /usr/local/share/aide.cas
When you run
the following options are recognized
1/ --enable-debug
Allow vecteurs printing and add some debugging code
2/ --enable-fltk
GUI support
3/ --enable-gsl
Use the Gnu Scientific Library for floating point (e.g. special functions..)
4/ --enable-sscl
Allow inclusion of code for semi-classical algorithms (Moyal product, ...)
Not available yet
5/ --enable-ntl
Allow inclusion of NTL code
6/ --enable-pari
Allow inclusion of PARI code
These options can be turned off using --disable-option-name instead of
--enable-option-name. By default configure will use these options if
the libraries are available on your system
For full speed binaries do (bash)
$ export CXXFLAGS="-O3 -fexpensive-optimizations -malign-loops=2 -malign-jumps=2 -malign-functions=2"
or (tcsh)
$ setenv CXXFLAGS "-O3 -fexpensive-optimizations -malign-loops=2 -malign-jumps=2 -malign-functions=2"
Be sure to configure with no debug support (default) and compile statically.
(exec-file "$TEXMACS_PATH/progs/" "Init.scm")
(define cas-menu
("normal" (insert-string "normal()") )
("factor" (insert-string "factor()") )
("simplify" (insert-string "simplify()") )
("partfrac" (insert-string "partfrac()") )
(-> "Plot"
("Plot setup" (insert-string "xyztrange()") )
("Plotfunc" (insert-string "plotfunc()") )
("Plotparam" (insert-string "plotparam()") )
("Plotpolar" (insert-string "plotpolar()") )
("Plotseq" (insert-string "plotseq()") )
(-> "Constants"
("e" (insert-string "e") )
("i" (insert-string "i") )
("pi" (insert-string "pi") )
("+infinity" (insert-string "+infinity") )
("-infinity" (insert-string "-infinity") )
("infinity" (insert-string "infinity") )
("undef" (insert-string "undef") )
(-> "Real"
("abs" (insert-string "abs()") )
("factorial" (insert-string "factorial()") )
("max" (insert-string "max()") )
("min" (insert-string "min()") )
("sign" (insert-string "sign()") )
(-> "Complex"
("abs" (insert-string "abs()") )
("arg" (insert-string "arg()") )
("conj" (insert-string "conj()") )
("im" (insert-string "im()") )
("re" (insert-string "re()") )
(-> "Exp and ln"
("exp" (insert-string "exp()") )
("ln" (insert-string "ln()") )
("log10" (insert-string "log10()") )
(-> "Trig functions"
("acos" (insert-string "acos()") )
("asin" (insert-string "asin()") )
("atan" (insert-string "atan()") )
("cos" (insert-string "cos()") )
("sin" (insert-string "sin()") )
("tan" (insert-string "tan()") )
(-> "Hyperbolic"
("acosh" (insert-string "acosh()") )
("asinh" (insert-string "asinh()") )
("atanh" (insert-string "atanh()") )
("cosh" (insert-string "cosh()") )
("sinh" (insert-string "sinh()") )
("tanh" (insert-string "tanh()") )
(-> "Special functions"
("Airy_Ai" (insert-string "Airy_Ai()") )
("Airy_Bi" (insert-string "Airy_Bi") )
("gamma" (insert-string "gamma()") )
("psi" (insert-string "psi()") )
("zeta()" (insert-string "zeta()") )
(-> "Integer arithmetic"
("gcd" (insert-string "gcd()") )
("lcm" (insert-string "lcm()") )
("euler" (insert-string "euler()") )
("iabcuv" (insert-string "iabcuv()") )
("ichinrem" (insert-string "ichinrem()") )
("iegcd" (insert-string "iegcd()") )
("ifactor" (insert-string "ifactor()") )
("ifactors" (insert-string "ifactors()") )
("iquo" (insert-string "iquo()") )
("irem" (insert-string "irem()") )
("is_prime" (insert-string "is_prime()") )
("nextprime" (insert-string "nextprime()") )
("pa2b2" (insert-string "pa2b2()") )
("prevprime" (insert-string "prevprime()") )
(-> "Polynomial arithmetic"
("gcd" (insert-string "gcd()") )
("lcm" (insert-string "lcm()") )
("abcuv" (insert-string "abcuv()") )
("chinrem" (insert-string "chinrem()") )
("cyclotomic" (insert-string "cyclotomic()") )
("divis" (insert-string "divis()") )
("e2r" (insert-string "e2r()") )
("egcd" (insert-string "egcd()") )
("factor" (insert-string "factor()") )
("hermite" (insert-string "hermite()") )
("laguerre" (insert-string "laguerre()") )
("pcoeff" (insert-string "pcoeff()") )
("peval" (insert-string "peval()") )
("proot" (insert-string "proot()") )
("quo" (insert-string "quo()") )
("quorem" (insert-string "quorem()") )
("rem" (insert-string "rem()") )
("r2e" (insert-string "r2e()") )
("ranm" (insert-string "ranm()") )
("tchebyshev1" (insert-string "tchebyshev1()") )
("tchebyshev2" (insert-string "tchebyshev2()") )
(-> "Calculus"
("curl" (insert-string "curl()") )
("diff" (insert-string "diff()") )
("desolve" (insert-string "desolve()") )
("divergence" (insert-string "divergence()") )
("hessian" (insert-string "hessian()") )
("integrate" (insert-string "integrate()") )
("laplacian" (insert-string "laplacian()") )
("limit" (insert-string "limit()") )
("series" (insert-string "series()") )
("solve" (insert-string "solve()") )
("sum" (insert-string "sum()") )