Note

Arb was merged into FLINT in 2023.

The documentation on arblib.org will no longer be updated.

See the FLINT documentation instead.


Setup

Package managers

The easiest way to install Arb including all dependencies is via ready-made packages available for various distributions. Note that some package managers may not have the latest version of Arb.

Installing SageMath or Nemo (see below) will also create an installation of Arb local to those systems. It is possible to link user code to that installation by setting the proper paths.

Download

Tarballs of released versions can be downloaded from https://github.com/fredrik-johansson/arb/releases

Alternatively, you can simply install Arb from a git checkout of https://github.com/fredrik-johansson/arb/. The master branch is recommended for keeping up with the latest improvements and bug fixes and should be safe to use at all times (only stable code that passes the test suite gets merged into the git master).

Dependencies

Arb has the following dependencies:

Standalone installation

To compile, test and install Arb from source as a standalone library, first install FLINT. Then go to the Arb source directory and run:

./configure <options>
make
make check       (optional)
make install

If GMP/MPIR, MPFR or FLINT is installed in some other location than the default path /usr/local, pass --with-gmp=..., --with-mpfr=... or --with-flint=... with the correct path to configure (type ./configure --help to show more options).

After the installation, you may have to run ldconfig to make sure that the system’s dynamic linker finds the library.

On a multicore system, make can be run with the -j flag to build in parallel. For example, use make -j4 on a quad-core machine.

Running tests

After running make, it is recommended to also run make check to verify that all unit tests pass.

By default, the unit tests run a large number of iterations to improve the chances of detecting subtle problems. The whole test suite might take around 20 minutes on a single core (make -jN check if you have more cores to spare). If you are in a hurry, you can adjust the number of test iterations via the ARB_TEST_MULTIPLIER environment variable. For example, the following will only run 10% of the default iterations:

export ARB_TEST_MULTIPLIER=0.1
make check

It is also possible to run the unit tests for a single module, for instance:

make check MOD=arb_poly

Building with MSVC

To compile arb with MSVC, compile MPIR, MPFR, pthreads-win32 and FLINT using MSVC. Install CMake >=2.8.12 and make sure it is in the path. Then go to the Arb source directory and run:

mkdir build
cd build
cmake ..                                            # configure
cmake --build . --config Release                    # build
cmake --build . --config Release --target install   # install

To build a Debug build, create a new build directory and pass -DCMAKE_BUILD_TYPE=Debug to cmake. To create a dll library, pass -DBUILD_SHARED_LIBS=yes to cmake. Note that creating a dll library requires CMake >= 3.5.0

If the dependencies are not found, pass -DCMAKE_PREFIX_PATH=/path/to/deps to cmake to find the dependencies.

To build tests add, pass -DBUILD_TESTING=yes to cmake and run ctest to run the tests.

Running code

Here is an example program to get started using Arb:

#include "arb.h"

int main()
{
    arb_t x;
    arb_init(x);
    arb_const_pi(x, 50 * 3.33);
    arb_printn(x, 50, 0); flint_printf("\n");
    flint_printf("Computed with arb-%s\n", arb_version);
    arb_clear(x);
}

Compile it with:

gcc test.c -larb

Depending on the environment, you may also have to pass the flags -lflint, -lmpfr, -lgmp to the compiler. On some Debian based systems, -larb needs to be replaced with -lflint-arb.

If the Arb/FLINT header and library files are not in a standard location (/usr/local on most systems), you may also have to provide flags such as:

-I/path/to/arb -I/path/to/flint -L/path/to/flint -L/path/to/arb

Finally, to run the program, make sure that the linker can find the FLINT (and Arb) libraries. If they are installed in a nonstandard location, you can for example add this path to the LD_LIBRARY_PATH environment variable.

The output of the example program should be something like the following:

[3.1415926535897932384626433832795028841971693993751 +/- 6.28e-50]
Computed with arb-2.4.0

Computer algebra systems and wrappers