Central configurations in spatial n-body problem for n = 5, 6 with equal masses

by M. Moczurad and P. Zgliczyński

An installation of the program realizing the numerical part of the proofs in the paper


The program is written in C++ and has been tested under Ubuntu Linux 14.04 with gcc version 4.9.2 (Debian 4.9.2-10+deb8u2) compiler and MacOS 10.14 with Apple LLVM version 10.0.1 (clang-1001.0.46.4). The benchmarks in the article were performed on the former configuration. The program uses the CAPD library ver. 5.0.6 (see also the sourceforge download zone). The CAPD library is also available as debian deb package. There are also prebuilt versions for Debian, Ubuntu and OSX.


It is possible to compile the CAPD library under MS Windows but we strongly recommend to compile and run the program on linux-like or Mac OS systems. The following commands should be executed from the terminal (or msys environment under MS Windows)

  1. unzip the archive: unzip nbodies.zip
  2. go to the directory of the program: cd nbodies
  3. build the program using the makefile provided (ensuring that the CAPDBINDIR variable defined in the makefile points to your CAPD's installation bin directory, for example: ~/capd/bin; this is the directory that contains the capd-config file). An executable file is created in the current directory.

Input and output


The program operates on the following files:

  • init-3D-n-k.txt -- reads input data
  • undecided-3D-n-k.dat -- binary file with undecided boxes
  • zeros-3D-n-k.dat -- binary file with all CCs found (before identity and symmetry elimination).
  • math-3D-n-k.txt, math-3D-n-k-list.txt -- text files with CCs (in different formats)
  • math-cycles-3D-n-k-list.txt -- text file
  • tested-undecide-n-k.dat, tested-zeros-n-k.dat -- auxiliary (trash) binary files
Numbers n and k in the file names correspond to command line parameters given (see below). Input file has to be in the data directory; the binary file is also written there. Sample files for proofs of all central configurations for n = 3, 4, 5, 6 are already in the data directory.

Format of a file with input data

1 // 1 -- equal masses, optionally 0/2 -- unequal masses (unfinished mode)
n // number of bodies
x0L x0R y0L y0R z0L z0R mass0L mass0R // q0
x1L x1R y1L y1R z1L z1R mass1L mass1R // q1
x(n-2)L x(n-2)R y(n-2)L y(n-2)R z(n-2)L z(n-2)R mass(n-2)L mass(n-2)R // q(n-2)

Coordinates (xi, yi) and mass mi of a qi body are given as intervals xi = (xiL, xiR), yi = (yiL, yiR) and mi = (massiL, massiR). The coordinates and mass of the last body are calculated. In the cases of equal masses, masses intervals are optional and are ignored by the program.

Running the program

The program can be run from the terminal, and the usage is the following:

./cc-nb <st> n k [d]

where the parameters mean the following:

  • s -- perform a search
  • t -- perform a test (note that this step requires the output generated by the "search" step, but it can be generated by a separate run of the program)
  • n -- the number of bodies
  • k -- suffix of the input data file
  • d -- (optional) maximum call chain depth up to which we launch recursive search functions concurrently. This effectively limits the number of threads the program will be using. The default value is 0, meaning a fully sequential run. In our experiments, values slightly higher than the maximal number of physical threads in the system were producing the best results. For example, on a 6-core (12 thread) Intel i7, the best results are for d between 12 and 16.

We recommend redirecting the standard output of the program to a file, as it is quite verbose and unreadable in the terminal. For example, to see the proofs of all central configurations for n = 6, the program should be run as ./cc-nb st 6 1 16 > out-6.txt.