The bug is slightly bigger, so that's why it's a new thread.

I took the example factor() given in README and ran it:

Code:

bill@Gravemind:~∰∂ yafu "factor(2056802480868100646375721251575555494408897387375737955882170045672576386016591560879707933101909539325829251496440620798637813)"
factoring 2056802480868100646375721251575555494408897387375737955882170045672576386016591560879707933101909539325829251496440620798637813
using pretesting plan: normal
no tune info: using qs/gnfs crossover of 95 digits
div: primes less than 10000
fmt: 1000000 iterations
pp1: starting B1 = 20K, B2 = gmp-ecm default on C127
pm1: starting B1 = 100K, B2 = gmp-ecm default on C110
ecm: 30/30 curves on C87 input, at B1 = 2K, B2 = gmp-ecm default
ecm: 25/74 curves on C87 input, at B1 = 11K, B2 = gmp-ecm default
ecm: 48/48 curves on C70 input, at B1 = 11K, B2 = gmp-ecm default
ecm: 56/56 curves on C70 input, at B1 = 50K, B2 = gmp-ecm default
starting SIQS on c70: 3950565477929583959090443657115834369563721138106225828250209513731263
==== sieving in progress (1 thread): 12208 relations needed ====
==== Press ctrl-c to abort and save state ====
10154 rels found: 5187 full + 4967 from 52996 partial, (1628.79 rels/sec)
freed 2 duplicate relations
SIQS elapsed time = 42.1203 seconds.
Composite result found, starting re-factorization
factoring 168120549877635053
using pretesting plan: normal
no tune info: using qs/gnfs crossover of 95 digits
div: primes less than 10000
fmt: 1000000 iterations
pp1: starting B1 = 20K, B2 = gmp-ecm default on C18
pp1: starting B1 = 20K, B2 = gmp-ecm default on C18
pp1: starting B1 = 20K, B2 = gmp-ecm default on C18
pm1: starting B1 = 100K, B2 = gmp-ecm default on C18
ecm: 0/30 curves on C18 input, at B1 = 2K, B2 = gmp-ecm default
Total factoring time = 0.0316 seconds
Composite result found, starting re-factorization
factoring 12479125541750268690323
using pretesting plan: normal
no tune info: using qs/gnfs crossover of 95 digits
div: primes less than 10000
fmt: 1000000 iterations
pp1: starting B1 = 20K, B2 = gmp-ecm default on C23
Total factoring time = 0.0079 seconds
Total factoring time = 52.5949 seconds
***factors found***
C18 = 248158049830971629
C35 = 33637310674071348724927955857253537
PRP36 = 117445937227520353139789517076610399
PRP6 = 280673
P12 = 598990818061
PRP10 = 2756163353
PRP13 = 4527716228491
ans = 1
bill@Gravemind:~∰∂ yafu "factor(33637310674071348724927955857253537)"
factoring 33637310674071348724927955857253537
using pretesting plan: normal
no tune info: using qs/gnfs crossover of 95 digits
Total factoring time = 0.0003 seconds
***factors found***
PRP35 = 33637310674071348724927955857253537
ans = 1
bill@Gravemind:~∰∂ yafu "factor(248158049830971629)"
factoring 248158049830971629
using pretesting plan: normal
no tune info: using qs/gnfs crossover of 95 digits
div: primes less than 10000
fmt: 1000000 iterations
Total factoring time = 0.0013 seconds
***factors found***
PRP18 = 248158049830971629
ans = 1
bill@Gravemind:~∰∂

The request is that factor() prints the input size before doing any factoring; above the first size printed is C127, but I have no way to tell (a priori) that the original was C127, or if tf/fermat found other factors, meaning the original was larger than C127.

The bug is that after running factor(), it reports

Code:

***factors found***
C18 = 248158049830971629
C35 = 33637310674071348724927955857253537
PRP36 = 117445937227520353139789517076610399
PRP6 = 280673
P12 = 598990818061
PRP10 = 2756163353
PRP13 = 4527716228491

but when I ran factor() on the C18 and C35, they were returned as PRP18 and PRP35 (you can see that in the first code block).

I suppose I do have another scratch-my-itch request: Could you print "***factors found***" only when factors are actually found? :P Like above it reports back the input as PRP, but says "FF", and I've had numbers where no factors were found but it instead reports back "Cxxx: [input]" but still says "FF". Sorry for the nit-picky :P:P

Edit: This is unrelated to the above, but does anyone know where I can find ggnfs binaries for Linux-64? (I suppose source would do, but the less compilation the better.)

Edit2: What's the difference between -logfile and -session?

Edit3: Another false composite example.

Code:

factoring 133963581130084328933017969077928801246591825821260567693998983142892944737899
using pretesting plan: normal
no tune info: using qs/gnfs crossover of 110 digits
div: primes less than 10000
fmt: 1000000 iterations
rho: x^2 + 3, starting 1000 iterations on C78
rho: x^2 + 2, starting 1000 iterations on C78
rho: x^2 + 1, starting 1000 iterations on C78
pp1: starting B1 = 20K, B2 = gmp-ecm default on C78
pm1: starting B1 = 100K, B2 = gmp-ecm default on C51
ecm: 2/30 curves on C51 input, at B1 = 2K, B2 = gmp-ecm default
Composite result found, starting re-factorization
factoring 176524787773813758992951101
using pretesting plan: normal
no tune info: using qs/gnfs crossover of 95 digits
div: primes less than 10000
fmt: 1000000 iterations
pp1: starting B1 = 20K, B2 = gmp-ecm default on C27
Total factoring time = 0.0275 seconds
Total factoring time = 0.1206 seconds
***factors found***
C19 = 2586861932602953721
PRP33 = 293364663397800099317721604912319
PRP16 = 3684180889792499
PRP11 = 47914256399
ans = 1

Code:

factoring 2586861932602953721
using pretesting plan: normal
no tune info: using qs/gnfs crossover of 95 digits
div: primes less than 10000
fmt: 1000000 iterations
Total factoring time = 0.0011 seconds
***factors found***
PRP19 = 2586861932602953721
ans = 1