View Single Post
2007-02-27, 19:33   #3
Thomas11

Feb 2003

190510 Posts

The final one is a bit different.
Since the Nash algorithm is quite slow when computing large ranges (e.g. millions) of k, one needs a faster tool. Therefore I implemented an ordinary sieve for p up to 512 and a smaller n range of only 1-1000. Due to precomputation of the "reversed orders of n" the whole calculation can be done in cache memory and is therefore really fast (e.g. about 3000 k/sec on a 1.7 GHz P4).

So one can use multi5 for a fast pre-scanning of a k-range and then do some sorting on the results and run the "good ones" through nash.

For some historic reason it is written in Fortran (and lacks any comments) and there are no command line options. Therefore you need to edit the steer.txt file for specifying the k-range and a print condition. The latter is necessary since otherwise the sieve would produce hundreds of megabytes of output within minutes...

Code:
32000000025             KMIN
32001000000             KMAX
30                      KSTEP
600                     minimum weight for printing
You may skip the text comments at the right. The printing condition means, that the k is only printed when the weight is higher or equal to the specified value (e.g. weight>=600 in the example). Note, that we use a smaller n-range (1-1000), therefore 600 is a rather high weight. The weights are roughly one tenth of the Nash weights. Also note the restriction of k<2^63 (signed long).

Usage is simply:
Code:
multi5
for the example steer.txt file you will get:
Code:
multi5
32000060235  609
32000107425  622
32000193225  612
32000315325  605
32000497485  640
32000553585  618
32000703735  674
32000816445  601
32000982585  622
If you want to store the results, you can simply redirect the output to a file, e.g.:
Code:
multi5 > my_ks.txt
Of course it works the some way for nash and mnash...
Attached Files
 multi5.zip (32.4 KB, 184 views)

Last fiddled with by Thomas11 on 2007-02-27 at 19:48