This is very interesting. Thank you for devoting your time to putting this on the web. Otherwise it might have rotted in your attic!
It's unclear to me whether there is anything theoretically new in here yet. The algorithms are all familiar to me except for the P^2 + 1 and P^2 + P + 1 algorithms. But don't read too much into that. They are probably well known.
What I can tell you is that there is an extraordinary amount of work in implementing all those algorithms. I do this stuff for a living and it is a tremendously impressive feat for a single individual over any span of time.
I'd be interested in hearing how fast the MPQS is. The state of the art for factoring a number like 840931001586212064794450601167289569811131781103613687750579 on a single core is probably around 6s or so on a modern 2GHz x86 processor.
UBASIC already had a 32 bit x86 assembly optimised MPQS in it, and it performed pretty well actually. So it would be interesting if your uncle improved on that, especially if he had theoretical improvements.
The state of the art for the number field sieve should factor the 79 digit number here: http://www.loria.fr/~zimmerma/records/rsa.html in around 10-20 minutes on a single core, though in general the GNFS is for much larger integers. It seems unlikely that a little UBASIC program could manage those, however.
Having said that, I am still in shock that your uncle actually implemented the GNFS. That is a staggering accomplishment and is something to be genuinely impressed by.
I don't know if you have a gold mine there or the cutting edge life's work of someone from yesteryear.
OK, after some effort I got the first of the MPQS programs to compile. Unfortunately it fails with a runtime error so I can't evaluate it.
The program itself requires two files to exist before it can operate. Then it asks for the input number in base 10000 as a set of digits separated by spaces or returns. This is pretty bizarre by today's standards.
It does succeed in factoring very tiny numbers, but it seems to have bugs which prevent it from working for large numbers.
The double large prime variant of the MPQS seems to allow numbers up to a pretty small bound. This strongly indicates that it is not competitive.
I'll see if I can get anywhere with the double large prime variant version (edit: I tried the second program and it fails with the same runtime error), but given the extremely poor state of the code (no comments, full of gotos, no indication of structure, no documentation, no test suite, buggy, very poor interface, etc.) I would say this code is not going to be particularly interesting to modern day researchers.
At the same time, it is a tremendously amazing accomplishment that one man essentially toiled away in secret and created a massive number theory library like this! When I google his name I find nothing. Was he associated with an institution? Did he publish any papers? I know he didn't use the web, so that explains why he doesn't have a web presence, but it is odd not to find him referred to anywhere. Or am I just looking in the wrong place?
The mpqs code actually compiles unmodified (but with many warnings) if you use f95. When the code is run it complains of a missing file. One can create an empty file of this name to keep it happy. In fact it fills the file with data. Then it complains of a second missing file, however the same trick does not work here. It complains of missing records indicating that it expects this file to contain data. I've no idea what data it should contain or in what format.
I have the files but I haven't uploaded them as they are very big. I imagined one of the other programs would create the files, but I've yet to discover it. I believe these files are precomputations that are meant to speed up the algorithm.
Perhaps they are tables of precomputed inverses of primes to speed up the trial division. There might be up to 100000 entries in the file if this is the case.
I can't think what else would be in the file. I would have guessed the file was generated by the program and would contain relations from a sieving run for the last large factorisation your uncle did. But I also don't see how these files get generated by the code.
It's unclear to me whether there is anything theoretically new in here yet. The algorithms are all familiar to me except for the P^2 + 1 and P^2 + P + 1 algorithms. But don't read too much into that. They are probably well known.
What I can tell you is that there is an extraordinary amount of work in implementing all those algorithms. I do this stuff for a living and it is a tremendously impressive feat for a single individual over any span of time.
I'd be interested in hearing how fast the MPQS is. The state of the art for factoring a number like 840931001586212064794450601167289569811131781103613687750579 on a single core is probably around 6s or so on a modern 2GHz x86 processor.
UBASIC already had a 32 bit x86 assembly optimised MPQS in it, and it performed pretty well actually. So it would be interesting if your uncle improved on that, especially if he had theoretical improvements.
The state of the art for the number field sieve should factor the 79 digit number here: http://www.loria.fr/~zimmerma/records/rsa.html in around 10-20 minutes on a single core, though in general the GNFS is for much larger integers. It seems unlikely that a little UBASIC program could manage those, however.
Having said that, I am still in shock that your uncle actually implemented the GNFS. That is a staggering accomplishment and is something to be genuinely impressed by.
I don't know if you have a gold mine there or the cutting edge life's work of someone from yesteryear.