History of the program

New features in Version 13.6 of sqfgap.exe
March 23rd, 2001
Speed: 88 M/s, Lmin = 14, N = 1013  to 1013 + 2×109.
Speed: 95 M/s, Lmin = 15, N = 1015  to 1015 + 25×108.

1)  The file "gaplist.rtf" must be provided to start the calculation.  This reduces the risks of user error in selecting the starting number of the range.
2)  The range has been increased to 300×1012.

New features in Version 13.3 of sqfgap.exe
March 2nd, 2001
Speed: 88 M/s, Lmin = 14, N = 1013  to 1013 + 2×109.
Speed: 95 M/s, Lmin = 15, N = 1015  to 1015 + 25×108.

1)  The function that writes to the hard drive and reads from the hard drive is less agressive, giving a chance for the other tasks to get a larger share of CPU time.
2)  The current tested value is saved to gaplist.txt every N=1e12.  This seems to be better than to save it every 8 hours.

New features in Version 13.2 of sqfgap.exe
August 26th, 2000
Speed: 88 M/s, Lmin = 14, N = 1013  to 1013 + 2×109.
Speed: 95 M/s, Lmin = 15, N = 1015  to 1015 + 25×108.

1)  A Linux version is now available.
2)  The expected completion date is indicated (or the percentage of the range completed).
3)  The program can be stopped by pressing 'Shift-Q' ('Ctrl-C' for Linux).  The current number being tested is saved and the program is cleanly stopped (memory is freed and all files are closed).
4)  A problem with unsigned integers in the previous versions was fixed.  For N>263, the program could generate an unnecessary large table of prime numbers and may have exceeded the maximum amount of memory available (the program stops).  In the worse case, it could have generated extra gaps that would have been invalid (some numbers in the gap being a multiple of any integer, including 1), but no gaps would have been missed.
5)  The program is easier on the RAM allocation, using only slightly more than 4MB (instead of 16MB).  The initial sort is slower by a factor 3.
 

New features in Version 12.4 of sqfgap.exe
May 31st, 2000
Speed: 88 M/s, Lmin = 14, N = 1013  to 1013 + 2×109.

1)  The range is automatically chosen to be 200×1012.
2)  It uses the hard drive to store the prime numbers that are not used very often in the calculation.  This virtual memory is in a file called SQFgap.tmp, the size of this file is about 35MB.  This means that the program won't use Windows' virtual memory (if you have more than 32MB RAM), resulting in an increased performance, especially for the large sorts.
3)  The program stores only the prime numbers required for the range you are working on.  This reduces memory requirements and speeds up the sort routine.
4)  It asks you for the starting number in millions (saves you typing all these zeros).
5)  The program uses the full 64-bit representation of an unsigned integer.  Nmax = 1.8429×1019.  This means the program works for the three upper limit values for Qgap(17) and Qgap(18) given by Erick Wong. I tested it (with Lmin = 13) to get:
 
23742173585581316: 13 125780936710042268: 13
23742453640900972: 17 125781000834058568: 18
23742482913507248: 13 [...] 125781185199226768: 13 [...]

6)  After implementing the suggestions from JosephWetherell, the speed was increased by a factor 2.5 compared to Version 8.2.  The program uses a precomputed modulo list, a chained list and a separate list of small squared-primes.
7) A smaller base and three large prime-squared are used for better performance.
 

New features in Version 8.2 of sqfgap.exe
March 24th, 2000
Speed: 28 M/s, Lmin = 14, N = 1013  to 1013 + 109.

1)  The prime numbers are also calculated with the sieve of Eratosthenes.
2)  Automatic version.  The program saves intermediate results and resume the calculation from the last number in the list when it is restarted.
3)  It saves an additional number (checksum) with the results to avoid possible mistakes.
4)  The speed of the calculation is indicated in millions of integer tested per second.
5)  Uses the function memmove() in the sort routine.
6)  An additional verification is made to eliminate some time wasted on smaller gaps.
 

New features in Version 6 of sqfgap.exe
November 7th, 1999
Speed: 12 M/s, Lmin = 14, N = 1013  to 1013 + 5×108.

1)  An array containing the next non-square-free number is kept in memory.
2)  A test is done to verify that there are enough non-square-free numbers for the required gap length.  For this purpose, a table is used listing the minimum number of squared-primes required in a gap of length L:
Gap length L
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 16 17 18
...
Minimum number
 
1
2
3
4
4
5
6
7
7
 7
 8
 9
 9
10
11 12 12 13
...
3)  The sort routine looks 10 numbers ahead and uses a faster loop to move numbers.
 

New features in Version 5 of sqfgap.exe
October 21st, 1999
Speed: 3.7 M/s, Lmin = 10, N = 1012  to 1012 + 108.

1)  Program uses the sieve of Eratosthenes to find the square-free numbers.
 

New features in Version 4 of sqfgap.exe
October 17th, 1999
Speed: 0.0015 M/s, Lmin = 1, N = 109  to 109 + 20000.

1)  Program uses '__int64' (or 'long long') 64-bit signed integer representation for NNmax = 9×1018.
 

New features in Version 3 of sqfgap.exe
September 21st, 1999
Speed: 0.00095 M/s, Lmin = 1, N = 109  to 109 + 20000.

1)  Program uses 'double' representation for NNmax = 9×1015.
 

New features in Version 2 of sqfgap.exe
September 8th, 1999
Speed: 0.0029 M/s, Lmin = 1, N = 109  to 109 + 20000.
Speed: 0.075 M/s, Lmin = 1, N = 1 to 1.5×106.

1)  The new version is written in C from the FORTRAN Version 1.
2)  Program uses 'long' integers.  Nmax = 4×109.
 

Version 1 of sqfgap.exe
August, 1999
Speed: 0.0056 M/s, Lmin = 1, N = 1 to 1.5×106.

FORTRAN code from David Bernier.