The sixth taxicab number is 24153319581254312065344

March 9, 2008

Dear number theorists,

I am pleased to announce that, subject to a couple of small caveats, I have verified that 24153319581254312065344 is the sixth taxicab number.

What are the caveats?

What have I done?

The main findings

The main scan was done using a hash-bucket approach similar to that used by Durango Bill; like him, I started out following David Wilson's heap-based approach, and I too found that this was significantly slower than the hash-bucket approach. I attempted to speed up the heap-based program by performing calculations mod N (ie, every number in the heap is equal to the same K mod N. While this worked very well to parallelize the calculations, it did not improve the overall speed; however, as a check on the main calculation it proved very effective.

I made several heap runs with different values of K mod 1601 and compared the results of these with the corresponding values extracted from the main dataset; I found no differences from the main calculation.

I made another series of heap runs, this time without doing calculations mod N, as spot-checks on small sub-ranges; again, I found no differences from the main calculation.

I wrote a couple more programs to perform other checks: first, a trivial check to verify that each recorded number is indeed expressed correctly as the sum of the cubes of the two recorded components, for all pairs of components, and second, a check to see that no components are missing -- in part to check my main scanners, but in part also to check hardware glitches, on the theory that if a hardware glitch might have destroyed part of the data for a number as it was being processed, some partial output might still appear, and thus a five-way sum might be erroneously recorded as a three-way or a four-way sum. Obviously, this won't catch all hardware glitches, but it's better than nothing.

In order to try and keep from introducing common bugs into all programs, I wrote these last two programs in Haskell; the first two main scanners were written in C. The two Haskell programs were not run against all the two-way numbers, only against the three-way or higher numbers. Again, I found no differences between the results.

I also wrote a Haskell implementation of something similar to the hash-bucket scanner; that works, but is too slow to provide a realistic check against the main hash-bucket scanner. However, in the small ranges where I ran both, there were no differences in the results.

I have placed copies of several data files onto my website at www.korgwal.com/ramanujan/:

I looked for three-way Fermat near-misses, but found none with a "miss" as small as 1: the only three-way numbers I found where one component is less than 10 are:

There may still be some in the un-scanned portion of [1 .. 1e21].

In all of the above data files, the format is

    sum a1 b2 a2 b2 ...

where sum = ai3 + bi3 for each pair (ai,bi).

Here are copies of the programs:

I have not placed a copy of the entire two-way-or-higher dataset onto my website. While I'm happy to share it with anyone who would like a copy, I don't have the bandwidth either at home, to upload it, or on the website, for others to download it. If someone would like a copy, please contact me and we'll work out a way to get it to you. If you are in the Silicon Valley area, it should be relatively easy to achieve that.

A portion of these calculations was done using some of the idle cycles of an old Itanium server at my previous employer, ASML MaskTools (later, both it and I were acquired by my current employer, Brion Technologies, an ASML company). I thank them for these idle cycles. Other participating computers included a Sun server with a couple of Opteron CPUs, a couple of Pentium PCs, and an old iMac G3. In a moment of madness, I began to port the main scanner program to a Soekris net4801 which serves as my firewall, but I was stopped by the lack of GMP on that computer, and sanity returned before I had finished building it.

Uwe Hollerbach
amateur numerologist
March 2008

Valid HTML 4.01 Transitional