![]() |
[QUOTE=R.D. Silverman;225707]How did you convert the CWI data that I sent you? Many of the relations would have had polynomials with more than 9 factors.[/QUOTE]
Yes, you're right. My code does work for more than 9 factors. It took about 15-20 minutes to convert the file containing about 36 million relations. |
[QUOTE=frmky;225701]My code, too, probably can't handle more than 9 factors. Richard always used a larger print bound of 1000000 so that wasn't an issue for the NFSNet relations. It also has nasty and unnecessary dependencies on the GGNFS code.
The cleanest thing to do would be to read in the polys in whatever format, take Jason's relation reading code fixed for >9 factors, divide out the provided factors, then just use a bit of trial factoring to pull out the tiny factors followed by Pollard Rho or ECM to find the rest. One more hitch is that CWI rational and algebraic factors can come in either order, depending on which poly was specified first. In GGNFS, the rational factors always come first. As a concrete example, here are equivalent CWI and GGNFS relations for 2,1191-. My code includes all factors, but those <1000 can be omitted. [CODE]0155 556389 873452 13901 29671 42829 53279 71569 27361 128761 152539 548851 4165627; 0135 -385643 376992 18553 19531 1029881 12739 12757 95923 105607 798961; 0157 -11665601 481884 37013 37649 67231 98389 3369059 11119 13711 17659 659881 705559 1442971 2120917; 0174 12191 3427 13619 28549 37021 48973 60133 70919 422111 51487 60091 119101 4600399; 0156 884621 6709141 10847 11689 12973 22783 4472021 21163 24391 520309 1417489 4054387 4307473; 0166 -4314838 12265509 20219 23473 30853 48679 90197 3689869 11287 237157 748387 1997029 4656061 4763149; 0157 -693025 2335558 39301 65927 77813 96557 5300963 13903 42853 64171 73681 437743 2307541 4518061; 0146 211638 2879759 35053 41651 55201 3470611 40531 159337 167119 1114381 2451721 8552737; 0167 5964581 4301494 12791 23209 23509 68729 87943 3799219 24043 32233 110899 777103 1006393 2854309 7358233; 556389,873452:364d,73e7,a74d,d01f,11791,2f,67,d3,167,761,b03,eb1,258d:6ae1,1f6f9,253db,85ff3,3f8ffb,2,4f,61,6d,c1 -385643,376992:4879,4c4b,fb6f9,5,2f,e3,1bb,1cf,25f,287,971,9ad,18eb,1a2f:31c3,31d5,176b3,19c87,c30f1,2,2a1,397,bdd -11665601,481884:9095,9311,1069f,18055,336863,5,7,3d,df,42d,63d,ad9,14e3:2b6f,358f,44fb,a11a9,ac417,16049b,205cd5,2,7,7f,2e3 12191,3427:3533,6f85,909d,bf4d,eae5,11507,670df,7,6b,7f,14b,1d3:c91f,eabb,1d13d,46324f,3,7,175 884621,6709141:2a5f,2da9,32ad,58ff,443cd5,5,d,17,ad,fb,6a3,b89,1a35,1df9:52ab,5f47,7f075,15a111,3ddd73,41ba11,3,7,7f,142f -4314838,12265509:4efb,5bb1,7885,be27,16055,384d8d,2,7,1d,9d,df,11b,5ab,67f:2c17,39e65,b6b63,1e78e5,470bbd,48ae0d,7,d,67,eb9 -693025,2335558:9985,10187,12ff5,1792d,50e2e3,7f,15d,1bb,295,3b9,41b,2507:364f,a765,faab,11fd1,6adef,2335d5,44f0ad,2,3 211638,2879759:88ed,a2b3,d7a1,34f513,2,13,29,3d,df,67f,1163,164f,1ecb,1f01:9e53,26e69,28ccf,11010d,256909,828121,d,6cd 5964581,4301494:31f7,5aa9,5bd5,10c79,15787,39f8b3,b,1bb,26b,52f,16e5,1855:5deb,7de9,1b133,bdb8f,f5b39,2b8da5,704719,2,3,d [/CODE][/QUOTE] Are repeat factors included? i.e. if a norm is divisible by p^2 (or higher) does it appear more than once in the list? |
[QUOTE=R.D. Silverman;232340]Are repeat factors included? i.e. if a norm is divisible by p^2 (or higher)
does it appear more than once in the list?[/QUOTE] They can be included, but do not need to be. Both GGNFS and msieve code will divide out all powers of a factor and will ignore repeated factors. |
[QUOTE=jasonp;225656]See attached. My web page has similar code, but it is years old and is out of sync with the msieve library. If you need to build from the source, then you will need the msieve source, particularly the include directory, and a precompiled msieve library available. Building the latter also requires GMP or MPIR, so it's not completely straightforward. Without GMP or MPIR, you'll have to paste in the library code that the converter depends on, which is scattered all over the library.
This converter basically reads in an msieve-format factor base file, builds the corresponding factor base, reads CWI format relations and trial divides to find any factors that are not present in the CWI output. The default trial division bound is pretty conservative; to change it you can add 'FRMAX X' and 'FAMAX Y' to the msieve factor base file to set the rational and algebraic factor base limits to X and Y respectively. It can also be made *much* more efficient. Finally, the converter assumes the rational poly is CWI poly 0 and the algebraic poly is CWI poly 1.[/QUOTE] Can this be slightly updated to the latest trunk and maybe added to the source tree, too? Here's a few mismatches: [CODE]gcc -Iinclude -I. -O3 cwi2gg.c cwi2gg.c: In function 'convert_relations_core': cwi2gg.c:101: warning: passing argument 2 of 'read_factor_base' from incompatible pointer type cwi2gg.c:103: warning: passing argument 2 of 'write_factor_base' from incompatible pointer type cwi2gg.c:144: warning: passing argument 1 of 'eval_poly' from incompatible pointer type cwi2gg.c:192: warning: passing argument 1 of 'eval_poly' from incompatible pointer type cwi2gg.c: In function 'convert_relations': cwi2gg.c:270: error: too many arguments to function 'msieve_obj_new' [/CODE] |
| All times are UTC. The time now is 23:25. |
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.