GiNaC requires the CLN library by Bruno Haible installed on your system.
It is available from <ftp://ftpthep.physik.uni-mainz.de/pub/gnu/>.
-You will also need a decent ANSI-compliant C++-compiler. We recommend the
-C++ compiler from the GNU compiler collection, GCC >= 3.4. If you have a
+You will also need a decent ISO C++-11 compiler. We recommend the C++
+compiler from the GNU compiler collection, GCC >= 4.9. If you have a
different or older compiler you are on your own. Note that you may have to
use the same compiler you compiled CLN with because of differing
name-mangling schemes.
Known to work with:
- Linux on x86 and x86_64 using
- - GCC 3.4, 4.0, 4.1, 4.2, 4.3.x (x >= 1), 4.4, 4.5, 4.6, and 4.9
- - Clang 2.8
- - Windows on x86 using GCC 3.4 (MinGW)
+ - GCC 4.9, 5.1, and 5.2
+ - Clang 3.5.0
Known not to work with:
- Clang 2.7 and earlier due to poor C++ support.
- - GCC 4.3.0 due to the compiler bug,
- see <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35548>.
- - GCC 2.96 or earlier because proper exception and standard library support
- is missing there.
+ - GCC < 4.6.0 due to missing C++-11 support
If you install from git, you also need GNU autoconf (>=2.59), automake (>=1.8),
libtool (>= 1.5), python (>= 2.5), bison (>= 2.3), flex (>= 2.5.33) to be installed.
PREREQUISITES
=============
-1. A decent ANSI-compliant C++ compiler. GCC (version >= 4.4) is recommended.
+1. A decent ISO C++-11 compiler. GCC (version >= 4.9) is recommended.
2. CLN library (http://www.ginac.de/CLN), version >= 1.2.2
3. CMake, version >= 2.8 (version 2.6.x might work too).
4. Python, version >= 2.6
1) Unpack the tarball
- $ tar xaf GiNaC-x.y.z.tar.bz2
+ $ tar xaf ginac-x.y.z.tar.bz2
2) Create a build directory
3) Run CMake to generate Makefile's
$ cd ginac_build
- $ cmake ../GiNaC-x.y.z
+ $ cmake ../ginac-x.y.z
4) Actually build GiNaC
In order to install GiNaC on your system, some prerequisites need to be
met. First of all, you need to have a C++-compiler adhering to the
-ANSI-standard @cite{ISO/IEC 14882:1998(E)}. We used GCC for development
+ISO standard @cite{ISO/IEC 14882:2011(E)}. We used GCC for development
so if you have a different compiler you are on your own. For the
configuration to succeed you need a Posix compliant shell installed in
@file{/bin/sh}, GNU @command{bash} is fine. The pkg-config utility is
occasionally used other compilers and may be able to give you advice.}
GiNaC uses recent language features like explicit constructors, mutable
members, RTTI, @code{dynamic_cast}s and STL, so ANSI compliance is meant
-literally. Recent GCC versions starting at 2.95.3, although itself not
-yet ANSI compliant, support all needed features.
+literally.
@end itemize
@itemize @minus{}
@item
-@cite{ISO/IEC 14882:1998: Programming Languages: C++}
+@cite{ISO/IEC 14882:2011: Programming Languages: C++}
@item
@cite{CLN: A Class Library for Numbers}, @email{haible@@ilog.fr, Bruno Haible}
static void print_sym_pow(const print_context & c, const symbol &x, int exp)
{
// Optimal output of integer powers of symbols to aid compiler CSE.
- // C.f. ISO/IEC 14882:1998, section 1.9 [intro execution], paragraph 15
+ // C.f. ISO/IEC 14882:2011, section 1.9 [intro execution], paragraph 15
// to learn why such a parenthesation is really necessary.
if (exp == 1) {
x.print(c);