Here you will find the code to accompany my book "The ternary Goldbach problem".

These programs are free software: you can redistribute them and/or modify
them under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

All packages used by the code are also freely available. This is in particular
the case for David Platt's int_double*.h, included in these directories.

Most of the code is in C (or rather C++). Compilation instructions can be found
at the beginning of each .cpp or .c file. The code is written for 64-bit Intel
processors. (In particular, it is assumed that long ints are at least 64 bits
long.) The header file int_double*.h will run only
on the Intel architecture.

You will need to install crlibm for the complication of nearly all C++ code.
You should compile it so that it does not use SSE registers; in the source
directory for crlibm, type:

./configure CFLAGS="-O0 -mfpmath=387 -frounding-math -finline-functions"
make
make check

It is best to define an environment variable CRDIR (by means of setenv, export
or whatever your shell's command is) to be the directory where you have
installed crlibm.

The version is used to test code was crlimbm-1.0beta4.

The code for section 7.7 uses ARB (and FLINT, through ARB) instead of crlibm.

Sage/Python code requires Sage.

The code for section 5.2 requires the package primesieve.

------------------------------------

The versions of the above packages used were:

ARB v2.13.0
primesieve 6.3 and 6.4; any version starting with 6.0 should do.
SageMath v7.4--8.7; any version starting with 7.0 should do. Note, however,
that the code in the main .tex files requires version >= v8.2.

The code has been tested only under Linux, on 64-bit machines.
While this is in no way a maintained "package", comments are welcome.


