fredrikj.net / blog /

Arb is 10

April 5, 2022

Arb is 10 years old today — happy birthday Arb!

The README in the first commit, dated April 5, 2012, describes Arb as "an experimental C library implementing arbitrary-precision ball arithmetic on top of FLINT" ... "Planned future additions include more functions, complex numbers, polynomial balls, and matrix balls." This first commit includes asymptotically fast algorithms for computing $\pi$, Euler's constants $\gamma$ and zeta constants $\zeta(n)$ and was accompanied by a blog post titled "high-precision ball arithmetic" discussing the implementation results.

A decade and 2550 commits later, Arb contains almost exactly 200,000 lines of code (199498 lines of C source according to sloccount) and over 2000 functions. Perhaps 85% of Arb is my own work, the rest coming from a dozen or so occasional (but excellent) contributors.

Here is an attempt to summarize the highlights from the last 10 years:

Please let me know if some particularly important application is missing from this list! People send me nice emails from time to time saying "I used Arb to do X and Y and it works really well", but I never bothered to make a list. I have omitted many minor features from the highlight list; see the "history and changes" section in the documentation and previous posts on this blog for details.

What are my thoughts today? 10 years pass extremely fast. The latter 5 years especially. When I started Arb, I had no idea what I was doing. I still have no idea what I'm doing; the only difference is that I have gray hairs now.

What about Arb has been successful, or not successful? I could discuss various technical aspects, but on a higher level, one of my goals from the start has been to show that ball arithmetic is a better paradigm than ordinary floating-point arithmetic (as well as classical interval arithmetic) for many of the calculations with real and complex numbers needed in computer algebra systems, number theory software and the like. This idea has now percolated to the point where it is pretty well established in the research community, in no small part thanks to Arb. (This vision for ball arithmetic is really due to Joris van der Hoeven, though I arrived there more or less independently.)

There are still many applications where Arb could be used to significant benefit, but for various reasons isn't. One reason is that Arb is a relatively large dependency (especially when you include FLINT), and it is therefore not something every other mathematical software project might want to add as a dependency (unlike GMP or BLAS, say). I should probably put more effort into accessibility. Not just making Arb more accessible as software, but also getting the good algorithms and design ideas out there for other software to implement as well.

A slight disappointment is that I have failed to attract any students or postdocs to work on Arb so far, probably in part because I have not been proactive enough, probably in part because the subject area is inherently very niche and not applied (prospective PhD students around here are much more interested in things like cryptography and quantum computers). This is in part a funding issue; I don't have grants to hire people, so even if the perfect candidate appeared today, I would not be able to promise anything since any recruiting would be on the national Inria budget (again in competition with things like cryptography and quantum computers).

Anyway, Arb development continues, and we will see where things are in another 10 years...



fredrikj.net  |  Blog index  |  RSS feed  |  Follow me on Mastodon  |  Become a sponsor