Skip to content
Dave Hudson edited this page Jan 19, 2017 · 8 revisions

Why A New Library?

First, to clarify: There are definitely faster, and more capable arbitrary precision maths libraries around :-)

I built this for lots of different reasons:

  • I often build mathematical simulations for problems I want to investigate, and as a programmer I tend to write programs to do this rather than use other modelling frameworks. Some of the simulations are things I share as open source projects, and so I wanted something that was stand-alone and non-proprietary, but some of them aren't open and I didn't want the restrictions that a GPL or LGPL license might imply. I also didn't want to have to include a huge framework to build simple programs :-)

  • I care a great deal about software performance (and for quite a number of years was a gcc backend developer for 2 embedded ISAs), so I wanted to understand the performance characteristics of arbitrary precision maths. Writing this from scratch has let me do this.

  • I wanted to have the opportunity to write about building a reasonably complex library, and about how I think about performance optimization. In the past I've done both, but was never in a position to publish the details outside of the companies I was working for.

  • Having had (too many) years of writing C code, C++ 14 persuaded me to switch back to C++ for application code, so I wanted a library that took full advantage of C++ capabilities.

Why A BSD License?

In the past I've written a lot of code under many different open source and closed source licenses. In this instance I wanted to make it possible to use what I've written in both open and closed software, and without significant burdens on either. I thought about making this public domain, but I do believe that authors of any work should be credited, so a 3-clause BSD license seemed a good fit.

Clone this wiki locally