Looking for the latest version? Download yafu-1.34.zip (4.1 MB)
Home / 1.25
Name Modified Size Downloads / Week Status
Parent folder
Totals: 3 Items   4.9 MB 3
README 2011-04-06 6.4 kB 11 weekly downloads
yafu-1.25-src.zip 2011-04-06 489.9 kB 11 weekly downloads
yafu-1.25.zip 2011-04-06 4.4 MB 11 weekly downloads
--------------------------------------------------------------- INSTALLATION --------------------------------------------------------------- No installation necessary, just put the binary in whatever location you like and run it. --------------------------------------------------------------- INSTALLATION WITH NFS SUPPORT --------------------------------------------------------------- To run the general or special number field sieve using yafu, you will need to provide ggnfs executable files and make the location of these files known to yafu at runtime. The easiest way to obtain the files is through Jeff Gilchrist's website: http://gilchrist.ca/jeff/factoring/index.html Download the .zip file for your OS and unzip it to a directory on your computer. The easiest way to let yafu know where these are is to modify your yafu.ini file (which should appear in the same directory as your yafu executable files) to contain a line specifying ggnfs_dir in the following way: ggnfs_dir=<location relative to yafu executable> For instance, if your ggnfs executables were located adjacent to the yafu folder in the directory tree, in a folder called ggnfs-bin, then the line would be ggnfs_dir=..\ggnfs-bin\ --------------------------------------------------------------- PRE-COMPILED BINARIES --------------------------------------------------------------- Pre-compiled binaries have both GMP-ECM and selected msieve NFS routines built in (poly selection, linear algebra, and square root routines). For 32 bit windows, GMP-ECM 6.3 was linked against the MPIR-2.1.3 32 bit generic library. For 64 bit windows, GMP-ECM 6.3 was linked against the MPIR-2.1.3 64 bit core2 library. For 64 bit linux builds, GMP-ECM 6.3 was linked against GMP 5.0.1 x86_64 library. 32 bit linux builds currently are not provided All versions were linked against version 1.48 of msieve. --------------------------------------------------------------- BUILD INFORMATION --------------------------------------------------------------- Anyone is welcome to compile for your own system. If you can make a binary which beats the performance of one of the pre-compiled versions for a particular architecture, I'd love to hear about it! GCC 32 bit OS ============= make x86 [GMPECM=1] [BLOCK=64] [PROFILE=1] [TIMING=1] [NFS=1] GCC 64 bit OS ============= make x86_64 [GMPECM=1] [BLOCK=64] [PROFILE=1] [TIMING=1] [NFS=1] Optionally enable GNFS factorizations by setting NFS=1 during make. This will require the makefile to be edited to point to the libmsieve.a library. By default, it is assumed to be located at ../msieve/ relative to the Makefile. Selecting NFS=1 will also require GMP and GMP-ECM. See below. Optionally enable the p+1, p-1, and ecm factoring routines to utilize GMPECM libraries by setting GMPECM=1 during make. This will require the makefile to be edited to point to the location of your gmp and gmpecm libraries and include files. Optionally enable 64k sieve block sizes by setting BLOCK=64 during make. This sets the size of the sieve interval during siqs, mpqs, pqs, and the sieve of eratosthenes. In general the sieve block size should match the L1 data cache size of your CPU. 64k blocksizes are faster for AMD64 systems (and possibly some older systems). All intel chips should not use BLOCK=64. Optionally enable gcc profiling by setting PROFILE=1 during make. this produces profiling information when run and thus slows down the program. Profiling information can then be viewed using, for example, using gprof. Optionally enable more detailed timing during SIQS by setting TIMING=1 during make. This will slightly slow down siqs. WINDOWS MS Visual Studio Express Edition 2008 ============= Build files are available for MSVC EE2008 and 2010. The directory structure is important for these builds, especially if GMPECM or NFS support is desired. The build files expect to see an mpir, msieve, and gmp-ecm folder at the same level as the yafu folder in the directory tree, with the following structure: msieve build.vc10 Win32 Release gnfs.lib common.lib x64 Release gnfs.lib common.lib gmp-ecm ecm.h config.h build.vc9 Win32 Release ecm.lib x64 Release ecm.lib build.vc10 Win32 Release libecm.lib x64 Release libecm.lib mpir gmp.h config.h gmp-mparam.h mpir.h build.vc9 Win32 Release mpir.lib x64 Release mpir.lib build.vc10 Win32 Release mpir.lib x64 Release mpir.lib yafu build.vc9 ... build.vc10 ... The mpir and gmp-ecm libraries will need to be built separately, for either Win32 or x64 targets. To change the target for a yafu build, within MSVC select Build -> Configuration Manger then in the Active Solution Platform pulldown choose x64 or Win32. MINGW-64 OR MINGW-32 ============= YAFU should build in a mingw or mingw-64 environment. Follow the instructions for a GCC build, except the makefile will need to be edited in the following way first: uncomment this line (remove the # symbol): #LIBS += -lm and comment this line LIBS += -lm -lpthread OTHER ============= If you build yafu on other platforms or using other IDE's or compilers, please let me know about it. --------------------------------------------------------------- HELP INFORMATION --------------------------------------------------------------- Detailed (somewhat) documentation is available in docfile.txt, which can be viewed during a yafu session by typing 'help' In you want to see the docfile from within the program, it needs to be in the same directory as the executable. Check back at http://sites.google.com/site/bbuhrow for updates. --------------------------------------------------------------- MISC INFORMATION --------------------------------------------------------------- Here's a fun test case for factor(), which uses many of the algorithms in yafu factor(2056802480868100646375721251575555494408897387375737955882170045672576386016591560879707933101909539325829251496440620798637813) neat example for ecm: 140870298550359924914704160737419905257747544866892632000062896476968602578482966342704
Source: README, updated 2011-04-06