fredrikj.net / blog /

# Arb 2.1 released

*June 20, 2014*

Version 2.1.0 of Arb is now available. In this release, almost all code has finally been ported from the Arb 1.x types to the Arb 2.x types. In particular, the following has been ported:

- Elementary functions (log, atan, etc.)
- Hypergeometric series summation
- The gamma function
- The Riemann zeta function and related functions
- Bernoulli numbers
- The partition function
- The calculus modules (rigorous real root isolation, rigorous numerical integration of complex-valued functions)
- Example programs

The ported versions are often 20-50% faster, simply due to the faster arithmetic provided by the Arb 2.x types (no algorithms have been changed in any significant way). Examples:

- Computing $\Gamma(x)$ where $x \approx \pi$ to 100-digit precision: down from 0.00010 s to 0.000071 s (
**1.41x speedup**) - Computing $\Gamma(f)$ where $f$ is the Taylor series of $\sin(2+x)$ to order 100, at 100-digit precision: down from 0.0188 s to 0.0148 s (
**1.27x speedup**) - As above, to order 10, at 10-digit precision: down from 0.00023 s to 0.00012 s (
**1.92x speedup**) - Computing the first 1000 Keiper-Li constants: down from 0.46 s to 0.35 s (
**1.31x speedup**) - Isolating the nontrivial roots of $\zeta(s)$ with height less than 300: down from 32.2 s to 23.8 s (
**1.35x speedup**) - Computing the partition function of $n = 10^{10}$: down from 0.75 s to 0.58 s (
**1.29x speedup**)

With the exception of the partition function, the old implementations are still available, to simplify porting and to allow verifying that the new code behaves like the old code. The old implementations will be removed in a future release, since all the extra code currently doubles build and test times and potentially makes finding the right version confusing.

The only significant function still implemented as a wrapper for the old version is the real exponential function (`arb_exp`). The old version depends on a lot of fairly ugly code that I'd rather try to rewrite more cleanly than port it as-is. I hope I can also make it a little faster. Now that arithmetic operations have much less overhead, it will be worthwhile to work harder to speed up transcendental functions. I still have a backlog of documentation and test code to work on first, however...