ArbNumerics.jl library update

Version 1.6 of ArbNumerics.jl is released. This release uses the latest arb C library, which is now encapsulated into FLINT3 (see Real and complex numbers (Arb) : detailed table of contents — FLINT 3.3.0-dev documentation). I felt it important to update the library now, as there were some issues arising with the older unsupported C library. There are a few minor adjustments still needed, though nothing that provides misleading results. This will take some more attention. File issues if you encounter them.

To continue using the prior version:

      using Pkg
      Pkg.add(name="ArbNumerics", version="1.5.4")

There are reports of M1 OS having issues running this with Julia v1.9, v1.10. If you are using M1 with Julia v1.9 or v1.10 either update to Julia v1.11 or use the prior version of ArbNumerics.

  • Use ArbReals with bessel_ functions and any other special functions that do not work given ArbFloats.

And a reminder: to initialize ArbFloats, ArbReals, use the string form of the initializing value; otherwise you initialize with the Float64 approximation.

julia> ArbFloat(1.2)
1.199999999999999955591079014993738383054733276367188

julia> ArbFloat("1.2")
1.2
9 Likes

Looks awesome! Dependency on a C library but MIT license too. May I ask what people’s (and the author’s) experience with this has been cf. other options like IntervalArithmetic.jl?

There are no pure-Julia bignums or bigfloats. It’s either the MPFR C library or the FLINT C library (with Arb as a part of FLINT). Even in other programming languages, one usually just reaches for MPFR, I believe.

Regarding interval arithmetic, IntervalArithmetic.jl represents an interval as two endpoints, while Arb represents an interval as a radius and a midpoint (thus the term ball arithmetic).

Also, there’s another Julia package wrapping Arb: Arblib.jl.

2 Likes

@JeffreySarnoff, thanks for the update and for all your work on this! I have gotten a lot of value out of ArbNumerics.jl and appreciate how easy you have made it to hook in and use the library.