Home / 1.25
Name Modified Size InfoDownloads / Week
Parent folder
README 2011-04-06 6.4 kB
yafu-1.25-src.zip 2011-04-06 489.9 kB
yafu-1.25.zip 2011-04-06 4.4 MB
Totals: 3 Items   4.9 MB 0
---------------------------------------------------------------
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