This document describes how to install and write a C++ program using Giac computer algebra software. This assumes you already have C++ installed on your PC. I did this on a Linux OS.
Here is a post about the history of Giac.
The help pages that describes the giac commands are HTML and PDF
Copied the above file to an empty folder ~/TMP/GIAC/ folder and then cd to the above, and extracted the content using the commands
> cd ~/TMP/GIAC/ > ls -lrt total 111092 -rwxrwxrwx 1 me me 113753631 Jan 12 18:13 giac_1.9.0-35.tar.gz > gunzip giac_1.9.0-35.tar.gz > tar -xvf giac_1.9.0-35.tar
The above creates a new folder giac-1.9.0/
cd to the above folder created
> cd giac-1.9.0/
The file INSTALL contains more directions. This is what I did.
installed the extra software mentioned in the above file. I did all that using Linux Manjaro installation manager as it is easier.
>locate mpfr.h /usr/include/mpfr.h >locate gmp.h /usr/include/gmp.h >locate readline.h /usr/include/readline/readline.h >locate gsl_blas.h /usr/include/gsl/gsl_blas.h >pacman -Ql lapack lapack /usr/ lapack /usr/lib/ lapack /usr/lib/cmake/ lapack /usr/lib/cmake/lapack-3.11.0/ lapack /usr/lib/cmake/lapack-3.11.0/lapack-config-version.cmake lapack /usr/lib/cmake/lapack-3.11.0/lapack-config.cmake lapack /usr/lib/cmake/lapack-3.11.0/lapack-targets-release.cmake lapack /usr/lib/cmake/lapack-3.11.0/lapack-targets.cmake lapack /usr/lib/liblapack.so lapack /usr/lib/liblapack.so.3 lapack /usr/lib/liblapack.so.3.11.0 lapack /usr/lib/libtmglib.so lapack /usr/lib/libtmglib.so.3 lapack /usr/lib/libtmglib.so.3.11.0 lapack /usr/lib/pkgconfig/ lapack /usr/lib/pkgconfig/lapack.pc >pacman -Ql pari etc..
Now that all needed extra software is installed, it is time to build and install giac itself. First configure the makefile as follows
>./configure checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /usr/bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking whether ln -s works... yes checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking for a sed that does not truncate output... /usr/bin/sed checking for grep that handles long lines and -e... /usr/bin/grep checking for egrep... /usr/bin/grep -E checking for fgrep... /usr/bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking the maximum length of command line arguments... 1572864 checking whether the shell understands some XSI constructs... yes checking whether the shell understands "+="... yes checking for /usr/bin/ld option to reload object files... -r checking how to recognize dependent libraries... pass_all checking for ar... ar checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from gcc object... ok checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking whether we are using the GNU C++ compiler... (cached) yes checking whether g++ accepts -g... (cached) yes checking dependency style of g++... (cached) gcc3 checking how to run the C++ preprocessor... g++ -E checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC -DPIC checking if g++ PIC flag -fPIC -DPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking if g++ supports -c -o file.o... (cached) yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking for bison... bison -y checking for flex... flex checking lex output file root... lex.yy checking lex library... none needed checking whether yytext is a pointer... no checking whether byte ordering is bigendian... no checking for standard C++ header files... yes checking gmp.h usability... yes checking gmp.h presence... yes checking for gmp.h... yes checking for main in -lgmp... yes checking mpfr.h usability... yes checking mpfr.h presence... yes checking for mpfr.h... yes checking for main in -lmpfr... yes checking for mpfr_set_str_raw... no checking mpfi.h usability... yes checking mpfi.h presence... yes checking for mpfi.h... yes checking for main in -lmpfi... yes checking gmpxx.h usability... yes checking gmpxx.h presence... yes checking for gmpxx.h... yes checking for main in -lgmpxx... yes checking ecm.h usability... yes checking ecm.h presence... yes checking for ecm.h... yes checking for main in -lecm... yes checking bern_rat.h usability... no checking bern_rat.h presence... no checking for bern_rat.h... no checking NTL/ZZ.h usability... yes checking NTL/ZZ.h presence... yes checking for NTL/ZZ.h... yes checking for main in -lntl... yes checking pari/pari.h usability... yes checking pari/pari.h presence... yes checking for pari/pari.h... yes checking for main in -lpari... yes checking for main in -lm... yes checking png.h usability... yes checking png.h presence... yes checking for png.h... yes checking for library containing png_sig_cmp... -lpng16 checking for dlopen in -ldl... yes checking size of void *... 8 checking size of int... 4 checking size of long... 8 checking size of long long... 8 checking gsl/gsl_blas.h usability... yes checking gsl/gsl_blas.h presence... yes checking for gsl/gsl_blas.h... yes checking gsl/gsl_eigen.h usability... yes checking gsl/gsl_eigen.h presence... yes checking for gsl/gsl_eigen.h... yes checking for main in -lgslcblas... yes checking for gsl_sf_gamma in -lgsl... yes checking for main in -lgfortran... yes checking for main in -lblas... yes checking for main in -llapack... yes checking CoCoA/io.H usability... no checking CoCoA/io.H presence... no checking for CoCoA/io.H... no checking ao/ao.h usability... yes checking ao/ao.h presence... yes checking for ao/ao.h... yes checking for main in -lao... yes checking glpk.h usability... yes checking glpk.h presence... yes checking for glpk.h... yes checking for main in -lglpk... yes checking samplerate.h usability... yes checking samplerate.h presence... yes checking for samplerate.h... yes checking for main in -lsamplerate... yes checking curl/curl.h usability... yes checking curl/curl.h presence... yes checking for curl/curl.h... yes checking for main in -lcurl... yes checking for tgetent... no checking for tgetent in -lncurses... yes checking readline/readline.h usability... yes checking readline/readline.h presence... yes checking for readline/readline.h... yes checking readline/history.h usability... yes checking readline/history.h presence... yes checking for readline/history.h... yes checking for version of libreadline... yes checking for readline in -lreadline... yes checking for X... libraries , headers checking for gethostbyname... yes checking for connect... yes checking for remove... yes checking for shmat... yes checking for IceConnectionNumber in -lICE... yes checking for main in -lGL... yes checking FL/Fl.H usability... yes checking FL/Fl.H presence... yes checking for FL/Fl.H... yes checking for main in -lX11... yes checking for main in -lXcursor... yes checking for main in -lXfixes... yes checking for main in -lXinerama... yes checking for main in -lfontconfig... yes checking for main in -lXft... yes checking for main in -lXext... yes checking for main in -lXrender... yes checking for main in -lfltk_gl... yes checking for main in -lfltk... yes checking for main in -lz... yes checking for png.h... (cached) yes checking for main in -lpng... yes checking for main in -ljpeg... yes checking for main in -lfltk_images... yes checking dfu_lib.h usability... no checking dfu_lib.h presence... no checking for dfu_lib.h... no checking for main in -lusb-1.0... yes checking for dfu_main in -ldfu... no checking for main in -lcliquer... no checking for main in -lnauty... yes checking nauty/naututil.h usability... yes checking nauty/naututil.h presence... yes checking for nauty/naututil.h... yes checking vcl1/vectorclass.h usability... no checking vcl1/vectorclass.h presence... no checking for vcl1/vectorclass.h... no checking for main in -lpthread... yes checking pthread.h usability... yes checking pthread.h presence... yes checking for pthread.h... yes checking malloc.h usability... yes checking malloc.h presence... yes checking for malloc.h... yes checking for sysconf... yes checking for clock_gettime in -lrt... yes checking unordered_map usability... yes checking unordered_map presence... yes checking for unordered_map... yes checking ext/hash_map usability... yes checking ext/hash_map presence... yes checking for ext/hash_map... yes checking tr1/unordered_map usability... yes checking tr1/unordered_map presence... yes checking for tr1/unordered_map... yes checking hash_map usability... yes checking hash_map presence... yes checking for hash_map... yes checking pwd.h usability... yes checking pwd.h presence... yes checking for pwd.h... yes checking locale.h usability... yes checking locale.h presence... yes checking for locale.h... yes checking for unistd.h... (cached) yes checking sys/time.h usability... yes checking sys/time.h presence... yes checking for sys/time.h... yes checking sys/times.h usability... yes checking sys/times.h presence... yes checking for sys/times.h... yes checking sys/resource.h usability... yes checking sys/resource.h presence... yes checking for sys/resource.h... yes checking for sys/types.h... (cached) yes checking signal.h usability... yes checking signal.h presence... yes checking for signal.h... yes checking for getpid... yes checking for getcwd... yes checking for getpwuid... yes checking for system... yes checking whether NLS is requested... yes checking for msgfmt... /usr/bin/msgfmt checking for gmsgfmt... /usr/bin/msgfmt checking for xgettext... /usr/bin/xgettext checking for msgmerge... /usr/bin/msgmerge checking whether we are using the GNU C Library 2 or newer... yes checking for ranlib... (cached) ranlib checking for strerror in -lcposix... no checking for an ANSI C-conforming const... yes checking for signed... yes checking for inline... inline checking for off_t... yes checking for size_t... yes checking for long long... yes checking for long double... yes checking for wchar_t... yes checking for wint_t... yes checking for inttypes.h... yes checking for stdint.h... yes checking for intmax_t... yes checking whether printf() supports POSIX/XSI format strings... yes checking for working alloca.h... yes checking for alloca... yes checking for stdlib.h... (cached) yes checking for unistd.h... (cached) yes checking for sys/param.h... yes checking for getpagesize... yes checking for working mmap... yes checking whether we are using the GNU C Library 2.1 or newer... yes checking whether integer division by zero raises SIGFPE... yes checking for unsigned long long... yes checking for inttypes.h... yes checking whether the inttypes.h PRIxNN macros are broken... no checking for stdint.h... (cached) yes checking for SIZE_MAX... yes checking for stdint.h... (cached) yes checking for CFPreferencesCopyAppValue... no checking for CFLocaleCopyCurrent... no checking for ld used by GCC... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking for shared library run path origin... done checking for ptrdiff_t... yes checking argz.h usability... yes checking argz.h presence... yes checking for argz.h... yes checking limits.h usability... yes checking limits.h presence... yes checking for limits.h... yes checking for locale.h... (cached) yes checking nl_types.h usability... yes checking nl_types.h presence... yes checking for nl_types.h... yes checking for malloc.h... (cached) yes checking stddef.h usability... yes checking stddef.h presence... yes checking for stddef.h... yes checking for stdlib.h... (cached) yes checking for string.h... (cached) yes checking for unistd.h... (cached) yes checking for sys/param.h... (cached) yes checking for asprintf... yes checking for fwprintf... yes checking for getcwd... (cached) yes checking for getegid... yes checking for geteuid... yes checking for getgid... yes checking for getuid... yes checking for mempcpy... yes checking for munmap... yes checking for putenv... yes checking for setenv... yes checking for setlocale... yes checking for snprintf... yes checking for stpcpy... yes checking for strcasecmp... yes checking for strdup... yes checking for strtoul... yes checking for tsearch... yes checking for wcslen... yes checking for __argz_count... yes checking for __argz_stringify... yes checking for __argz_next... yes checking for __fsetlocking... yes checking whether _snprintf is declared... no checking whether _snwprintf is declared... no checking whether feof_unlocked is declared... yes checking whether fgets_unlocked is declared... yes checking whether getc_unlocked is declared... yes checking for iconv... yes checking for iconv declaration... extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); checking for nl_langinfo and CODESET... yes checking for LC_MESSAGES... yes checking for bison... bison checking version of bison... 3.8.2, ok checking for CFPreferencesCopyAppValue... (cached) no checking for CFLocaleCopyCurrent... (cached) no checking whether NLS is requested... yes checking whether included gettext is requested... no checking for GNU gettext in libc... yes checking whether to use NLS... yes checking where the gettext function comes from... libc checking for egrep... (cached) /usr/bin/grep -E checking for latex... /usr/local/texlive/2022/bin/x86_64-linux/latex checking for makeindex... /usr/local/texlive/2022/bin/x86_64-linux/makeindex checking for pdflatex... /usr/local/texlive/2022/bin/x86_64-linux/pdflatex checking for dvips... /usr/local/texlive/2022/bin/x86_64-linux/dvips checking sstream usability... yes checking sstream presence... yes checking for sstream... yes configure: creating ./config.status config.status: creating Makefile config.status: creating src/Makefile config.status: creating check/Makefile config.status: creating doc/Makefile config.status: creating doc/en/Makefile config.status: creating doc/es/Makefile config.status: creating doc/fr/Makefile config.status: creating doc/el/Makefile config.status: creating doc/el/tutoriel/Makefile config.status: creating doc/el/casinter/Makefile config.status: creating doc/local/Makefile config.status: creating doc/pt/Makefile config.status: creating doc/zh/Makefile config.status: creating doc/de/Makefile config.status: creating intl/Makefile config.status: WARNING: 'intl/Makefile.in' seems to ignore the --datarootdir setting config.status: creating po/Makefile.in config.status: WARNING: 'po/Makefile.in.in' seems to ignore the --datarootdir setting config.status: creating examples/Makefile config.status: creating debianold/Makefile config.status: creating debian/Makefile config.status: creating micropython-1.12/Makefile config.status: creating micropython-1.12/docs/Makefile config.status: creating micropython-1.12/drivers/Makefile config.status: creating micropython-1.12/examples/Makefile config.status: creating micropython-1.12/extmod/Makefile config.status: creating micropython-1.12/lib/Makefile config.status: creating micropython-1.12/logo/Makefile config.status: creating micropython-1.12/ports/Makefile config.status: creating micropython-1.12/py/Makefile config.status: creating micropython-1.12/tests/Makefile config.status: creating micropython-1.12/tools/Makefile config.status: creating micropython-1.12/unix/Makefile config.status: creating micropython-1.12/ulab/Makefile config.status: creating micropython-1.12/ulab/numpy/Makefile config.status: creating micropython-1.12/ulab/numpy/fft/Makefile config.status: creating micropython-1.12/ulab/numpy/ndarray/Makefile config.status: creating micropython-1.12/ulab/numpy/linalg/Makefile config.status: creating micropython-1.12/ulab/scipy/Makefile config.status: creating micropython-1.12/ulab/scipy/linalg/Makefile config.status: creating micropython-1.12/ulab/scipy/optimize/Makefile config.status: creating micropython-1.12/ulab/scipy/signal/Makefile config.status: creating micropython-1.12/ulab/scipy/special/Makefile config.status: creating micropython-1.12/ulab/user/Makefile config.status: creating micropython-1.12/ulab/utils/Makefile config.status: creating config.h config.status: executing depfiles commands config.status: executing libtool commands config.status: executing default-1 commands config.status: creating po/POTFILES config.status: creating po/Makefile Adding link . to giac in src >
>make make all-recursive make[1]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0' Making all in micropython-1.12 make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/micropython-1.12' Making all in xcas make[3]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/micropython-1.12/xcas' Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity. ../py/mkrules.mk:176: warning: overriding recipe for target 'libmicropython.a' ../py/mkrules.mk:145: warning: ignoring old recipe for target 'libmicropython.a' mkdir -p build/genhdr GEN build/genhdr/mpversion.h GEN build/genhdr/moduledefs.h GEN build/genhdr/qstr.i.last GEN build/genhdr/qstr.split GEN build/genhdr/qstrdefs.collected.h QSTR updated GEN build/genhdr/qstrdefs.generated.h mkdir -p build/extmod/ mkdir -p build/lib/embed/ mkdir -p build/lib/utils/ mkdir -p build/py/ mkdir -p build/ulab/ mkdir -p build/ulab/numpy/ mkdir -p build/ulab/numpy/fft/ mkdir -p build/ulab/numpy/linalg/ mkdir -p build/ulab/numpy/ndarray/ mkdir -p build/ulab/scipy/ mkdir -p build/ulab/scipy/linalg/ mkdir -p build/ulab/scipy/optimize/ mkdir -p build/ulab/scipy/signal/ mkdir -p build/ulab/scipy/special/ mkdir -p build/ulab/user/ mkdir -p build/ulab/utils/ CC ../py/mpstate.c CC ../py/nlr.c CC ../py/nlrx86.c CC ../py/nlrx64.c CC ../py/nlrthumb.c CC ../py/nlrpowerpc.c CC ../py/nlrxtensa.c CC ../py/nlrsetjmp.c CC ../py/malloc.c CC ../py/gc.c CC ../py/pystack.c CC ../py/qstr.c CC ../py/vstr.c CC ../py/mpprint.c CC ../py/unicode.c CC ../py/mpz.c CC ../py/reader.c CC ../py/lexer.c CC ../py/parse.c CC ../py/scope.c CC ../py/compile.c CC ../py/emitcommon.c CC ../py/emitbc.c CC ../py/asmbase.c CC ../py/asmx64.c CC ../py/emitnx64.c CC ../py/asmx86.c CC ../py/emitnx86.c CC ../py/asmthumb.c CC ../py/emitnthumb.c CC ../py/emitinlinethumb.c CC ../py/asmarm.c CC ../py/emitnarm.c CC ../py/asmxtensa.c CC ../py/emitnxtensa.c CC ../py/emitinlinextensa.c CC ../py/emitnxtensawin.c CC ../py/formatfloat.c CC ../py/parsenumbase.c CC ../py/parsenum.c CC ../py/emitglue.c CC ../py/persistentcode.c CC ../py/runtime.c CC ../py/runtime_utils.c CC ../py/scheduler.c CC ../py/nativeglue.c CC ../py/ringbuf.c CC ../py/stackctrl.c CC ../py/argcheck.c CC ../py/warning.c CC ../py/profile.c CC ../py/map.c CC ../py/obj.c CC ../py/objarray.c CC ../py/objattrtuple.c CC ../py/objbool.c CC ../py/objboundmeth.c CC ../py/objcell.c CC ../py/objclosure.c CC ../py/objcomplex.c CC ../py/objdeque.c CC ../py/objdict.c CC ../py/objenumerate.c CC ../py/objexcept.c CC ../py/objfilter.c CC ../py/objfloat.c CC ../py/objfun.c .... make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/examples' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/examples' make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0' make[2]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0' make[1]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0'
Now that make is finished, time to install Giac.
>sudo make install [sudo] password for me: Making install in micropython-1.12 make[1]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/micropython-1.12' Making install in xcas make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/micropython-1.12/xcas' Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity. ../py/mkrules.mk:176: warning: overriding recipe for target 'libmicropython.a' ../py/mkrules.mk:145: warning: ignoring old recipe for target 'libmicropython.a' /bin/cp libmicropython.a ../.. make[2]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/micropython-1.12/xcas' make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/micropython-1.12' make[3]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/micropython-1.12' make[3]: Nothing to be done for 'install-exec-am'. make[3]: Nothing to be done for 'install-data-am'. make[3]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/micropython-1.12' make[2]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/micropython-1.12' make[1]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/micropython-1.12' Making install in src make[1]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/src' make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/src' /usr/bin/mkdir -p '/usr/local/lib' /bin/sh ../libtool --mode=install /usr/bin/install -c libgiac.la '/usr/local/lib' libtool: install: /usr/bin/install -c .libs/libgiac.so.0.0.0 /usr/local/lib/libgiac.so.0.0.0 libtool: install: (cd /usr/local/lib && { ln -s -f libgiac.so.0.0.0 libgiac.so.0 || { rm -f libgiac.so.0 && ln -s libgiac.so.0.0.0 libgiac.so.0; }; }) libtool: install: (cd /usr/local/lib && { ln -s -f libgiac.so.0.0.0 libgiac.so || { rm -f libgiac.so && ln -s libgiac.so.0.0.0 libgiac.so; }; }) libtool: install: /usr/bin/install -c .libs/libgiac.lai /usr/local/lib/libgiac.la libtool: install: /usr/bin/install -c .libs/libgiac.a /usr/local/lib/libgiac.a libtool: install: chmod 644 /usr/local/lib/libgiac.a libtool: install: ranlib /usr/local/lib/libgiac.a libtool: finish: PATH="/usr/local/texlive/2022/bin/x86_64-linux:/mnt/g/public_html/scripts:/usr/local/bin:/usr/bin:/bin:/home/me/TMP/sage-9.7:/home/me/TMP/sage-9.7/local/bin:/home/me/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/var/lib/snapd/snap/bin:/sbin" ldconfig -n /usr/local/lib ---------------------------------------------------------------------- Libraries have been installed in: /usr/local/lib If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /usr/bin/mkdir -p '/usr/local/bin' /bin/sh ../libtool --mode=install /usr/bin/install -c icas xcas aide hevea2mml '/usr/local/bin' libtool: install: /usr/bin/install -c .libs/icas /usr/local/bin/icas libtool: install: /usr/bin/install -c .libs/xcas /usr/local/bin/xcas libtool: install: /usr/bin/install -c .libs/aide /usr/local/bin/aide libtool: install: /usr/bin/install -c hevea2mml /usr/local/bin/hevea2mml /usr/bin/mkdir -p '/usr/local/bin' /usr/bin/install -c pgiac '/usr/local/bin' make install-exec-hook make[3]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/src' rm -f /usr/local/bin/cas_help mv /usr/local/bin/aide /usr/local/bin/cas_help ln -sf cas_help /usr/local/bin/en_cas_help ln -sf cas_help /usr/local/bin/es_cas_help ln -sf cas_help /usr/local/bin/fr_cas_help ln -sf icas /usr/local/bin/giac ln -sf xcas /usr/local/bin/xcasnew mkdir -p /usr/local/include/giac cp -f config.h /usr/local/include/giac cp -f input_lexer.h /usr/local/include/giac cp -f input_parser.h /usr/local/include/giac make[3]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/src' /usr/bin/mkdir -p '/usr/local/include/giac' /usr/bin/install -c -m 644 dispatch.h fraction.h gen.h desolve.h misc.h ti89.h mathml.h identificateur.h unary.h symbolic.h index.h modpoly.h modfactor.h permu.h monomial.h poly.h threaded.h gausspol.h sym2poly.h ezgcd.h derive.h solve.h quater.h subst.h usual.h intg.h intgab.h risch.h lin.h series.h vecteur.h sparse.h vector.h csturm.h moyal.h tex.h global.h ifactor.h alg_ext.h gauss.h '/usr/local/include/giac' /usr/bin/install -c -m 644 isom.h plot.h plot3d.h rpn.h prog.h pari.h cocoa.h giac.h first.h maple.h help.h tinymt32.h tinymt32_license.h static.h static_extern.h static_lexer.h static_lexer_.h lexer_tab_int.h static_help.h giacPCH.h giacintl.h gmp_replacements.h myostream.h lpsolve.h optimization.h signalprocessing.h graphe.h graphtheory.h nautywrapper.h markup.h kdisplay.h k_csdk.h k_defs.h fenv.h libregexp.h libregexp-opcode.h libunicode.h libunicode-table.h libbf.h list.h '/usr/local/include/giac' /usr/bin/install -c -m 644 cutils.h qjsgiac.h quickjs.h js.h quickjs-atom.h quickjs-libc.h quickjs-opcode.h bf2gmp.h '/usr/local/include/giac' make[2]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/src' make[1]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/src' Making install in check make[1]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/check' make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/check' make[2]: Nothing to be done for 'install-exec-am'. make[2]: Nothing to be done for 'install-data-am'. make[2]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/check' make[1]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/check' Making install in intl make[1]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/intl' if { test "giac" = "gettext-runtime" || test "giac" = "gettext-tools"; } \ && test 'no' = yes; then \ /bin/sh ../config/mkinstalldirs /usr/local/lib /usr/local/include; \ /usr/bin/install -c -m 644 libintl.h /usr/local/include/libintl.h; \ /bin/sh ../libtool --mode=install \ /usr/bin/install -c -m 644 libintl.a /usr/local/lib/libintl.a; \ if test "@RELOCATABLE@" = yes; then \ dependencies=`sed -n -e 's,^dependency_libs=\(.*\),\1,p' < /usr/local/lib/libintl.la | sed -e "s,^',," -e "s,'\$,,"`; \ if test -n "$dependencies"; then \ rm -f /usr/local/lib/libintl.la; \ fi; \ fi; \ else \ : ; \ fi if test "giac" = "gettext-tools" \ && test 'no' = no \ && test yes != no; then \ /bin/sh ../config/mkinstalldirs /usr/local/lib; \ /bin/sh ../libtool --mode=install \ /usr/bin/install -c -m 644 libgnuintl.a /usr/local/lib/libgnuintl.a; \ rm -f /usr/local/lib/preloadable_libintl.so; \ /usr/bin/install -c -m 644 /usr/local/lib/libgnuintl.so /usr/local/lib/preloadable_libintl.so; \ /bin/sh ../libtool --mode=uninstall \ rm -f /usr/local/lib/libgnuintl.a; \ else \ : ; \ fi if test 'no' = yes; then \ test yes != no || /bin/sh ../config/mkinstalldirs /usr/local/lib; \ temp=/usr/local/lib/t-charset.alias; \ dest=/usr/local/lib/charset.alias; \ if test -f /usr/local/lib/charset.alias; then \ orig=/usr/local/lib/charset.alias; \ sed -f ref-add.sed $orig > $temp; \ /usr/bin/install -c -m 644 $temp $dest; \ rm -f $temp; \ else \ if test yes = no; then \ orig=charset.alias; \ sed -f ref-add.sed $orig > $temp; \ /usr/bin/install -c -m 644 $temp $dest; \ rm -f $temp; \ fi; \ fi; \ /bin/sh ../config/mkinstalldirs /usr/local/share/locale; \ test -f /usr/local/share/locale/locale.alias \ && orig=/usr/local/share/locale/locale.alias \ || orig=./locale.alias; \ temp=/usr/local/share/locale/t-locale.alias; \ dest=/usr/local/share/locale/locale.alias; \ sed -f ref-add.sed $orig > $temp; \ /usr/bin/install -c -m 644 $temp $dest; \ rm -f $temp; \ else \ : ; \ fi if test "giac" = "gettext-tools"; then \ /bin/sh ../config/mkinstalldirs /usr/local/share/gettext/intl; \ /usr/bin/install -c -m 644 VERSION /usr/local/share/gettext/intl/VERSION; \ /usr/bin/install -c -m 644 ChangeLog.inst /usr/local/share/gettext/intl/ChangeLog; \ dists="COPYING.LIB-2.0 COPYING.LIB-2.1 Makefile.in config.charset locale.alias ref-add.sin ref-del.sin gmo.h gettextP.h hash-string.h loadinfo.h plural-exp.h eval-plural.h localcharset.h relocatable.h xsize.h printf-args.h printf-args.c printf-parse.h wprintf-parse.h printf-parse.c vasnprintf.h vasnwprintf.h vasnprintf.c os2compat.h libgnuintl.h.in bindtextdom.c dcgettext.c dgettext.c gettext.c finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c explodename.c dcigettext.c dcngettext.c dngettext.c ngettext.c plural.y plural-exp.c localcharset.c relocatable.c langprefs.c localename.c log.c printf.c osdep.c os2compat.c intl-compat.c"; \ for file in $dists; do \ /usr/bin/install -c -m 644 ./$file \ /usr/local/share/gettext/intl/$file; \ done; \ chmod a+x /usr/local/share/gettext/intl/config.charset; \ dists="plural.c"; \ for file in $dists; do \ if test -f $file; then dir=.; else dir=.; fi; \ /usr/bin/install -c -m 644 $dir/$file \ /usr/local/share/gettext/intl/$file; \ done; \ dists="xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c COPYING.LIB-2 gettext.h libgettext.h plural-eval.c libgnuintl.h"; \ for file in $dists; do \ rm -f /usr/local/share/gettext/intl/$file; \ done; \ else \ : ; \ fi make[1]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/intl' Making install in po make[1]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/po' /bin/sh ../mkinstalldirs /usr/local/share mkdir /usr/local/share/locale mkdir /usr/local/share/locale/es mkdir /usr/local/share/locale/es/LC_MESSAGES installing es.gmo as /usr/local/share/locale/es/LC_MESSAGES/giac.mo mkdir /usr/local/share/locale/fr mkdir /usr/local/share/locale/fr/LC_MESSAGES installing fr.gmo as /usr/local/share/locale/fr/LC_MESSAGES/giac.mo mkdir /usr/local/share/locale/el mkdir /usr/local/share/locale/el/LC_MESSAGES installing el.gmo as /usr/local/share/locale/el/LC_MESSAGES/giac.mo mkdir /usr/local/share/locale/pt mkdir /usr/local/share/locale/pt/LC_MESSAGES installing pt.gmo as /usr/local/share/locale/pt/LC_MESSAGES/giac.mo mkdir /usr/local/share/locale/it mkdir /usr/local/share/locale/it/LC_MESSAGES installing it.gmo as /usr/local/share/locale/it/LC_MESSAGES/giac.mo mkdir /usr/local/share/locale/en mkdir /usr/local/share/locale/en/LC_MESSAGES installing en.gmo as /usr/local/share/locale/en/LC_MESSAGES/giac.mo mkdir /usr/local/share/locale/zh mkdir /usr/local/share/locale/zh/LC_MESSAGES installing zh.gmo as /usr/local/share/locale/zh/LC_MESSAGES/giac.mo mkdir /usr/local/share/locale/de mkdir /usr/local/share/locale/de/LC_MESSAGES installing de.gmo as /usr/local/share/locale/de/LC_MESSAGES/giac.mo if test "giac" = "gettext-tools"; then \ /bin/sh ../mkinstalldirs /usr/local/share/gettext/po; \ for file in Makefile.in.in remove-potcdate.sin quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot Makevars.template; do \ /usr/bin/install -c -m 644 ./$file \ /usr/local/share/gettext/po/$file; \ done; \ for file in Makevars; do \ rm -f /usr/local/share/gettext/po/$file; \ done; \ else \ : ; \ fi make[1]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/po' Making install in debianold make[1]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/debianold' make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/debianold' make[2]: Nothing to be done for 'install-exec-am'. make[2]: Nothing to be done for 'install-data-am'. make[2]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/debianold' make[1]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/debianold' Making install in debian make[1]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/debian' make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/debian' make[2]: Nothing to be done for 'install-exec-am'. make[2]: Nothing to be done for 'install-data-am'. make[2]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/debian' make[1]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/debian' Making install in doc make[1]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc' Making install in en make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/en' make[3]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/en' make[3]: Nothing to be done for 'install-exec-am'. /bin/sh /home/me/TMP/GIAC/giac-1.9.0/config/install-sh -d /usr/local/share/giac/doc/en /usr/bin/install -c -m 644 troussesurvie_en.pdf /usr/local/share/giac/doc/en for dd in casinter cascmd_en tutoriel; do \ /bin/sh /home/me/TMP/GIAC/giac-1.9.0/config/install-sh -d /usr/local/share/giac/doc/en/$dd ; \ done for dd in casinter cascmd_en tutoriel; do \ /usr/bin/install -c -m 644 ./$dd/* /usr/local/share/giac/doc/en/$dd ; \ done /usr/bin/install -c -m 644 html_mall html_mtt html_vall xcasmenu xcasex keywords /usr/local/share/giac/doc/en /usr/bin/mkdir -p '/usr/local/share/doc/giac/en' /usr/bin/install -c -m 644 html_mall html_mtt html_vall xcasmenu xcasex keywords '/usr/local/share/doc/giac/en' /usr/bin/mkdir -p '/usr/local/share/info' /usr/bin/install -c -m 644 ./giac_us.info '/usr/local/share/info' install-info --info-dir='/usr/local/share/info' '/usr/local/share/info/giac_us.info' make[3]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/en' make[2]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/en' Making install in es make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/es' make[3]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/es' make[3]: Nothing to be done for 'install-exec-am'. /bin/sh /home/me/TMP/GIAC/giac-1.9.0/config/install-sh -d /usr/local/share/giac/doc/es /usr/bin/install -c -m 644 xcasmenu xcasex keywords /usr/local/share/giac/doc/es /usr/bin/mkdir -p '/usr/local/share/doc/giac/es' /usr/bin/install -c -m 644 xcasmenu xcasex keywords '/usr/local/share/doc/giac/es' /usr/bin/mkdir -p '/usr/local/share/info' /usr/bin/install -c -m 644 ./giac_es.info '/usr/local/share/info' install-info --info-dir='/usr/local/share/info' '/usr/local/share/info/giac_es.info' make[3]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/es' make[2]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/es' Making install in fr make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/fr' make[3]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/fr' make install-exec-hook make[4]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/fr' mkdir -p /usr/local/share/giac/doc/fr/ /bin/cp -f aide_cas /usr/local/share/giac/doc/fr ln -sf ../giac.js /usr/local/share/giac/doc/fr/giac.js ln -sf ../giacwasm.js /usr/local/share/giac/doc/fr/ ln -sf ../giacwasm.wasm /usr/local/share/giac/doc/fr/ make[4]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/fr' /bin/sh /home/me/TMP/GIAC/giac-1.9.0/config/install-sh -d /usr/local/share/giac/doc/fr /usr/bin/install -c -m 644 tutoriel.pdf algo.pdf troussesurvie_fr.pdf /usr/local/share/giac/doc/fr /usr/bin/install -c -m 644 algo.html algo*png tutoriel.html tutoriel*png /usr/local/share/giac/doc/fr for dd in casrouge castor cascmd_fr casgeo cassim casinter casexo cascas; do \ /bin/sh /home/me/TMP/GIAC/giac-1.9.0/config/install-sh -d /usr/local/share/giac/doc/fr/$dd ; \ done for dd in casrouge castor cascmd_fr casgeo cassim casinter casexo cascas; do \ /usr/bin/install -c -m 644 ./$dd/* /usr/local/share/giac/doc/fr/$dd ; \ done /usr/bin/install -c -m 644 html_mall html_mtt html_vall xcasmenu xcasex keywords /usr/local/share/giac/doc/fr /usr/bin/mkdir -p '/usr/local/share/doc/giac/fr' /usr/bin/install -c -m 644 html_mall html_mtt html_vall xcasmenu xcasex keywords '/usr/local/share/doc/giac/fr' make[3]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/fr' make[2]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/fr' Making install in el make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/el' Making install in tutoriel make[3]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/el/tutoriel' make[4]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/el/tutoriel' make install-exec-hook make[5]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/el/tutoriel' ../../../mkinstalldirs /usr/local/share/giac/doc/el/ mkdir /usr/local/share/giac/doc/el ../../../mkinstalldirs /usr/local/share/giac/doc/el/tutoriel mkdir /usr/local/share/giac/doc/el/tutoriel cp -f * /usr/local/share/giac/doc/el/tutoriel make[5]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/el/tutoriel' make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/el/tutoriel' make[3]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/el/tutoriel' Making install in casinter make[3]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/el/casinter' make[4]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/el/casinter' make install-exec-hook make[5]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/el/casinter' ../../../mkinstalldirs /usr/local/share/giac/doc/el/ ../../../mkinstalldirs /usr/local/share/giac/doc/el/casinter mkdir /usr/local/share/giac/doc/el/casinter cp -f * /usr/local/share/giac/doc/el/casinter make[5]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/el/casinter' make[4]: Nothing to be done for 'install-data-am'. make[4]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/el/casinter' make[3]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/el/casinter' make[3]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/el' make[4]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/el' make[4]: Nothing to be done for 'install-exec-am'. /bin/sh /home/me/TMP/GIAC/giac-1.9.0/config/install-sh -d /usr/local/share/giac/doc/el for dd in cascmd_el; do \ /bin/sh /home/me/TMP/GIAC/giac-1.9.0/config/install-sh -d /usr/local/share/giac/doc/el/$dd ; \ done for dd in cascmd_el; do \ /usr/bin/install -c -m 644 ./$dd/* /usr/local/share/giac/doc/el/$dd ; \ done /usr/bin/install -c -m 644 html_mall html_mtt html_vall xcasmenu xcasex keywords /usr/local/share/giac/doc/el /usr/bin/mkdir -p '/usr/local/share/doc/giac/el' /usr/bin/install -c -m 644 html_mall html_mtt html_vall xcasmenu xcasex keywords '/usr/local/share/doc/giac/el' /usr/bin/mkdir -p '/usr/local/share/info' install-info --info-dir='/usr/local/share/info' '/usr/local/share/info/giac_es.info' make[4]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/el' make[3]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/el' make[2]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/el' Making install in local make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/local' make[3]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/local' make[3]: Nothing to be done for 'install-exec-am'. /usr/bin/mkdir -p '/usr/local/share/doc/giac/local' /usr/bin/install -c -m 644 xcasmenu xcasex keywords html_mall html_mtt html_vall '/usr/local/share/doc/giac/local' make[3]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/local' make[2]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/local' Making install in pt make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/pt' make[3]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/pt' make install-exec-hook make[4]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/pt' ../../mkinstalldirs /usr/local/share/giac/doc/pt mkdir /usr/local/share/giac/doc/pt /bin/cp -f xcasmenu xcasex keywords /usr/local/share/giac/doc/pt make[4]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/pt' make[3]: Nothing to be done for 'install-data-am'. make[3]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/pt' make[2]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/pt' Making install in zh make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/zh' make[3]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/zh' make install-exec-hook make[4]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/zh' ../../mkinstalldirs /usr/local/share/giac/doc/zh mkdir /usr/local/share/giac/doc/zh /bin/cp -f aide_cas xcasmenu xcasex keywords /usr/local/share/giac/doc/zh make[4]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/zh' make[3]: Nothing to be done for 'install-data-am'. make[3]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/zh' make[2]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/zh' Making install in de make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/de' make[3]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/de' make install-exec-hook make[4]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc/de' ../../mkinstalldirs /usr/local/share/giac/doc/de mkdir /usr/local/share/giac/doc/de /bin/cp -f aide_cas xcasmenu xcasex keywords /usr/local/share/giac/doc/de make[4]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/de' make[3]: Nothing to be done for 'install-data-am'. make[3]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/de' make[2]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc/de' make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc' make[3]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc' make install-exec-hook make[4]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/doc' /bin/sh /home/me/TMP/GIAC/giac-1.9.0/config/install-sh -d /usr/local/share/giac/doc/dxcas /bin/sh /home/me/TMP/GIAC/giac-1.9.0/config/install-sh -d /usr/local/share/giac/doc/pari for dd in xcasfr.html xcasen.html *.css *.js giacwasm.wasm logo.png giac.tex giacfr.tex test.tex testfr.tex test.html testfr.html algolycee.html graphtheory-user_manual.pdf *.sty simple.html *tableau* magnets html2canvas.js logo.png w3.css jspdf.umd.min.js khicasnw.html epsilon.dfu apps.tar recovery nws*.html nws.js numworks.js shakeys khi*.bin bootloader.bin; do \ /usr/bin/install -c -m 644 ../doc/$dd /usr/local/share/giac/doc/ ; \ done /usr/bin/install: omitting directory '../doc/magnets' /usr/bin/install -c -m 644 ../doc/dxcas/* /usr/local/share/giac/doc/dxcas /usr/bin/install -c -m 644 ../doc/pari/* /usr/local/share/giac/doc/pari /usr/bin/install -c -m 644 ../doc/index.html /usr/local/share/giac/doc/ /usr/bin/install -c -m 644 ../doc/README /usr/local/share/giac/doc/ ln -sf ../aide_cas /usr/local/share/giac/doc/aide_cas cp -f 50-numworks-calculator.rules /usr/local/share/giac/doc/ make[4]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc' /usr/bin/mkdir -p '/usr/local/share/doc/giac' /usr/bin/install -c -m 644 README index.html '/usr/local/share/doc/giac' /usr/bin/mkdir -p '/usr/local/share/giac' /usr/bin/install -c -m 644 aide_cas '/usr/local/share/giac' make[3]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc' make[2]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc' make[1]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/doc' Making install in examples make[1]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/examples' make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/examples' make install-exec-hook make[3]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0/examples' ../mkinstalldirs /usr/local/share/giac/ ../mkinstalldirs /usr/local/share/giac/examples mkdir /usr/local/share/giac/examples cp -Rf * /usr/local/share/giac/examples make[3]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/examples' /usr/bin/mkdir -p '/usr/local/share/doc/giac' /usr/bin/mkdir -p '/usr/local/share/doc/giac/geo' /usr/bin/install -c -m 644 geo/geo1 geo/geo2 geo/geo3 geo/geo4 geo/geo5 geo/geo6 geo/geo7 geo/geo8 geo/geo9 geo/napoleon geo/pointmorph geo/minimum.cxx geo/morleypuzzel geo/enveloppe3 geo/geo10 geo/geo11 geo/geo12 geo/geo13 geo/lieu1 geo/lieu2 geo/lieu3 geo/lieu4 geo/lieu5 geo/morleypara geo/morleytri6 geo/puissance.cas geo/pantalon geo/napoleon.cxx geo/demomorley2 geo/bezier geo/puissance2.cas geo/mediatrice.cxx geo/morley18 geo/morphing geo/pantalon2 geo/Ngone.cas geo/morley1.fig geo/morley2.fig geo/morley108 geo/mediane.cxx '/usr/local/share/doc/giac/geo' /usr/bin/mkdir -p '/usr/local/share/doc/giac/groebner' /usr/bin/install -c -m 644 groebner/alea6 groebner/bayes148 groebner/cyclic3 groebner/cyclic4 groebner/cyclic5 groebner/cyclic6 groebner/cyclic7 groebner/cyclic72 groebner/cyclic7mod groebner/cyclic8 groebner/cyclic82 groebner/cyclic8mod groebner/cyclic9 groebner/cyclic92 groebner/cyclic9mod groebner/eco10r groebner/eco11r groebner/eco12 groebner/eco122 groebner/eco12r groebner/game2 groebner/Heco12 groebner/henrion5r groebner/henrion6r groebner/Hkat10 groebner/Hkat9 groebner/jason210 groebner/k10r groebner/k11r groebner/k9r groebner/kat10 groebner/katsura10 groebner/katsura11 groebner/katsura11mod groebner/katsura12 groebner/katsura12mod groebner/katsura7rur groebner/katsura8 groebner/katsura9 groebner/katsura9rur '/usr/local/share/doc/giac/groebner' /usr/bin/mkdir -p '/usr/local/share/doc/giac/Exemples/crypto' /usr/bin/install -c -m 644 Exemples/crypto/rsa.xws Exemples/crypto/codage.xws Exemples/crypto/reed_s.xws Exemples/crypto/cesar.xws Exemples/crypto/codelin.xws '/usr/local/share/doc/giac/Exemples/crypto' /usr/bin/mkdir -p '/usr/local/share/doc/giac/Exemples/climat' /usr/bin/install -c -m 644 Exemples/climat/soleil.xws Exemples/climat/edc.xws Exemples/climat/vostok.xws Exemples/climat/global_temp.xws Exemples/climat/banquise.xws Exemples/climat/terre.jpg Exemples/climat/terre.xws Exemples/climat/energie.xws Exemples/climat/glace.xws Exemples/climat/neige.xws Exemples/climat/co2t150.xws Exemples/climat/insol.xws Exemples/climat/co2.xws Exemples/climat/geneve_juillet.xws Exemples/climat/geneve_novembre.xws '/usr/local/share/doc/giac/Exemples/climat' /usr/bin/mkdir -p '/usr/local/share/doc/giac/arit' /usr/bin/install -c -m 644 arit/numeration arit/rsa.cxx arit/horner arit/estpremier arit/codage.cas arit/nbrediviseur arit/puissancerapide arit/inpg.cas '/usr/local/share/doc/giac/arit' /usr/bin/mkdir -p '/usr/local/share/doc/giac/Exemples/geometrie' /usr/bin/install -c -m 644 Exemples/geometrie/caustique.xws Exemples/geometrie/astroide.xws Exemples/geometrie/rouepoly.xws Exemples/geometrie/hexagone.xws Exemples/geometrie/capes.xws Exemples/geometrie/morley_puzzle.xws Exemples/geometrie/morley_demo.xws Exemples/geometrie/napoleon.xws Exemples/geometrie/simson.xws Exemples/geometrie/atelier.xws Exemples/geometrie/lieu_s05.xws Exemples/geometrie/animpav.xws Exemples/geometrie/intercourbe.xws '/usr/local/share/doc/giac/Exemples/geometrie' /usr/bin/mkdir -p '/usr/local/share/doc/giac/Exemples/arit' /usr/bin/install -c -m 644 Exemples/arit/estprem.xws Exemples/arit/bezout.xws Exemples/arit/powmod.xws Exemples/arit/diviseur.xws Exemples/arit/potence.xws Exemples/arit/crible.xws Exemples/arit/premier.xws Exemples/arit/multpoly.xws Exemples/arit/multfft.xws Exemples/arit/makegf.xws Exemples/arit/prime.xws Exemples/arit/pollard.xws '/usr/local/share/doc/giac/Exemples/arit' /usr/bin/mkdir -p '/usr/local/share/doc/giac/polyfact' /usr/bin/install -c -m 644 polyfact/zimmer1 polyfact/zimmer2 polyfact/zimmer3 polyfact/zimmer4 polyfact/zimmer5 polyfact/zimmer6 polyfact/zimmer7 '/usr/local/share/doc/giac/polyfact' /usr/bin/mkdir -p '/usr/local/share/doc/giac/Exemples/opengl' /usr/bin/install -c -m 644 Exemples/opengl/surface.xws Exemples/opengl/sphere.xws '/usr/local/share/doc/giac/Exemples/opengl' /usr/bin/mkdir -p '/usr/local/share/doc/giac/lewisw' /usr/bin/install -c -m 644 lewisw/lw4 lewisw/lwA lewisw/lwB lewisw/lwC lewisw/lwD lewisw/lwE lewisw/lwF lewisw/lwG lewisw/lwM lewisw/lwN lewisw/lwO lewisw/lwX lewisw/lwHL lewisw/lwM2 lewisw/lwN1 lewisw/lwPQ lewisw/fermat_gcd_mod_1var lewisw/fermat_gcd_mod_4var lewisw/fermat_gcd_1var lewisw/fermat_gcd_4var '/usr/local/share/doc/giac/lewisw' /usr/bin/mkdir -p '/usr/local/share/doc/giac/Exemples/analyse' /usr/bin/install -c -m 644 Exemples/analyse/newton.xws Exemples/analyse/toile.xws Exemples/analyse/series_alt.xws Exemples/analyse/ode.xws Exemples/analyse/euler_ode.xws Exemples/analyse/pui.xws Exemples/analyse/gradconj.xws Exemples/analyse/grad_const.xws Exemples/analyse/mult_lagr.xws Exemples/analyse/lagrange_err.xws Exemples/analyse/signal.xws '/usr/local/share/doc/giac/Exemples/analyse' /usr/bin/mkdir -p '/usr/local/share/doc/giac/groebner' /usr/bin/install -c -m 644 groebner/mayr42 groebner/noon7r groebner/noon9 groebner/Reco12 groebner/session.tex groebner/yang1 '/usr/local/share/doc/giac/groebner' /usr/bin/mkdir -p '/usr/local/share/doc/giac/Exemples/prog' /usr/bin/install -c -m 644 Exemples/prog/gauss_jordan.xws Exemples/prog/conformal.xws Exemples/prog/arbre.xws Exemples/prog/exemple.xws '/usr/local/share/doc/giac/Exemples/prog' /usr/bin/mkdir -p '/usr/local/share/doc/giac/Exemples/poly' /usr/bin/install -c -m 644 Exemples/poly/pgcd.xws Exemples/poly/racine.xws Exemples/poly/horner.xws Exemples/poly/reed_sol.xws Exemples/poly/yun.xws Exemples/poly/berle.xws Exemples/poly/cardan.xws Exemples/poly/hensel.xws Exemples/poly/afactor.xws Exemples/poly/aspolyof.xws '/usr/local/share/doc/giac/Exemples/poly' /usr/bin/mkdir -p '/usr/local/share/doc/giac/Exemples/demo' /usr/bin/install -c -m 644 Exemples/demo/calcform.xws Exemples/demo/dft.xws Exemples/demo/graphe_proba.xws Exemples/demo/image.xws Exemples/demo/terre.jpg Exemples/demo/essai.png Exemples/demo/napoleon.xws Exemples/demo/polylogo.xws Exemples/demo/apmep.xws Exemples/demo/arit.xws Exemples/demo/milieu.xws Exemples/demo/milieux.xws Exemples/demo/oct06.xws Exemples/demo/anniversaire.xws Exemples/demo/dijkstra.xws Exemples/demo/Mandelbrot.xws Exemples/demo/giac_Mandelbrot.cpp '/usr/local/share/doc/giac/Exemples/demo' /usr/bin/mkdir -p '/usr/local/share/doc/giac/Exemples/capes2006' /usr/bin/install -c -m 644 Exemples/capes2006/2107.xws Exemples/capes2006/0307.xws Exemples/capes2006/2906.xws Exemples/capes2006/1707.xws Exemples/capes2006/3006.xws Exemples/capes2006/0707.xws Exemples/capes2006/0107.xws Exemples/capes2006/0807.xws Exemples/capes2006/1407.xws Exemples/capes2006/2007.xws Exemples/capes2006/0207.xws '/usr/local/share/doc/giac/Exemples/capes2006' /usr/bin/install -c -m 644 Makefile.am '/usr/local/share/doc/giac/.' /usr/bin/mkdir -p '/usr/local/share/doc/giac/codage' /usr/bin/install -c -m 644 codage/rsa codage/group2lettres codage/julescesar codage/chiffrementaffine '/usr/local/share/doc/giac/codage' /usr/bin/mkdir -p '/usr/local/share/doc/giac/Exemples/geo3d' /usr/bin/install -c -m 644 Exemples/geo3d/cone.xws Exemples/geo3d/circon3d.xws Exemples/geo3d/animcube.xws '/usr/local/share/doc/giac/Exemples/geo3d' /usr/bin/mkdir -p '/usr/local/share/doc/giac/Exemples/logo' /usr/bin/install -c -m 644 Exemples/logo/fleur.xws Exemples/logo/sapin.xws Exemples/logo/tulipe.xws Exemples/logo/neige.xws Exemples/logo/poule.xws Exemples/logo/jeu.xws '/usr/local/share/doc/giac/Exemples/logo' /usr/bin/mkdir -p '/usr/local/share/doc/giac/demo' /usr/bin/install -c -m 644 demo/pgcd.cpp demo/random.tab demo/algos_integrale.cxx demo/bezout.cxx demo/napoleon.cxx demo/e05.tex demo/mediane.cxx demo/bissectrice.cxx demo/pgcd.cc demo/simpson.cas demo/inpg.cas demo/orthocentre.cxx '/usr/local/share/doc/giac/demo' /usr/bin/mkdir -p '/usr/local/share/doc/giac/tortue' /usr/bin/install -c -m 644 tortue/koch.cxx tortue/arbre.cxx tortue/sapin.cxx tortue/hilbert.cxx tortue/gosper.cxx tortue/dragon.cxx tortue/peano.cxx '/usr/local/share/doc/giac/tortue' /usr/bin/mkdir -p '/usr/local/share/doc/giac/morley' /usr/bin/install -c -m 644 morley/equimore morley/morleypara morley/trisectfig morley/figure1 morley/figure2 morley/demomorley1 morley/fiqure1 morley/calcul18 morley/morley18 morley/morley108 morley/morleynum morley/morley morley/puzzel morley/dessinlem morley/demonfig2 '/usr/local/share/doc/giac/morley' /usr/bin/mkdir -p '/usr/local/share/doc/giac/Exemples/proba' /usr/bin/install -c -m 644 Exemples/proba/moivre_laplace.xws Exemples/proba/montecarlo.xws Exemples/proba/moivre2.xws Exemples/proba/fluctuations.xws Exemples/proba/fluctuation2.xws Exemples/proba/confiance.xws Exemples/proba/gaussienne.xws Exemples/proba/vectgauss.xws Exemples/proba/ehrenfest.xws Exemples/proba/kolmogorov.xws Exemples/proba/poisson.xws Exemples/proba/galton.xws Exemples/proba/rejet.xws Exemples/proba/attente.xws '/usr/local/share/doc/giac/Exemples/proba' /usr/bin/mkdir -p '/usr/local/share/doc/giac/recur' /usr/bin/install -c -m 644 recur/sphinx.cxx recur/plantes.cxx recur/sphynx.cxx recur/trisierpinski.cas recur/polygone.cxx recur/triangle.cxx recur/carre.cxx recur/flocon.cxx recur/session.cxx recur/peanoarc.cas recur/autres.cxx recur/permutation.cxx recur/dragon.cxx recur/peano.cxx '/usr/local/share/doc/giac/recur' /usr/bin/mkdir -p '/usr/local/share/doc/giac/linalg' /usr/bin/install -c -m 644 linalg/gaussjordan_noyau.cas linalg/gaussjordan_noyau1.cas '/usr/local/share/doc/giac/linalg' /usr/bin/mkdir -p '/usr/local/share/doc/giac/simulation' /usr/bin/install -c -m 644 simulation/pains simulation/deplacement '/usr/local/share/doc/giac/simulation' /usr/bin/mkdir -p '/usr/local/share/doc/giac/Exemples/spects' /usr/bin/install -c -m 644 Exemples/spects/pagerank.xws Exemples/spects/spec_proie.xws Exemples/spects/tpi.xws '/usr/local/share/doc/giac/Exemples/spects' /usr/bin/mkdir -p '/usr/local/share/doc/giac/geo' /usr/bin/install -c -m 644 geo/morleylem geo/orbite.cas geo/envelopl geo/envelopp geo/envelopt geo/carres.cxx geo/terre.cas geo/demomorley.cxx geo/bissectrice.cxx geo/simpson.cxx geo/conj_harmonic1.cas geo/conj_harmonic2.cas geo/conj_harmonic3.cas geo/envelop3t geo/enveloppe geo/morleydess18 geo/equimorley geo/orthocentre.cxx geo/feuerbach.cxx '/usr/local/share/doc/giac/geo' make[2]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/examples' make[1]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0/examples' make[1]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0' make[2]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0' make install-exec-hook make[3]: Entering directory '/home/me/TMP/GIAC/giac-1.9.0' cp config.h /usr/local/include/giac ./mkinstalldirs /usr/local/share/ ./mkinstalldirs /usr/local/share/pixmaps cp xcas.xpm /usr/local/share/pixmaps/xcas.xpm ./mkinstalldirs /usr/local/share/applications cp xcas.desktop /usr/local/share/applications/xcas.desktop ./mkinstalldirs /usr/local/share/metainfo cp xcas.metainfo.xml /usr/local/share/metainfo/ ./mkinstalldirs /usr/local/share/application-registry mkdir /usr/local/share/application-registry cp xcas.applications /usr/local/share/application-registry/xcas.applications ./mkinstalldirs /usr/local/share/icons/ mkdir /usr/local/share/icons ./mkinstalldirs /usr/local/share/icons/hicolor mkdir /usr/local/share/icons/hicolor for SIZE in 256 128 64 32 16; do ./mkinstalldirs /usr/local/share/icons/hicolor/${SIZE}x${SIZE} && ./mkinstalldirs /usr/local/share/icons/hicolor/${SIZE}x${SIZE}/apps && cp icons/xcas_${SIZE}.png /usr/local/share/icons/hicolor/${SIZE}x${SIZE}/apps/xcas.png; done mkdir /usr/local/share/icons/hicolor/256x256 mkdir /usr/local/share/icons/hicolor/256x256/apps mkdir /usr/local/share/icons/hicolor/128x128 mkdir /usr/local/share/icons/hicolor/128x128/apps mkdir /usr/local/share/icons/hicolor/64x64 mkdir /usr/local/share/icons/hicolor/64x64/apps mkdir /usr/local/share/icons/hicolor/32x32 mkdir /usr/local/share/icons/hicolor/32x32/apps mkdir /usr/local/share/icons/hicolor/16x16 mkdir /usr/local/share/icons/hicolor/16x16/apps for SIZE in 256 128 64 32 16; do ./mkinstalldirs /usr/local/share/icons/hicolor/${SIZE}x${SIZE}/mimetypes && cp icons/x-xcas_${SIZE}.png /usr/local/share/icons/hicolor/${SIZE}x${SIZE}/mimetypes/application-x-xcas.png; done mkdir /usr/local/share/icons/hicolor/256x256/mimetypes mkdir /usr/local/share/icons/hicolor/128x128/mimetypes mkdir /usr/local/share/icons/hicolor/64x64/mimetypes mkdir /usr/local/share/icons/hicolor/32x32/mimetypes mkdir /usr/local/share/icons/hicolor/16x16/mimetypes make[3]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0' make[2]: Nothing to be done for 'install-data-am'. make[2]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0' make[1]: Leaving directory '/home/me/TMP/GIAC/giac-1.9.0' >
final step
sudo ldconfig
changes to .bashrc. To use sagemath with the current installed giac, I had to edit my .bashrc file and add this line
export GIAC=/usr/local/bin/giac
This tells sagemath where giac is installed, else it will not find it. This ia because I wanted to use this version of giac from sagemath and not have sagemath build giac itself as that will be an older version.
>which giac /usr/local/bin/giac >giac --version // Using locale /usr/share/locale/ // en_US.utf8 // /usr/share/locale/ // giac // UTF-8 // Maximum number of parallel threads 8 // (c) 2001, 2021 B. Parisse & others 1.9.0 >
Note the above version just says 1.9 and not 1.9-35. This is unfortunate as it is not possible to obtain the full version number. see this post about complaining about this.
Type giac
>giac // Using locale /usr/local/share/locale/ // en_US.utf8 // /usr/local/share/locale/ // giac // UTF-8 // Maximum number of parallel threads 8 Added 26 synonyms // Read 1205 entries from cache /usr/share/giac/doc/en/html_mtt // Read 1481 entries from cache /usr/share/giac/doc/en/html_mall // Read 1043 entries from cache /usr/share/giac/doc/en/html_vall Welcome to giac readline interface, version 1.9.0 (c) 2002,2022 B. Parisse & others Homepage http://www-fourier.ujf-grenoble.fr/~parisse/giac.html Released under the GPL license 3.0 or above See http://www.gnu.org for license details May contain BSD licensed software parts (lapack, atlas, tinymt) ------------------------------------------------- Press CTRL and D simultaneously to finish session Type ?commandname for help *** Type xcas to launch a light version of Xcas *** 0>> int(sin(x),x) -cos(x) // Time 0 1>>
Now we are going to write a number of C++ programs, which calls Giac directly to do different math operations. All these programs are compiled using this makefile
all:: main main: main.cc Makefile -rm -f *.o g++ -g main.cc -lgiac -lgmp -Wall -Wextra -Winit-self -Wold-style-cast\ -Wuninitialized -Wmissing-declarations -pedantic\ -fno-elide-constructors -pedantic-errors -Woverloaded-virtual\ -Wstrict-aliasing -std=c++17 -o main .PHONY: clean clean :: -rm -f main.o
This program calls giac to do \(\int {\sin (x),x}\). Create this C++ file
#include <iostream> #include <fstream> #include <sstream> #include <string> #include <giac/config.h> #include <giac/giac.h> using namespace std; int main() { giac::context ct; std::string command="sin(x),x"; giac::gen e(command,&ct); e = giac::eval(e,1,&ct); try { cout<<"inside try BEFORE calling "<< command <<endl; giac::gen anti = _integrate(e,&ct); cout<<"result of integrate: "<< anti <<endl; } catch (const std::exception &exc) { std::cout<<">>>>>>>>>>>>>> EXCEPTION HAPPENED "<< exc.what()<<std::endl; } return 0; }
Now compile and run the above file
>make -I$HOME all >./main inside try BEFORE calling sin(x),x result of integrate: -cos(x)
An alternative to the above, is to put the giac command directly in the string and this way no need to call _integrate as separate call. Like this
#include <iostream> #include <fstream> #include <sstream> #include <string> #include <giac/config.h> #include <giac/giac.h> using namespace std; int main() { giac::context ct; std::string command="integrate(sin(x),x)"; giac::gen e(command,&ct); e = giac::eval(e,1,&ct); cout<<"inside try BEFORE calling "<< command <<endl; cout<<"result of integrate: "<< e <<endl; return 0; }
Compile and run, it will give the same exact result. In the above giac::eval did all the work. The above might be simpler way to do things.
This program calls giac to solve \(x^4-1=3\) for \(x\). Create this main.cc C++ file
#include <iostream> #include <fstream> #include <sstream> #include <string> #include <giac/config.h> #include <giac/giac.h> using namespace std; int main() { giac::context ct; giac::eval( giac::gen("eq:=x^4-1=3",&ct) , 1, &ct); giac::gen e = giac::eval( giac::gen("solve(eq,x)",&ct) , 1, &ct); cout<<"The solution is " << e <<endl; return 0; }
Compile and run
>make -I$HOME all >./main The solution is list[-4^(1/4),4^(1/4)]
In the above program , the equation eq was saved inside giac memory and remains there so when solve is called next, it can refer to it by name. Just like when using Giac interactively.
To obtain all 4 roots, need to use cSolve like this
#include <iostream> #include <fstream> #include <sstream> #include <string> #include <giac/config.h> #include <giac/giac.h> using namespace std; int main() { giac::context ct; giac::eval( giac::gen("eq:=x^4-1=3",&ct) , 1, &ct); giac::gen e = giac::eval( giac::gen("cSolve(eq,x)",&ct) , 1, &ct); cout<<"The solution is " << e <<endl; return 0; }
Compile and run
>make -I$HOME all >./main The solution is list[-sqrt(2),sqrt(2),-sqrt(2)*i,-sqrt(2)*(-i)]
This program calls giac to solve \(y''+2 y'+y=0\) with ic \(y(0)=1,y'(0)=0\). Create this main.cc C++ file
#include <iostream> #include <fstream> #include <sstream> #include <string> #include <giac/config.h> #include <giac/giac.h> using namespace std; int main() { giac::context ct; giac::gen e("desolve([diff(y(t),t$2)+2*diff(y(t),t)+y(t)=0,y(0)=1,y'(0)=0],y(t))",&ct); e = giac::eval( e , 1, &ct); cout<<"The solution to y''+2 y'+y=0 with ic y(0)=1,y'(0)=0 is " << e <<endl; return 0; }
Compile and run
>make -I$HOME all >./main The solution to y''+2 y'+y=0 with ic y(0)=1,y'(0)=0 is exp(-t)*(t+1)