The 3x + 1 class record search


 •  What software do I need to join?
 •  What's the impact on my system?
 •  Where do I download the software?
 •  Which of the two versions should I use?
 •  How do I get a block assigned?
 •  How do I stop the search?
 •  How do I restart the search?
 •  How do results get reported?
 •  What if I want to abandon the project?
 •  What's the 3x+1 problem about, really?
 •  What do I do without Script Host?
 •  How does the software program work?
 •  Frequently asked questions.
 •  What is the current progress?

Trajectory of 63,728,127

What software do I need to join?

You don't need anything special really. The main program is a small EXE program that can run on any Windows platform. So you need a PC. Sorry, there is no version for MacIntosh or Unix systems.


What's the impact on my system?

The impact on your system is usually very low indeed:

On normal Windows versions the impact is almost nothing. The program run on idle priority, so it just uses the cycles your machine would otherwise spend doing nothing. It writes just a single line of text to the hard disk every cycle - a cycle takes around 10 minutes on a 2GHz machine, it might take longer or shorter on your machine depending on the speed of your processor. It does not open any other files or use any other resources. It also does not send any emails or perform any other network activities.

Previously the searches were performed in 'blocks' of 20,000,000,000,000 (20.1012). Such a block would take roughly 10 days of (idle) time on a 2 GHz processor. Currently however, because pc's are faster, often have multiple cores and can use hyperthreading blocks of size 100.1012 are more standard.


Where do I download the software?

You can download the software very quickly by using this link for the current 64-bit version.
Or you can use this link for the older 16-bit version.
You then put it in a folder somewhere and request a block to search through (see below).


Which version should I use?

On Windows Vista or higher only the newer version will run.
On older versions (before XP) the newer version may not run.
On Windows XP you could run either one - though experience has shown that the older version runs somewhat faster on such systems. The newer version is tuned to run on 64-bits systems, which makes it a bit slower on 32-bits systems. However, the 64-bits version has a nicer user interface and is easier to use. Also the 64-bits version will run several blocks from one program - the older version has a separate process for every block it runs. The 64-bit version will also minimize out of sight to the system tray.


How do I get a block assigned?

The distributed search is done by assigning 'blocks' of 100.1012 numbers. Simply email and I'll reply to you with the next free block as soon as possible. You should then soon see your name appear on the progress page as well.
Then you start up the program - fill in the blocknumber and blocklength and press 'Start'.
In the 16-bits version you must change the third line of the .vbs file (using notepad) to your block number and you're ready to go. Simply start the script (the vbs-file) to run. The program will automatically tell you how long the block calculation will take on your machine, based on your processor's speed.


How do I stop the search?

Simply press the 'Stop' buttons or quit the program. You quit the program by selecting it from the system tray and right-clicking it. Select 'Close' to close the program. Note that clicking on the 'normal' windows close button will only minimize the program to the system tray.

The older 16-bits program has no "clean" procedure to stop the search. It was found that building in a neat way to stop makes the performance go down. If you need to stop the search simply kill the program. This does not destroy earlier results, since they were written to the logfile.


How do I restart the search?


How do results get reported?

The program writes a log file entry every 18,000,000,000 numbers (which is 234), and also whenever it starts or finishes. It also logs every interesting number. There are not many interesting numbers at these big numbers, just about one in every 5 . 1012 , and sometimes they come in groups as well, so it is not at all strange if you search for a week and find (almost) nothing. The program also writes the time and the number of overflows found. This last number enables a check on whether results are correct and reproducible.

The idea is that once the block is finished you mail the logfile to . The logfile is not very big (~50 kb), and of course you could use winzip to make it even smaller.


What if I want to abandon the project?

Obviously you can always end your participation whenever you want to. Please tell me if you want to leave, that way I can ask someone else to finish your block. If you mail me the (perhaps incomplete) logfiles that saves work, too.
Occasionally it unfortunately happens that someone asks for a block but never finishes it. If a block is not finished after 5 months I will try to contact you. If I don't receive any reply I must assume you no longer wish to participate and I will have to reassign the block.


What's the 3x+1 problem about, really?

The 3x+1 problem is one of the simplest unsolved mathematical problems. You can read all about it at my 3x+1 homepage. A short and straightforward explanation can also be found at Wolfram's brilliant MathWorld website. If you're really interested try following the link to the Lagarias 3x+1 overview.


How does the 16-bit software program work?

The 16-bit version can be run from the command line, like this:

start /low w422f /o /c233 /fw2840.log 2844,456,000,000,000

This is what this means:

/low : start on idle priority. This ensures the program is not slowing down your system.

/o : optimized run. This flag does not do anything specific but is used to verify the program is started properly and not accidentally.

/c<number> : (optional) the number of loops. Each loop is 232, or almost 4,300,000,000. If you use 233 loops you get just about 1012, and 4657 is the number you need to do an entire 20.1012 block. If you do not specify a count the program will run "forever".

/f<filename> : (optional) filename in which to log the result. Results are appended to this file, so previous results are never overwritten. If no filename is specified it will use 'wondrous.log'.

<number> : the number to start with. This is automatically rounded down to a multiple of 232, so the last 9 digits are not very important usually. The comma's are optional, and just help to make it more readable.


Frequently Asked Questions

Q:In the older version, can I split a block over two or more computers?
A: You certainly can. At the top of the .vbs file you'll find something like
  Const blockstart = 65920
  Const blockinterval = 20
although the first line of course should specify your own assigned block.
If you were to change this into
  Const blockstart = 65920
  Const blockinterval = 10
your computer will calculate only the first half of the interval.
Then, on a second PC you could use
  Const blockstart = 65930
  Const blockinterval = 10
so that this machine would take care of the second half.
This trick will obviously also work on a machine with hyperthreading. You can start two processes on the same machine (since they write to separate logfiles that's no problem at all) and finish in half the time!
Q:I inspected the logfile and saw it reported lots of overflows. Should this worry me?
A: Not at all. The program usually calculates in 64 bits. Occasionally a number is found that needs more than 64 bits to perform the calculation. Calculation for that number is then restarted using 128 bits. Every time this happens this is counted as an overflow. The number of overflows per 16 billion interval is reported to provide a check on the proper running of the program.

Back to the general 3x+1 page.