From c93f5b15a156ac1b7b81c9acbdb7c3277b5c8a18 Mon Sep 17 00:00:00 2001 From: sagitter Date: Jul 06 2016 19:18:11 +0000 Subject: New package (bz#1335988). --- diff --git a/.gitignore b/.gitignore index e69de29..93c5d22 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/giac-1.2.2.63.tar.gz diff --git a/giac-cSolveorder-check.patch b/giac-cSolveorder-check.patch new file mode 100644 index 0000000..368aec6 --- /dev/null +++ b/giac-cSolveorder-check.patch @@ -0,0 +1,11 @@ +--- check/TP16-sol.cas.out1 2016-03-04 16:45:42.000000000 +0100 ++++ check/TP16-sol.cas.out1 2016-03-24 17:58:52.913308919 +0100 +@@ -48,7 +48,7 @@ + "Done", + [-sqrt(13)-1,sqrt(13)-1,4], + y^2+6*sqrt(13)+18,y^2-6*sqrt(13)+18,y^2, +--sqrt(6)*I*sqrt(sqrt(13)+3),sqrt(6)*I*sqrt(sqrt(13)+3),-sqrt(6)*sqrt(sqrt(13)-3),sqrt(6)*sqrt(sqrt(13)-3),0, ++sqrt(6)*I*sqrt(sqrt(13)+3),-sqrt(6)*I*sqrt(sqrt(13)+3),-sqrt(6)*sqrt(sqrt(13)-3),sqrt(6)*sqrt(sqrt(13)-3),0, + "No such variable u", + x^2+1/4*y^2+1/9*z^2-1, + x^2+y^2+z^2-u, diff --git a/giac-makesrc.sh b/giac-makesrc.sh new file mode 100744 index 0000000..2487e35 --- /dev/null +++ b/giac-makesrc.sh @@ -0,0 +1,70 @@ +#!/usr/bin/sh +# +# Script to prepare a GIAC spkg for Fedora. This script is only for the +# package maintainer. +# + +VERSION="1.2.2" +VERSIONREV="63" + +# The upstream tarball name is: giac"$SOURCEORIG".tar.gz +SOURCEORIG=_"$VERSION"-"$VERSIONREV" + +# The name of the output file without tar.gz or tar.bz2 extension +OUTPUTFILEBASENAME=giac-"$VERSION"."$VERSIONREV" + +echo >&2 "Testing if the output file already exist in one of gz or bz2 format" +if [ -f "$OUTPUTFILEBASENAME".tar.gz -o -f "$OUTPUTFILEBASENAME".tar.bz2 ] ; then + echo >&2 "there is already a giac archive of this version" + exit 1 +fi + +echo >&2 "Build a temporary working dir" +TARGET=$(mkdir -p "giac-src") +ORIGDIR=`pwd` +cd "$TARGET" + +echo >&2 "Downloading upstream source ..." +wget "http://www-fourier.ujf-grenoble.fr/~parisse/debian/dists/stable/main/source/giac$SOURCEORIG.tar.gz" + + +echo >&2 "Untar upstream source ..." +tar -xzf giac"$SOURCEORIG".tar.gz + + +echo >&2 "Removing javagiac ..." +rm -rf giac-"$VERSION"/src/javagiac* + +echo >&2 "Removing french html doc, but keep keywords, and working makefiles. + NB: the french html doc is huge and not GPL. + It is freely redistibuable only for non commercial purposes ..." +cd giac-"$VERSION"/doc/fr +rm -rf [^Mkx]* +rm -rf *.pdf *.eps *.pdf *.png *.cxx *.cas *.jpg *.tex *.stamp *html* cas* *.fig fig* + +echo >&2 "Repair the build procedure with a minimal Makefile.am ..." +echo -e "EXTRA_DIST = xcasmenu xcasex keywords\n\nlocaldocdir = \$(docdir)/fr \n\n\ +dist_localdoc_DATA = xcasmenu xcasex keywords html_mall html_mtt html_vall">Makefile.am + +echo >&2 "Copy and adjust a minimal Makefile.in ..." +cp ../local/Makefile.in ./ +sed -ie 's|localdocdir = $(docdir)/local|localdocdir = $(docdir)/fr|' Makefile.in +sed -ie 's|doc/local|subdir = doc/fr|g' Makefile.in +# +touch html_mall +touch html_mtt +touch html_vall +# + + +echo >&2 "Building giac source tarball ..." +cd ../../../ +tar -cz giac-"$VERSION" -f "$OUTPUTFILEBASENAME".tar.gz + + +echo >&2 "Cleaning extracted dir ..." +rm -rf giac-src +rm -f "giac$SOURCEORIG.tar.gz" +rm -rf giac-"$VERSION" + +echo >&2 "Finished." diff --git a/giac.spec b/giac.spec new file mode 100644 index 0000000..bb06382 --- /dev/null +++ b/giac.spec @@ -0,0 +1,470 @@ +# Architectures currently not supported +# http://xcas.e.ujf-grenoble.fr/XCAS/viewtopic.php?f=19&t=1723 +ExcludeArch: aarch64 ppc64 ppc64le + +%global subversion 63 + +Name: giac +Summary: Computer Algebra System, Symbolic calculus, Geometry +Version: 1.2.2 +Release: 5.%{subversion}%{?dist} +# LGPLv3+: src/Fl_GDI_Printer.cxx, src/Flv_List.cc, src/Flv_Table.cc +# BSD: src/tinymt32* +License: GPLv3+ +Group: Applications/Engineering +URL: http://www-fourier.ujf-grenoble.fr/~parisse/giac.html +## Source package is downloaded from +## http://www-fourier.ujf-grenoble.fr/~parisse/debian/dists/stable/main/source/ +## and re-package without non-free FR documentation by giac-makesrc script. +Source0: %{name}-%{version}.%{subversion}.tar.gz +Source1: %{name}-makesrc.sh +Source2: xcas-appdata.xml + +# Fix cSolveorder check +Patch0: %{name}-cSolveorder-check.patch + +BuildRequires: readline-devel +BuildRequires: gettext-devel +BuildRequires: gcc-c++ +BuildRequires: mpfr-devel +BuildRequires: gmp-devel +BuildRequires: gsl-devel +BuildRequires: ntl-devel +BuildRequires: pari-devel +BuildRequires: lapack-devel +BuildRequires: mpfi-devel +BuildRequires: mesa-libGL-devel +BuildRequires: libpng-devel +BuildRequires: libjpeg-devel +BuildRequires: fltk-devel +BuildRequires: libXinerama-devel +BuildRequires: desktop-file-utils +BuildRequires: libappstream-glib +BuildRequires: tex(latex), texinfo, texinfo-tex + +Requires(post): info +Requires(preun): info + +Provides: bundled(tinymt32) + +%description +Giac is a Computer Algebra System made by Bernard Parisse. It provides +features from the C/C++ libraries PARI, NTL (arithmetic), GSL (numerics), +GMP (big integers), MPFR (bigfloats) and also + - Efficient algorithms for multivariate polynomial operations + (product, GCD, factorization, groebner bases), + - Symbolic computations: solver, simplifications, limits/series, integration, + - Linear algebra with numerical or symbolic coefficients. + - Partial Maple and TI compatibility. + - It has interfaces in texmacs and sagemath. + +it consists of: + - a C++ library (libgiac) + - a command line interpreter (icas/giac) + - an FLTK-based GUI (xcas) with interactive geometry and formal spreadsheets. + +#################### +%package devel +Summary: C++ development files for libgiac +Group: Development/Libraries +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description devel +Development files for libgiac. + +#################### +%package doc +Summary: Detailled html documentation for Giac/Xcas +BuildArch: noarch +BuildRequires: hevea + +# Javascript provided +Provides: bundled(CodeMirror) +Provides: bundled(FileSaver.js) + +License: GPLv3+ and GFDL +%description doc +The detailled html documentation and examples for giac and xcas. It is directly +accessible from xcas in many ways (browser, context search, thematic indexes). +It is strongly recommended for xcas usage. Note that the french part has been +removed from the original source due to non free Licence. + +#################### +%package xcas +# The name Xcas is better known than the name giac itself, +# so many users will search for the name xcas instead of giac or giac-gui. +Summary: GUI application for Giac +Provides: xcas = %{version}-%{release} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: hicolor-icon-theme + +%description xcas +Xcas is the Fltk graphic user interface to the computer algebra system giac. +It supports formal computations, interactive 2D geometry, 3D plotting, +spreadsheets with formal calculus and a Logo mode. There is also a programming +editor, and many ways to consult the html help. + +#################### +%package -n pgiac +Summary: Perl script for the computer algebra system Giac +URL: http://melusine.eu.org/syracuse/giac/pgiac +BuildArch: noarch +Requires: %{name} = %{version}-%{release} +Requires: perl + +%description -n pgiac +The pgiac command is a perl script to mix Latex documents +with Giac computations. + +%prep +%setup -q +%patch0 -p0 + +# Remove local intl (already bundled in fedora) +rm -rf intl/*.h +rm -rf intl/*.cc +# NB: Problem with autoreconf: missing config/test-driver . If needed the +# following worked +# aclocal +# autoconf +# automake --add-missing + +# Remove unecessary files and force the rebuild of info. +rm -f doc/pari/gphtml +rm -f doc/*/texinfo.tex +rm -f doc/*/giac_*.info + +# Some files in the upstream source have unnecessary executable rights +chmod -x src/*.h +chmod -x src/*.cc +find examples -type f -name '*.xws' -exec chmod -x '{}' \; +find examples -type f -name '*.cas' -exec chmod -x '{}' \; +find examples -type f -name '*.cxx' -exec chmod -x '{}' \; +chmod -x examples/lewisw/fermat* +# Clean backups in doc +find doc -name *~ -delete + +# Unbundle texinfo file +sed -i 's|config/texinfo.tex|%{_datadir}/texmf/tex/texinfo/texinfo.tex|g' Makefile.in +rm -f config/texinfo.tex + +# Remove hidden files +rm -f examples/Exemples/demo/._* +rm -f examples/Exemples/analyse/._* + +%build +export LDFLAGS="%{__global_ldflags} -Wl,--as-needed -lblas" +%configure --enable-static=no --with-included-gettext=no --enable-nls=yes \ + --enable-tommath=no --enable-debug=no --enable-gc=no --enable-sscl=no \ + --enable-dl=yes --enable-gsl=yes --enable-lapack=yes --enable-pari=yes \ + --enable-ntl=yes --enable-gmpxx=yes --enable-cocoa=autodetect \ + --enable-gui=yes --disable-rpath + +# The --disable-rpath option of configure was not enough to get rid of the hardcoded libdir +sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool +sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool + +# Fix unused-direct-shlib-dependency with libgslcblas.so.0 and libgfortran.so.3 +sed -i -e 's! -shared ! -Wl,--as-needed\0!g' libtool + +make %{?_smp_mflags} + +# Rebuild giac_*.info and Convert info file to utf-8 +(cd doc ; make) +for i in doc/*/giac_*.info doc/en/html_* ; do + iconv -f ISO-8859-1 -t UTF-8 -o $i.new $i && \ + touch -r $i $i.new && \ + mv $i.new $i +done +# + +%install +make DESTDIR=%{buildroot} install + +cp -p src/tinymt32_license.h LICENSE.tinymt32 + +# Remove unwanted files. +rm -f %{buildroot}%{_infodir}/dir +rm -rf %{buildroot}%{_datadir}/application-registry +# The .la is still built despite the built of libgiac.a has been disabled +rm -f %{buildroot}%{_libdir}/libgiac.la +# I have tried to remove the empty files in the setup stage, it was not a good idea +# because make install will then require hevea as an extra (and big) dependancy and I guess +# that it will recreate those empty files, so it's better to delete them here. +find %{buildroot} -size 0 -delete +find %{buildroot} -name *~ -delete +# Obsolete symbolic link +rm -f %{buildroot}%{_bindir}/xcasnew +# +# Mime package was not installed. +install -pm 644 -D debian/giac.sharedmimeinfo \ + %{buildroot}%{_datadir}/mime/packages/giac.xml +# + +# Install/check appdata file. +install -pm 644 -D %{SOURCE2} \ + %{buildroot}%{_datadir}/appdata/xcas.appdata.xml +appstream-util validate-relax --nonet %{buildroot}%{_datadir}/appdata/*.appdata.xml +# + +# Add extra pdf docs. (NB: make dvi gives only the same doc in dvi format) +install -pm 644 -t %{buildroot}%{_datadir}/giac/doc doc/en/cas*.pdf +install -pm 644 -t %{buildroot}%{_datadir}/giac/doc/en doc/en/*.pdf +install -pm 644 -t %{buildroot}%{_datadir}/giac/doc/el doc/el/*.pdf +install -pm 644 -t %{buildroot}%{_datadir}/giac/doc/es doc/es/*.pdf + +# +# DOC Files (1-4): +# 1) Man: +# +mkdir -p %{buildroot}%{_mandir}/man1 +install -pm 644 debian/giac.1 %{buildroot}%{_mandir}/man1 +install -pm 644 debian/cas_help.1 %{buildroot}%{_mandir}/man1 +install -pm 644 debian/pgiac.1 %{buildroot}%{_mandir}/man1 + +# Add a link for FR env users to have the english help instead of a page +# not found. +mkdir -p %{buildroot}%{_datadir}/giac/doc/fr +(cd %{buildroot}%{_datadir}/giac/doc/fr ; ln -s ../en/cascmd_en cascmd_fr ) + +%find_lang %{name} +desktop-file-install --vendor="" --dir=%{buildroot}%{_datadir}/applications/\ + %{buildroot}%{_datadir}/applications/xcas.desktop + +# Create a list of files non required at runtime by icas nor xcas +# that are under %%{_datadir}/giac/doc for packaging in giac-doc +# a) The non required files at runtime in %%{_datadir}/giac/doc/[a-z]{2} +find %{buildroot}%{_datadir}/giac/doc -maxdepth 2 -type f| \ + grep -E "%{_datadir}/giac/doc/[a-z]{2}/" | \ + grep -v -E "%{_datadir}/giac/doc/[a-z]{2}/keywords$" | \ + grep -v -E "%{_datadir}/giac/doc/[a-z]{2}/xcasmenu$" | \ + grep -v -E "%{_datadir}/giac/doc/[a-z]{2}/xcasex$" | \ + sed -e "s:%{buildroot}::" >giacdoclist +# b) Add the files under doc +find %{buildroot}%{_datadir}/giac/doc -maxdepth 1 -type f| \ + grep -v -E "%{_datadir}/giac/doc/aide_cas$" | \ + sed -e "s:%{buildroot}::" >>giacdoclist + +# c) Add the dir under %%{_datadir}/giac/doc/[a-z]{2} +find %{buildroot}%{_datadir}/giac/doc -maxdepth 2 -type d| \ + grep -E "%{_datadir}/giac/doc/[a-z]{2}/" | \ + grep -v -E "%{_datadir}/giac/doc$" | \ + grep -v -E "%{_datadir}/giac/doc/[a-z]{2}$" | \ + sed -e "s:%{buildroot}::" | \ + sed -e "s:$:/:" >>giacdoclist +# d) Add all the doc subdir different from %%{_datadir}/giac/doc/[a-z]{2} +find %{buildroot}%{_datadir}/giac/doc -maxdepth 1 -type d| \ + grep -v -E "%{_datadir}/giac/doc$" | \ + grep -v -E "%{_datadir}/giac/doc/[a-z]{2}$" | \ + sed -e "s:%{buildroot}::" | \ + sed -e "s:$:/:" >>giacdoclist +# e) Add all the links but aide_cas +find %{buildroot}%{_datadir}/giac/doc -maxdepth 2 -type l| \ + grep -v -E "%{_datadir}/giac/doc/aide_cas$" | \ + sed -e "s:%{buildroot}::" >>giacdoclist + +%post +/sbin/ldconfig +/sbin/install-info %{_infodir}/%{name}_us.info %{_infodir}/dir || : +/sbin/install-info %{_infodir}/%{name}_es.info %{_infodir}/dir || : + +%preun +if [ $1 = 0 ] ; then +/sbin/install-info --delete %{_infodir}/%{name}_us.info %{_infodir}/dir || : +/sbin/install-info --delete %{_infodir}/%{name}_es.info %{_infodir}/dir || : +fi + +%postun -p /sbin/ldconfig + +%post xcas +if [ $1 -eq 0 ] ; then + /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null +fi +/bin/touch --no-create %{_datadir}/mime/packages &>/dev/null || : +/usr/bin/update-desktop-database &> /dev/null || : + +%postun xcas +touch --no-create %{_datadir}/icons/hicolor +if [ -x %{_bindir}/gtk-update-icon-cache ]; then + %{_bindir}/gtk-update-icon-cache -q %{_datadir}/icons/hicolor; +fi +if [ $1 -eq 0 ] ; then + /usr/bin/update-mime-database %{_datadir}/mime &> /dev/null || : +fi +/usr/bin/update-desktop-database &> /dev/null || : + +%posttrans xcas +/usr/bin/update-mime-database %{?fedora:-n} %{_datadir}/mime &> /dev/null || : +/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : + +%check +export LD_LIBRARY_PATH=../src/.libs +make -C check check + +%files -f %{name}.lang +%license COPYING +%license LICENSE.tinymt32 +%{_bindir}/icas +%{_bindir}/giac +%{_bindir}/*_help +%{_libdir}/libgiac.so.* +# The following files are required at runtime by icas AND xcas. +# (Ex: if LANG is fr, alea(5) should give an INT) +# Moreover, without aide_cas the keywords files are not found in icas +# and xcas. Additionally xcas uses it for tab completions. +%{_datadir}/giac/doc/*/keywords +%{_datadir}/giac/aide_cas +%{_datadir}/giac/doc/aide_cas +# The dirs shared +%dir %{_datadir}/giac +%dir %{_datadir}/giac/doc +# +%dir %{_datadir}/giac/doc/de +%dir %{_datadir}/giac/doc/el +%dir %{_datadir}/giac/doc/en +%dir %{_datadir}/giac/doc/es +%dir %{_datadir}/giac/doc/fr +%dir %{_datadir}/giac/doc/pt +%dir %{_datadir}/giac/doc/zh +# +%{_infodir}/giac_*.info.gz +%{_mandir}/man1/giac* +%{_mandir}/man1/*_help* + +# The gui files +%files xcas +%{_bindir}/xcas +# The dirs shared +%dir %{_datadir}/giac +%dir %{_datadir}/giac/doc +# +%dir %{_datadir}/giac/doc/de +%dir %{_datadir}/giac/doc/el +%dir %{_datadir}/giac/doc/en +%dir %{_datadir}/giac/doc/es +%dir %{_datadir}/giac/doc/fr +%dir %{_datadir}/giac/doc/pt +%dir %{_datadir}/giac/doc/zh +# +# Required at runtime. (additional menu) +%{_datadir}/giac/doc/*/xcasmenu +%{_datadir}/giac/doc/*/xcasex + +# Files under dirs shared with other packages +%{_datadir}/applications/xcas.desktop +%{_datadir}/appdata/xcas.appdata.xml +%{_datadir}/mime/packages/giac.xml +%{_datadir}/pixmaps/xcas.xpm +%{_datadir}/icons/hicolor/*/apps/xcas.png +%{_datadir}/icons/hicolor/*/mimetypes/application-x-xcas.png + +%files -n pgiac +%{_bindir}/pgiac +%{_mandir}/man1/pgiac* + +%files devel +%{_includedir}/giac/ +%{_libdir}/libgiac.so + +# DOC Files +%files doc -f giacdoclist +# 3) As we have removed the FR doc, more than 2/3 of the following files are +# for the EN doc, so it is meaningfull to put all the GPL doc together. +# +# a GPLv3 COPYING file +%doc README +%license COPYING +# 4) Warning about *.xws: +# - All the .xws files are examples of sessions saved from xcas. They are +# not text files and they *must not* be converted to UTF-8 or any other +# character encoding. +# - The .cas and .cxx files are giac code and function. They are text files +# +# NB: %%{_docdir}/giac is in the -filsystem package +%{_docdir}/giac/* +# Add all the files that are in %%{_datadir}/giac but not giac/aide_cas +# and not those in giac/doc/ +%dir %{_datadir}/giac +%dir %{_docdir}/giac +%dir %{_datadir}/giac/doc +# The dirs shared +# +%dir %{_datadir}/giac/doc/de +%dir %{_datadir}/giac/doc/el +%dir %{_datadir}/giac/doc/en +%dir %{_datadir}/giac/doc/es +%dir %{_datadir}/giac/doc/fr +%dir %{_datadir}/giac/doc/pt +%dir %{_datadir}/giac/doc/zh +# +%{_datadir}/giac/examples/ + +%changelog +* Sat Jul 02 2016 Antonio Trande 1.2.2-5.63 +- Fix directories owning +- Exclude PPC and aarch64 + +* Thu Jun 30 2016 Antonio Trande 1.2.2-4.63 +- Update to subversion 63 +- Add libXinerama BR +- Fix co-owning of documentation sub-directories +- Fix appdata file +- Add Provides tags + +* Thu May 19 2016 Antonio Trande 1.2.2-3.45 +- Source tarball repacked without non-free docs +- Licenses combined in GPLv3+ only + +* Fri May 13 2016 Antonio Trande 1.2.2-2 +- Fix required package of pgiac + +* Fri May 13 2016 Antonio Trande 1.2.2-1 +- Update to 1.2.2 +- pgiac script packaged separately +- Fix cSolveorder check +- Update scriptlets +- Add appdata file +- Excluded PPC and aarch64 +- Drop the filesystem sub-package + +* Sun Jul 6 2014 Frederic Han 1.1.1-1 +- Update to current stable upstream version. Remove obsolete patches. +- Add mpfi-devel dependency. (New feature in 1.1.1) +- Add requires of hicolor-icon-theme instead of owning dirs. + +* Sun Apr 27 2014 Frederic Han 1.1.0-1 +- Let the doc package be independent of the binary packages. So create + a filesystem package containing the shared directories + +* Wed Apr 16 2014 Frederic Han 1.1.0-1 +- Dont delete intl/Makefile to avoid Makefile and configure modif/rebuilt +- Create a file list: giacdocfile for giac/doc files that are not needed + at runtime +- Remove %%dir %%{_datadir}/mime and %%dir %%{_datadir}/mime/packages from + giac-xcas package list + +* Mon Apr 14 2014 Frederic Han 1.1.0-1 +- Add tinymt32 License in %%doc, and LGPLv2+ tag +- Add gettext-devel in BR and disable included intl +- removed doc/*/texinfo.tex, add BR texinfo, and rebuild *.info with + the system texinfo.tex file for License clarity, also convert them to utf-8 +- Add missing %%dir in %%files xcas and %%files +- Fix unused-direct-shlib-dependency for libgiac +- Remove x perms in examples, clean backup files +- Move the mime and desktop updates to %%post xcas and %%postun xcas +- Add a warning to *not* try to convert .xws files to UTF-8 + +* Fri Apr 11 2014 Frederic Han 1.1.0-1 +- Initial version +- Found GPLv3 and v2 files in 1.1.0 sources. So package the GPLv3 LICENSE. +- Put GPLv3+ tag on the -doc package according to 1.1.1. +- Rename the package giac-gui to giac-xcas. +- Add a check patch and make check. +- Some files of %%{_datadir}/giac are need at runtime. So, + add them in the main or -xcas package filelist. +- Move all the %%{_docdir}/giac files except LICENSE to the -doc package +- Add extra pdf doc found in source archive. +- Untabify spec file. +- remove the README patch to keep the original 1.1.0 unchanged. add a README.fedora + to explain the License evolution of giac non FR doc. +- Improve giac.1 manpage. diff --git a/sources b/sources index e69de29..e83e25b 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +8b00d7b2c5116c3b3c1b1ab4b321802e giac-1.2.2.63.tar.gz diff --git a/xcas-appdata.xml b/xcas-appdata.xml new file mode 100644 index 0000000..29740af --- /dev/null +++ b/xcas-appdata.xml @@ -0,0 +1,57 @@ + + + xcas.desktop + CC0-1.0 + Computer Algebra System, Symbolic calculus, Geometry + xcas + GPL-3.0+ + + Education + Math + + +

+ Giac is a Computer Algebra System made by Bernard Parisse. It provides + features from the C/C++ libraries PARI, NTL (arithmetic), GSL (numerics), + GMP (big integers), MPFR (bigfloats) and also:

+
    +
  • Efficient algorithms for multivariate polynomial operations + (product, GCD, factorization, groebner bases)
  • +
  • Symbolic computations: solver, simplifications, limits/series, + integration
  • +
  • Linear algebra with numerical or symbolic coefficients
  • +
  • Partial Maple and TI compatibility
  • +
  • It has interfaces in texmacs and sagemath
  • +
+

It consists of:

+
    +
  • A C++ library (libgiac)
  • +
  • A command line interpreter (icas/giac)
  • +
  • An FLTK-based GUI (xcas) with interactive geometry and formal + spreadsheets
  • +
+
+ giac + http://www-fourier.ujf-grenoble.fr/~parisse/giac.html + http://xcas.e.ujf-grenoble.fr/XCAS/ + + + https://sagitter.fedorapeople.org/giac-screenshots/xcas1.png + Newton's method + + + https://sagitter.fedorapeople.org/giac-screenshots/xcas2.png + Hexagon animation + + + https://sagitter.fedorapeople.org/giac-screenshots/xcas3.png + Animated cube + + + https://sagitter.fedorapeople.org/giac-screenshots/xcas4.png + Spreadsheet showing Newton's method + + + sagitter_at_fedoraproject.org + Bernard Parisse +