Skip to content
daniel brake edited this page Jun 13, 2015 · 1 revision

Bertini2 is being written in C++ and Python, making use of a variety of libraries. These are described below, along with other tools useful or necessary for development.

C++

c++11 being the minimal standard, and desiring to make use of at least one c++14 feature (make_unique)

the following programming idioms should be used, where possible:

additionally, all functions, members, and methods should be well-documented using Doxygen

Here at stackoverflow.com is a great post about operators.

A post about optimization is here at eventhelix.com

python

isympy -- This library solves the problem of an interactive interface with a symbolic engine.

csympi -- A C++ library for using Sympy. Potentially a good library to use.

GMP/MPFR

'The' solution to long numbers. We will specifically use the Boost.Multiprecision library

Boost

Can enough positive things be said about this suite of libraries? boost.org specific libraries we intend on using:

  1. Multiprecision
  2. Filesystem
  3. Unit_test tutorial docs (a little dated,but usable)
  4. Python

Eigen

A templated linear algebra library, Eigen is capable of performing linear algebra with user-defined number types. Their documentation has some nice tutorials and a quick-start guide. The library is really easy to use!

another tutorial

On using OpenMP

On extending the Eigen types

GitHub

The gracious host for this free project.

Two nice tutorials:

Github

Branching

SourceTree (optional)

SourceTree is a program from Atlassian, one of many excellent GUI options for project flow.