Skip to content
jacobbond edited this page Sep 9, 2016 · 20 revisions

Introduction

Bertini is software for numerical algebraic geometry, i.e., software for computing and using numerical approximations of solutions of polynomial systems. Bertini 2 is the redevelopment of classic Bertini (1).

#Purpose for redevelopment

Bertini developed started around 2002, with the initial beta release in 2006. As with virtually all code, Bertini outgrew its original scope and development plan. Maintenance and extension have become increasingly difficult.

The NSF has kindly chosen to support this redevelopment through awards to University of Notre Dame and Colorado State University. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation.

Get involved

A few central developers are currently working on core development, along with code reviewers and testers. If you are interested in contributing to this project, please contact a member of the core development team - Dan Bates, Daniel Brake, Jon Hauenstein, Andrew Sommese, Charles Wampler, or Jacob Bond.

Status

June 2016

Working Python bindings for fixed, multiple, and adaptive endgames and trackers, for arbitrary systems, have been implemented. Documentation is actively being improved, as is performance. We need help testing the code!

Next steps are to provide an executable with the library when compiling. To this end, our team will write a config parser, set of output generators (I think this will be fun! Spirit.Karma will be the generator library), and the main algorithms for Numerical Algebraic geometry. The algorithms include a basic zero-dim solver, slicing and regeneration for the irreducible decomposition methods, and a user-specified homotopy.

January 2016

An adaptive multiple precision tracker has been implemented. We can now track near singularities, and precision will adjust automatically. A pull request has been issued to make this official code. Furthermore, we have preliminary Python bindings, and the Power Series Endgame implemented. Pull requests for these will follow shortly.

September 2015

A significant portion of the computational core has been implemented. We can represent arbitrary polynomial, analytic, and non-analytic functions and systems in memory, and differentiate them. We can also construct the TotalDegree start system for any polynomial system which has a single affine or homogeneous variable group.

We are close to resolving a large pull request which will bring this code into the base, and another large request will follow, bringing tracking basics such as the Euler ODE predictor, Newton's method, and basic stepping and tracking routines. Full-blown path tracking is not very far away. Once we get these basic routines well tested, we will add other ODE predictors, endgame methods, and post-processing features.

Longer term, we need to implement multi-homogeneous start systems, regeneration, and the Numerical Irreducible Decomposition. The project is coming along nicely, and we are proud of the software as it stands today, and even happier about the future of Numerical Algebraic Geometry.

November 2014

We are currently working on laying down infrastructure for b2 development: development of resources (developer guidelines, choice of tools, etc.), high-level planning (via plantUML, etc.), and extreme low-level planning (representation of numbers, representation of polynomials, vector & matrix classes etc.). The plan is to build the most central classes and create a large skeleton, then invite developers to add flesh.