Qsieve Logo

Welcome to Qsieve!

About

This is the homepage for Qsieve, a suite of programs for integer factorization.

Qsieve consists of different types of clients and a server to factorize large numbers in a distributed system. A standalone version is also available.

It has been developed in C++ under Linux, but can be run under Windows (Cygwin) as well. It was written by Thorsten Reinecke and is distributed under the GNU General Public License (GPL).

Current version: V3.02 (released: 2007-11-07)

Download

You may want to download source tarballs or a binary release (for Windows or Linux) at the download page.

If possible, install from source, as Qsieve can be optimized for your system and may run a lot faster. Advanced users and system administrators should have no problems to install Qsieve this way.

For your convenience I provide binary releases, too. They are available for Windows (Cygwin) and Linux. Minimum system requirements: Pentium II, 64 MB RAM. For other systems you have to install from source.

A hint for Windows users: If you are really interested in using Qsieve, you should probably install Cygwin on your system and compile Qsieve out of the sources.

Installation and Setup

Please consult the material in the tarballs and read the README file. Installation and setup should be rather simple, if you follow the instructions given there.

Important: If you have no /tmp directory, you need to create it or you have to define another directory for temporary data in the qsieve.cfg configuration file.

Installing from Qsieve 3.02 source tar-ball

For Qsieve-3.x versions just untar the tar-ball, then type ./configure, followed by make and make install. Additional options are available via ./configure --help. The installation has been tested under Cygwin and various Linux boxes and should work in conjunction with gcc-3.3.x, gcc-3.4.x, gcc-4.0.x, gcc-4.1.x, gcc-4.2.x and gcc-4.3.x. Using --enable-static (which is selected by default on most systems) should provide best performance. However, on some systems it may be necessary to use --enable-shared. Also, there exist a few low-cost systems where using SSE2 features degrade performance; in these cases choose --disable-SSE2.

Here is an example session showing how to install Qsieve-3.02 in /tmpfs/test/ on a Linux box:

> 
517 reinecke.users @ localhost:/tmpfs
> ls
qsieve-3.02.tar.bz2
518 reinecke.users @ localhost:/tmpfs
> tar xf qsieve-3.02.tar.bz2
519 reinecke.users @ localhost:/tmpfs
> cd qsieve-3.02/
520 reinecke.users @ localhost:/tmpfs/qsieve-3.02
> ls
aclocal.m4    contrib                          fibonacci.factors  Makefile.sample.in  README
AUTHORS       convert_from_UTF-8_to_latin1.sh  gmp.h.patch        missing             reference.txt
ChangeLog     COPYING                          INSTALL            NEWS                related_stuff
config.guess  depcomp                          install-sh         process_input.sh    src
config.sub    doc                              ltmain.sh          profile.sh          VERSION
configure     Doxyfile.in                      Makefile.am        qsieve.1            webinterface
configure.ac  FAQ                              Makefile.in        qsieve.cfg
521 reinecke.users @ localhost:/tmpfs/qsieve-3.02
> ./configure --prefix=/tmpfs/test
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ld used by gcc... /public/bin/ld
checking if the linker (/public/bin/ld) is GNU ld... yes
checking for /public/bin/ld option to reload object files... -r
checking for BSD-compatible nm... /public/bin/nm -B
checking whether ln -s works... yes
checking how to recognize dependent libraries... pass_all
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking how to run the C++ preprocessor... g++ -E
checking for g77... no
checking for xlf... no
checking for f77... no
checking for frt... no
checking for pgf77... no
checking for cf77... no
checking for fort77... no
checking for fl32... no
checking for af77... no
checking for xlf90... no
checking for f90... no
checking for pgf90... no
checking for pghpf... no
checking for epcf90... no
checking for gfortran... gfortran
checking whether we are using the GNU Fortran 77 compiler... yes
checking whether gfortran accepts -g... yes
checking the maximum length of command line arguments... 98304
checking command to parse /public/bin/nm -B output from gcc object... ok
checking for objdir... .libs
checking for ar... ar
checking for ranlib... ranlib
checking for strip... strip
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC
checking if gcc PIC flag -fPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking whether the gcc linker (/public/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... no
checking whether to build static libraries... yes
configure: creating libtool
appending configuration tag "CXX" to libtool
checking for ld used by g++... /public/bin/ld
checking if the linker (/public/bin/ld) is GNU ld... yes
checking whether the g++ linker (/public/bin/ld) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC
checking if g++ PIC flag -fPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking whether the g++ linker (/public/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
appending configuration tag "F77" to libtool
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... no
checking whether to build static libraries... yes
checking for gfortran option to produce PIC... -fPIC
checking if gfortran PIC flag -fPIC works... yes
checking if gfortran static flag -static works... yes
checking if gfortran supports -c -o file.o... yes
checking whether the gfortran linker (/public/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for a BSD-compatible install... /usr/bin/install -c
checking for supported version of gcc... yes
checking for __gmpz_divisible_p in -lgmp... yes
checking whether gmp.h works for us... no, using locally patched gmp.h
checking whether patched gmp.h works... 1 (1)  yes
checking sys/sysinfo.h usability... yes
checking sys/sysinfo.h presence... yes
checking for sys/sysinfo.h... yes
checking for doxygen... doxygen
checking for dot... dot
checking for wget... wget
checking customization for system GNU/Linux... customizing for Linux
checking whether exception handling & multithreading works... yes
checking for specific cpu support... i386 (32bit) is supported
checking for MMX support... yes
checking for cmov support... yes
checking for SSE support... yes
checking for SSE2 support... yes
checking for 16 byte alignment... yes
checking for 3DNow! support... yes
checking for AMD-Athlon features... yes
checking for gcc CPUFLAGS... -march=athlon-xp -msse2
configure: WARNING: using -O2 -fomit-frame-pointer for best performance.
configure: creating ./config.status
config.status: creating Makefile.sample
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating webinterface/Makefile
config.status: creating doc/Doxyfile
config.status: creating doc/Makefile
config.status: executing depfiles commands
configure:
  Congratulations! Your Makefile has been configured for your system.
  Now you have two options to proceed.

  OPTION 1: default installation (user-mode)
   type "make; make install"
   This is the easy way, but you'll miss some fun ;-)

  OPTION 2: semiautomatic installation (developer-mode)
   The configure script has also created a sample Makefile for you.
   To compile Qsieve using this sample Makefile, proceed as follows:
    cp Makefile.sample Makefile
    - Feel free to tune the Makefile manually!
    - Then type "make" to create the binaries.
    - Please note that "make install" is not supported in this mode.
    - Please note that OPTION 2 only works, if ./configure has been
      called *inside* the qsieve directory!

522 reinecke.users @ localhost:/tmpfs/qsieve-3.02
> make
Making all in src
make[1]: Entering directory `/tmpfs/qsieve-3.02/src'
g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"qsieve\" -DVERSION=\"3.02\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_LIBGMP=1 -DHAVE_LINUX_SYSINFO=1 -I.  -I/tmpfs/qsieve-3.02 -Wall -march=athlon-xp -msse2 -DASM_386 -DASM_MMX -DASM_CMOV -DASM_SSE -DASM_SSE2 -DASM_3DNOW -DASM_ATHLON -O2 -fomit-frame-pointer -DUSE_FAKEHEAP -DCONTINUATION_METHOD=2 -DVERBOSE_WARN -DVERBOSE_NOTICE -Detc_ConfigFile=\"/tmpfs/test/etc/qsieve.cfg\"  -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -MT libmodulo_a-modulo.o -MD -MP -MF .deps/libmodulo_a-modulo.Tpo -c -o libmodulo_a-modulo.o `test -f 'modulo.cc' || echo './'`modulo.cc
mv -f .deps/libmodulo_a-modulo.Tpo .deps/libmodulo_a-modulo.Po
rm -f libmodulo.a
ar cru libmodulo.a libmodulo_a-modulo.o 
ranlib libmodulo.a
g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"qsieve\" -DVERSION=\"3.02\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_LIBGMP=1 -DHAVE_LINUX_SYSINFO=1 -I.  -I/tmpfs/qsieve-3.02 -Wall -march=athlon-xp -msse2 -DASM_386 -DASM_MMX -DASM_CMOV -DASM_SSE -DASM_SSE2 -DASM_3DNOW -DASM_ATHLON -O2 -fomit-frame-pointer -DUSE_FAKEHEAP -DCONTINUATION_METHOD=2 -DVERBOSE_WARN -DVERBOSE_NOTICE -Detc_ConfigFile=\"/tmpfs/test/etc/qsieve.cfg\"  -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -MT libTfactor_a-Tfactor.o -MD -MP -MF .deps/libTfactor_a-Tfactor.Tpo -c -o libTfactor_a-Tfactor.o `test -f 'Tfactor.cc' || echo './'`Tfactor.cc
mv -f .deps/libTfactor_a-Tfactor.Tpo .deps/libTfactor_a-Tfactor.Po
rm -f libTfactor.a
ar cru libTfactor.a libTfactor_a-Tfactor.o 
ranlib libTfactor.a
g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"qsieve\" -DVERSION=\"3.02\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_LIBGMP=1 -DHAVE_LINUX_SYSINFO=1 -I.  -I/tmpfs/qsieve-3.02 -Wall -march=athlon-xp -msse2 -DASM_386 -DASM_MMX -DASM_CMOV -DASM_SSE -DASM_SSE2 -DASM_3DNOW -DASM_ATHLON -O2 -fomit-frame-pointer -DUSE_FAKEHEAP -DCONTINUATION_METHOD=2 -DVERBOSE_WARN -DVERBOSE_NOTICE -Detc_ConfigFile=\"/tmpfs/test/etc/qsieve.cfg\"  -D_REENTRANT -DUSER_GMP_WRAP -DPKGDATADIR=\"/tmpfs/test/share/qsieve\" -g -O2 -MT libeasy_factor_a-easy_factor.o -MD -MP -MF .deps/libeasy_factor_a-easy_factor.Tpo -c -o libeasy_factor_a-easy_factor.o `test -f 'easy_factor.cc' || echo './'`easy_factor.cc
mv -f .deps/libeasy_factor_a-easy_factor.Tpo .deps/libeasy_factor_a-easy_factor.Po
rm -f libeasy_factor.a
ar cru libeasy_factor.a libeasy_factor_a-easy_factor.o 
ranlib libeasy_factor.a
g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"qsieve\" -DVERSION=\"3.02\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_LIBGMP=1 -DHAVE_LINUX_SYSINFO=1 -I.  -I/tmpfs/qsieve-3.02 -Wall -march=athlon-xp -msse2 -DASM_386 -DASM_MMX -DASM_CMOV -DASM_SSE -DASM_SSE2 -DASM_3DNOW -DASM_ATHLON -O2 -fomit-frame-pointer -DUSE_FAKEHEAP -DCONTINUATION_METHOD=2 -DVERBOSE_WARN -DVERBOSE_NOTICE -Detc_ConfigFile=\"/tmpfs/test/etc/qsieve.cfg\"  -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -MT libStaticFactorbase_a-StaticFactorbase.o -MD -MP -MF .deps/libStaticFactorbase_a-StaticFactorbase.Tpo -c -o libStaticFactorbase_a-StaticFactorbase.o `test -f 'StaticFactorbase.cc' || echo './'`StaticFactorbase.cc
mv -f .deps/libStaticFactorbase_a-StaticFactorbase.Tpo .deps/libStaticFactorbase_a-StaticFactorbase.Po
rm -f libStaticFactorbase.a
ar cru libStaticFactorbase.a libStaticFactorbase_a-StaticFactorbase.o 
ranlib libStaticFactorbase.a
g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"qsieve\" -DVERSION=\"3.02\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_LIBGMP=1 -DHAVE_LINUX_SYSINFO=1 -I.  -I/tmpfs/qsieve-3.02 -Wall -march=athlon-xp -msse2 -DASM_386 -DASM_MMX -DASM_CMOV -DASM_SSE -DASM_SSE2 -DASM_3DNOW -DASM_ATHLON -O2 -fomit-frame-pointer -DUSE_FAKEHEAP -DCONTINUATION_METHOD=2 -DVERBOSE_WARN -DVERBOSE_NOTICE -Detc_ConfigFile=\"/tmpfs/test/etc/qsieve.cfg\"  -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -MT libSieving_a-Sieving.o -MD -MP -MF .deps/libSieving_a-Sieving.Tpo -c -o libSieving_a-Sieving.o `test -f 'Sieving.cc' || echo './'`Sieving.cc
mv -f .deps/libSieving_a-Sieving.Tpo .deps/libSieving_a-Sieving.Po
rm -f libSieving.a
ar cru libSieving.a libSieving_a-Sieving.o 
ranlib libSieving.a
g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"qsieve\" -DVERSION=\"3.02\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_LIBGMP=1 -DHAVE_LINUX_SYSINFO=1 -I.  -I/tmpfs/qsieve-3.02 -Wall -march=athlon-xp -msse2 -DASM_386 -DASM_MMX -DASM_CMOV -DASM_SSE -DASM_SSE2 -DASM_3DNOW -DASM_ATHLON -O2 -fomit-frame-pointer -DUSE_FAKEHEAP -DCONTINUATION_METHOD=2 -DVERBOSE_WARN -DVERBOSE_NOTICE -Detc_ConfigFile=\"/tmpfs/test/etc/qsieve.cfg\"  -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -MT libCRelation_a-CRelation.o -MD -MP -MF .deps/libCRelation_a-CRelation.Tpo -c -o libCRelation_a-CRelation.o `test -f 'CRelation.cc' || echo './'`CRelation.cc
CRelation.cc:244:4: warning: #warning "enabling workaround for possible Basis assertion failure"
mv -f .deps/libCRelation_a-CRelation.Tpo .deps/libCRelation_a-CRelation.Po
rm -f libCRelation.a
ar cru libCRelation.a libCRelation_a-CRelation.o 
ranlib libCRelation.a
g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"qsieve\" -DVERSION=\"3.02\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_LIBGMP=1 -DHAVE_LINUX_SYSINFO=1 -I.  -I/tmpfs/qsieve-3.02 -Wall -march=athlon-xp -msse2 -DASM_386 -DASM_MMX -DASM_CMOV -DASM_SSE -DASM_SSE2 -DASM_3DNOW -DASM_ATHLON -O2 -fomit-frame-pointer -DUSE_FAKEHEAP -DCONTINUATION_METHOD=2 -DVERBOSE_WARN -DVERBOSE_NOTICE -Detc_ConfigFile=\"/tmpfs/test/etc/qsieve.cfg\"  -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -MT libelliptic_curve_a-elliptic_curve.o -MD -MP -MF .deps/libelliptic_curve_a-elliptic_curve.Tpo -c -o libelliptic_curve_a-elliptic_curve.o `test -f 'elliptic_curve.cc' || echo './'`elliptic_curve.cc
mv -f .deps/libelliptic_curve_a-elliptic_curve.Tpo .deps/libelliptic_curve_a-elliptic_curve.Po
rm -f libelliptic_curve.a
ar cru libelliptic_curve.a libelliptic_curve_a-elliptic_curve.o 
ranlib libelliptic_curve.a
g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"qsieve\" -DVERSION=\"3.02\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_LIBGMP=1 -DHAVE_LINUX_SYSINFO=1 -I.  -I/tmpfs/qsieve-3.02 -Wall -march=athlon-xp -msse2 -DASM_386 -DASM_MMX -DASM_CMOV -DASM_SSE -DASM_SSE2 -DASM_3DNOW -DASM_ATHLON -O2 -fomit-frame-pointer -DUSE_FAKEHEAP -DCONTINUATION_METHOD=2 -DVERBOSE_WARN -DVERBOSE_NOTICE -Detc_ConfigFile=\"/tmpfs/test/etc/qsieve.cfg\"  -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -MT libpolynomial_a-polynomial.o -MD -MP -MF .deps/libpolynomial_a-polynomial.Tpo -c -o libpolynomial_a-polynomial.o `test -f 'polynomial.cc' || echo './'`polynomial.cc
mv -f .deps/libpolynomial_a-polynomial.Tpo .deps/libpolynomial_a-polynomial.Po
rm -f libpolynomial.a
ar cru libpolynomial.a libpolynomial_a-polynomial.o 
ranlib libpolynomial.a
g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"qsieve\" -DVERSION=\"3.02\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_LIBGMP=1 -DHAVE_LINUX_SYSINFO=1 -I.  -I/tmpfs/qsieve-3.02 -Wall -march=athlon-xp -msse2 -DASM_386 -DASM_MMX -DASM_CMOV -DASM_SSE -DASM_SSE2 -DASM_3DNOW -DASM_ATHLON -O2 -fomit-frame-pointer -DUSE_FAKEHEAP -DCONTINUATION_METHOD=2 -DVERBOSE_WARN -DVERBOSE_NOTICE -Detc_ConfigFile=\"/tmpfs/test/etc/qsieve.cfg\"  -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -MT libmpqsPolynom_a-mpqsPolynom.o -MD -MP -MF .deps/libmpqsPolynom_a-mpqsPolynom.Tpo -c -o libmpqsPolynom_a-mpqsPolynom.o `test -f 'mpqsPolynom.cc' || echo './'`mpqsPolynom.cc
mv -f .deps/libmpqsPolynom_a-mpqsPolynom.Tpo .deps/libmpqsPolynom_a-mpqsPolynom.Po
rm -f libmpqsPolynom.a
ar cru libmpqsPolynom.a libmpqsPolynom_a-mpqsPolynom.o 
ranlib libmpqsPolynom.a
g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"qsieve\" -DVERSION=\"3.02\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_LIBGMP=1 -DHAVE_LINUX_SYSINFO=1 -I.  -I/tmpfs/qsieve-3.02 -Wall -march=athlon-xp -msse2 -DASM_386 -DASM_MMX -DASM_CMOV -DASM_SSE -DASM_SSE2 -DASM_3DNOW -DASM_ATHLON -O2 -fomit-frame-pointer -DUSE_FAKEHEAP -DCONTINUATION_METHOD=2 -DVERBOSE_WARN -DVERBOSE_NOTICE -Detc_ConfigFile=\"/tmpfs/test/etc/qsieve.cfg\"  -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -MT qsieve-qsieve.o -MD -MP -MF .deps/qsieve-qsieve.Tpo -c -o qsieve-qsieve.o `test -f 'qsieve.cc' || echo './'`qsieve.cc
mv -f .deps/qsieve-qsieve.Tpo .deps/qsieve-qsieve.Po
/bin/sh ../libtool --tag=CXX   --mode=link g++ -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -all-static  -o qsieve qsieve-qsieve.o libmodulo.a libTfactor.a libmpqsPolynom.a libpolynomial.a libeasy_factor.a libelliptic_curve.a libStaticFactorbase.a libSieving.a libCRelation.a -lpthread -lgmp 
mkdir .libs
g++ -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -static -o qsieve qsieve-qsieve.o  libmodulo.a libTfactor.a libmpqsPolynom.a libpolynomial.a libeasy_factor.a libelliptic_curve.a libStaticFactorbase.a libSieving.a libCRelation.a -lpthread /public/packages/libraries/gmp-4.2.2-athlon64/lib/libgmp.a  
/lib/libpthread.a(sem_open.o): In function `sem_open':
sem_open.c:(.text+0x3c4): warning: the use of `mktemp' is dangerous, better use `mkstemp'
g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"qsieve\" -DVERSION=\"3.02\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_LIBGMP=1 -DHAVE_LINUX_SYSINFO=1 -I.  -I/tmpfs/qsieve-3.02 -Wall -march=athlon-xp -msse2 -DASM_386 -DASM_MMX -DASM_CMOV -DASM_SSE -DASM_SSE2 -DASM_3DNOW -DASM_ATHLON -O2 -fomit-frame-pointer -DUSE_FAKEHEAP -DCONTINUATION_METHOD=2 -DVERBOSE_WARN -DVERBOSE_NOTICE -Detc_ConfigFile=\"/tmpfs/test/etc/qsieve.cfg\"  -DIS_SERVER -DUSE_NETWORK -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -MT server-server.o -MD -MP -MF .deps/server-server.Tpo -c -o server-server.o `test -f 'server.cc' || echo './'`server.cc
mv -f .deps/server-server.Tpo .deps/server-server.Po
/bin/sh ../libtool --tag=CXX   --mode=link g++ -DIS_SERVER -DUSE_NETWORK -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -u pthread_create -u pthread_cancel -u pthread_mutex_init -u pthread_mutex_lock -u pthread_mutex_trylock -u pthread_mutex_unlock  -o server server-server.o libTfactor.a libmpqsPolynom.a libeasy_factor.a libelliptic_curve.a libpolynomial.a libStaticFactorbase.a libCRelation.a libmodulo.a -lpthread -lgmp 
g++ -DIS_SERVER -DUSE_NETWORK -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -u pthread_create -u pthread_cancel -u pthread_mutex_init -u pthread_mutex_lock -u pthread_mutex_trylock -u pthread_mutex_unlock -o server server-server.o  libTfactor.a libmpqsPolynom.a libeasy_factor.a libelliptic_curve.a libpolynomial.a libStaticFactorbase.a libCRelation.a libmodulo.a -lpthread /public/packages/libraries/gmp-4.2.2-athlon64/lib/libgmp.so   -Wl,--rpath -Wl,/public/packages/libraries/gmp-4.2.2-athlon64/lib -Wl,--rpath -Wl,/public/packages/libraries/gmp-4.2.2-athlon64/lib
g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"qsieve\" -DVERSION=\"3.02\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_LIBGMP=1 -DHAVE_LINUX_SYSINFO=1 -I.  -I/tmpfs/qsieve-3.02 -Wall -march=athlon-xp -msse2 -DASM_386 -DASM_MMX -DASM_CMOV -DASM_SSE -DASM_SSE2 -DASM_3DNOW -DASM_ATHLON -O2 -fomit-frame-pointer -DUSE_FAKEHEAP -DCONTINUATION_METHOD=2 -DVERBOSE_WARN -DVERBOSE_NOTICE -Detc_ConfigFile=\"/tmpfs/test/etc/qsieve.cfg\"  -DIS_CLIENT -DUSE_NETWORK -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -MT net_client-net-client.o -MD -MP -MF .deps/net_client-net-client.Tpo -c -o net_client-net-client.o `test -f 'net-client.cc' || echo './'`net-client.cc
mv -f .deps/net_client-net-client.Tpo .deps/net_client-net-client.Po
/bin/sh ../libtool --tag=CXX   --mode=link g++ -DIS_CLIENT -DUSE_NETWORK -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -u pthread_create -u pthread_cancel -u pthread_mutex_init -u pthread_mutex_lock -u pthread_mutex_trylock -u pthread_mutex_unlock  -o net-client net_client-net-client.o libTfactor.a libmpqsPolynom.a libelliptic_curve.a libpolynomial.a libStaticFactorbase.a libSieving.a libCRelation.a libmodulo.a -lpthread -lgmp 
g++ -DIS_CLIENT -DUSE_NETWORK -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -u pthread_create -u pthread_cancel -u pthread_mutex_init -u pthread_mutex_lock -u pthread_mutex_trylock -u pthread_mutex_unlock -o net-client net_client-net-client.o  libTfactor.a libmpqsPolynom.a libelliptic_curve.a libpolynomial.a libStaticFactorbase.a libSieving.a libCRelation.a libmodulo.a -lpthread /public/packages/libraries/gmp-4.2.2-athlon64/lib/libgmp.so   -Wl,--rpath -Wl,/public/packages/libraries/gmp-4.2.2-athlon64/lib -Wl,--rpath -Wl,/public/packages/libraries/gmp-4.2.2-athlon64/lib
g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"qsieve\" -DVERSION=\"3.02\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_LIBGMP=1 -DHAVE_LINUX_SYSINFO=1 -I.  -I/tmpfs/qsieve-3.02 -Wall -march=athlon-xp -msse2 -DASM_386 -DASM_MMX -DASM_CMOV -DASM_SSE -DASM_SSE2 -DASM_3DNOW -DASM_ATHLON -O2 -fomit-frame-pointer -DUSE_FAKEHEAP -DCONTINUATION_METHOD=2 -DVERBOSE_WARN -DVERBOSE_NOTICE -Detc_ConfigFile=\"/tmpfs/test/etc/qsieve.cfg\"  -DIS_CLIENT -DUSER_GMP_WRAP -g -O2 -MT file_client-file-client.o -MD -MP -MF .deps/file_client-file-client.Tpo -c -o file_client-file-client.o `test -f 'file-client.cc' || echo './'`file-client.cc
mv -f .deps/file_client-file-client.Tpo .deps/file_client-file-client.Po
/bin/sh ../libtool --tag=CXX   --mode=link g++ -DIS_CLIENT -DUSER_GMP_WRAP -g -O2 -all-static  -o file-client file_client-file-client.o libmodulo.a libTfactor.a libmpqsPolynom.a libpolynomial.a libStaticFactorbase.a libSieving.a libCRelation.a -lgmp 
g++ -DIS_CLIENT -DUSER_GMP_WRAP -g -O2 -static -o file-client file_client-file-client.o  libmodulo.a libTfactor.a libmpqsPolynom.a libpolynomial.a libStaticFactorbase.a libSieving.a libCRelation.a /public/packages/libraries/gmp-4.2.2-athlon64/lib/libgmp.a  
g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"qsieve\" -DVERSION=\"3.02\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_LIBGMP=1 -DHAVE_LINUX_SYSINFO=1 -I.  -I/tmpfs/qsieve-3.02 -Wall -march=athlon-xp -msse2 -DASM_386 -DASM_MMX -DASM_CMOV -DASM_SSE -DASM_SSE2 -DASM_3DNOW -DASM_ATHLON -O2 -fomit-frame-pointer -DUSE_FAKEHEAP -DCONTINUATION_METHOD=2 -DVERBOSE_WARN -DVERBOSE_NOTICE -Detc_ConfigFile=\"/tmpfs/test/etc/qsieve.cfg\"  -DUSE_NETWORK -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -MT transfer_client-transfer-client.o -MD -MP -MF .deps/transfer_client-transfer-client.Tpo -c -o transfer_client-transfer-client.o `test -f 'transfer-client.cc' || echo './'`transfer-client.cc
mv -f .deps/transfer_client-transfer-client.Tpo .deps/transfer_client-transfer-client.Po
/bin/sh ../libtool --tag=CXX   --mode=link g++ -DUSE_NETWORK -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -all-static  -o transfer-client transfer_client-transfer-client.o -lpthread -lgmp 
g++ -DUSE_NETWORK -D_REENTRANT -DUSER_GMP_WRAP -g -O2 -static -o transfer-client transfer_client-transfer-client.o  -lpthread /public/packages/libraries/gmp-4.2.2-athlon64/lib/libgmp.a  
transfer_client-transfer-client.o: In function `unix_buffer':
/tmpfs/qsieve-3.02/src/unix_buffer.H:1146: warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"qsieve\" -DVERSION=\"3.02\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_LIBGMP=1 -DHAVE_LINUX_SYSINFO=1 -I.  -I/tmpfs/qsieve-3.02 -Wall -march=athlon-xp -msse2 -DASM_386 -DASM_MMX -DASM_CMOV -DASM_SSE -DASM_SSE2 -DASM_3DNOW -DASM_ATHLON -O2 -fomit-frame-pointer -DUSE_FAKEHEAP -DCONTINUATION_METHOD=2 -DVERBOSE_WARN -DVERBOSE_NOTICE -Detc_ConfigFile=\"/tmpfs/test/etc/qsieve.cfg\"  -DIS_VALIDATOR -DUSER_GMP_WRAP -g -O2 -MT validator-validator.o -MD -MP -MF .deps/validator-validator.Tpo -c -o validator-validator.o `test -f 'validator.cc' || echo './'`validator.cc
mv -f .deps/validator-validator.Tpo .deps/validator-validator.Po
/bin/sh ../libtool --tag=CXX   --mode=link g++ -DIS_VALIDATOR -DUSER_GMP_WRAP -g -O2 -all-static  -o validator validator-validator.o libCRelation.a libTfactor.a libStaticFactorbase.a libmodulo.a -lgmp 
g++ -DIS_VALIDATOR -DUSER_GMP_WRAP -g -O2 -static -o validator validator-validator.o  libCRelation.a libTfactor.a libStaticFactorbase.a libmodulo.a /public/packages/libraries/gmp-4.2.2-athlon64/lib/libgmp.a  
g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"qsieve\" -DVERSION=\"3.02\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_LIBGMP=1 -DHAVE_LINUX_SYSINFO=1 -I.  -I/tmpfs/qsieve-3.02 -Wall -march=athlon-xp -msse2 -DASM_386 -DASM_MMX -DASM_CMOV -DASM_SSE -DASM_SSE2 -DASM_3DNOW -DASM_ATHLON -O2 -fomit-frame-pointer -DUSE_FAKEHEAP -DCONTINUATION_METHOD=2 -DVERBOSE_WARN -DVERBOSE_NOTICE -Detc_ConfigFile=\"/tmpfs/test/etc/qsieve.cfg\"  -DUSER_GMP_WRAP -g -O2 -MT ieval-ieval.o -MD -MP -MF .deps/ieval-ieval.Tpo -c -o ieval-ieval.o `test -f 'ieval.cc' || echo './'`ieval.cc
mv -f .deps/ieval-ieval.Tpo .deps/ieval-ieval.Po
/bin/sh ../libtool --tag=CXX   --mode=link g++ -DUSER_GMP_WRAP -g -O2 -all-static  -o ieval ieval-ieval.o  -lgmp 
g++ -DUSER_GMP_WRAP -g -O2 -static -o ieval ieval-ieval.o  /public/packages/libraries/gmp-4.2.2-athlon64/lib/libgmp.a  
make[1]: Leaving directory `/tmpfs/qsieve-3.02/src'
Making all in webinterface
make[1]: Entering directory `/tmpfs/qsieve-3.02/webinterface'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/tmpfs/qsieve-3.02/webinterface'
Making all in doc
make[1]: Entering directory `/tmpfs/qsieve-3.02/doc'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/tmpfs/qsieve-3.02/doc'
make[1]: Entering directory `/tmpfs/qsieve-3.02'
make[1]: Nothing to be done for `all-am'.
make[1]: Leaving directory `/tmpfs/qsieve-3.02'
523 reinecke.users @ localhost:/tmpfs/qsieve-3.02
> make install              
Making install in src
make[1]: Entering directory `/tmpfs/qsieve-3.02/src'
make[2]: Entering directory `/tmpfs/qsieve-3.02/src'
test -z "/tmpfs/test/lib" || /usr/bin/mkdir -p "/tmpfs/test/lib"
test -z "/tmpfs/test/bin" || /usr/bin/mkdir -p "/tmpfs/test/bin"
  /bin/sh ../libtool --mode=install /usr/bin/install -c 'qsieve' '/tmpfs/test/bin/qsieve'
/usr/bin/install -c qsieve /tmpfs/test/bin/qsieve
  /bin/sh ../libtool --mode=install /usr/bin/install -c 'server' '/tmpfs/test/bin/server'
/usr/bin/install -c server /tmpfs/test/bin/server
  /bin/sh ../libtool --mode=install /usr/bin/install -c 'net-client' '/tmpfs/test/bin/net-client'
/usr/bin/install -c net-client /tmpfs/test/bin/net-client
  /bin/sh ../libtool --mode=install /usr/bin/install -c 'file-client' '/tmpfs/test/bin/file-client'
/usr/bin/install -c file-client /tmpfs/test/bin/file-client
  /bin/sh ../libtool --mode=install /usr/bin/install -c 'transfer-client' '/tmpfs/test/bin/transfer-client'
/usr/bin/install -c transfer-client /tmpfs/test/bin/transfer-client
  /bin/sh ../libtool --mode=install /usr/bin/install -c 'validator' '/tmpfs/test/bin/validator'
/usr/bin/install -c validator /tmpfs/test/bin/validator
  /bin/sh ../libtool --mode=install /usr/bin/install -c 'ieval' '/tmpfs/test/bin/ieval'
/usr/bin/install -c ieval /tmpfs/test/bin/ieval
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/tmpfs/qsieve-3.02/src'
make[1]: Leaving directory `/tmpfs/qsieve-3.02/src'
Making install in webinterface
make[1]: Entering directory `/tmpfs/qsieve-3.02/webinterface'
make[2]: Entering directory `/tmpfs/qsieve-3.02/webinterface'
make[2]: Nothing to be done for `install-exec-am'.
test -z "/tmpfs/test/share/qsieve/html" || /usr/bin/mkdir -p "/tmpfs/test/share/qsieve/html"
 /usr/bin/install -c -m 644 'README' '/tmpfs/test/share/qsieve/html/README'
 /usr/bin/install -c -m 644 'update2.png' '/tmpfs/test/share/qsieve/html/update2.png'
 /usr/bin/install -c -m 644 'update.png' '/tmpfs/test/share/qsieve/html/update.png'
 /usr/bin/install -c -m 644 'qsieve.png' '/tmpfs/test/share/qsieve/html/qsieve.png'
 /usr/bin/install -c -m 644 'qsieve.ico' '/tmpfs/test/share/qsieve/html/qsieve.ico'
 /usr/bin/install -c -m 644 'qsieve-status.xsl' '/tmpfs/test/share/qsieve/html/qsieve-status.xsl'
 /usr/bin/install -c -m 644 'qsieve-status.php' '/tmpfs/test/share/qsieve/html/qsieve-status.php'
 /usr/bin/install -c -m 644 'qsieve-status.js' '/tmpfs/test/share/qsieve/html/qsieve-status.js'
 /usr/bin/install -c -m 644 'diagramm1.php' '/tmpfs/test/share/qsieve/html/diagramm1.php'
 /usr/bin/install -c -m 644 'arrow2-right.png' '/tmpfs/test/share/qsieve/html/arrow2-right.png'
 /usr/bin/install -c -m 644 'arrow2-down.png' '/tmpfs/test/share/qsieve/html/arrow2-down.png'
 /usr/bin/install -c -m 644 'arrow-right.png' '/tmpfs/test/share/qsieve/html/arrow-right.png'
 /usr/bin/install -c -m 644 'arrow-down.png' '/tmpfs/test/share/qsieve/html/arrow-down.png'
 /usr/bin/install -c -m 644 'about2.png' '/tmpfs/test/share/qsieve/html/about2.png'
 /usr/bin/install -c -m 644 'about.png' '/tmpfs/test/share/qsieve/html/about.png'
make[2]: Leaving directory `/tmpfs/qsieve-3.02/webinterface'
make[1]: Leaving directory `/tmpfs/qsieve-3.02/webinterface'
Making install in doc
make[1]: Entering directory `/tmpfs/qsieve-3.02/doc'
make[2]: Entering directory `/tmpfs/qsieve-3.02/doc'
make[2]: Nothing to be done for `install-exec-am'.
test -z "" || /usr/bin/mkdir -p ""
make  install-data-hook
make[3]: Entering directory `/tmpfs/qsieve-3.02/doc'
make[3]: Nothing to be done for `install-data-hook'.
make[3]: Leaving directory `/tmpfs/qsieve-3.02/doc'
make[2]: Leaving directory `/tmpfs/qsieve-3.02/doc'
make[1]: Leaving directory `/tmpfs/qsieve-3.02/doc'
make[1]: Entering directory `/tmpfs/qsieve-3.02'
make[2]: Entering directory `/tmpfs/qsieve-3.02'
test -z "/tmpfs/test/etc" || /usr/bin/mkdir -p "/tmpfs/test/etc"
 /usr/bin/install -c -m 644 'qsieve.cfg' '/tmpfs/test/etc/qsieve.cfg'
test -z "/tmpfs/test/share/qsieve" || /usr/bin/mkdir -p "/tmpfs/test/share/qsieve"
 /usr/bin/install -c -m 644 'FAQ' '/tmpfs/test/share/qsieve/FAQ'
 /usr/bin/install -c -m 644 'README' '/tmpfs/test/share/qsieve/README'
 /usr/bin/install -c -m 644 'webinterface/qsieve-status.xsl' '/tmpfs/test/share/qsieve/qsieve-status.xsl'
 /usr/bin/install -c -m 644 'fibonacci.factors' '/tmpfs/test/share/qsieve/fibonacci.factors'
 /usr/bin/install -c -m 644 'process_input.sh' '/tmpfs/test/share/qsieve/process_input.sh'
test -z "/tmpfs/test/share/man/man1" || /usr/bin/mkdir -p "/tmpfs/test/share/man/man1"
 /usr/bin/install -c -m 644 './qsieve.1' '/tmpfs/test/share/man/man1/qsieve.1'
make[2]: Leaving directory `/tmpfs/qsieve-3.02'
make[1]: Leaving directory `/tmpfs/qsieve-3.02'
524 reinecke.users @ localhost:/tmpfs/qsieve-3.02
> cd /tmpfs/test/
525 reinecke.users @ localhost:/tmpfs/test
> du
8       ./etc
8       ./share/man/man1
8       ./share/man
164     ./share/qsieve/html
236     ./share/qsieve
244     ./share
25768   ./bin
0       ./lib
26020   .
526 reinecke.users @ localhost:/tmpfs/test
> bin/qsieve P300
 ----------------------------------------
-         Qsieve standalone 3.02         -
-   (C) 1998 - 2007 Thorsten Reinecke    -
-      (qsieve@thorstenreinecke.de)      -
 ----------------------------------------
(Nov  7 2007, 15:31:56 using gcc 4.2.2)

This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Cannot find ConfigFile "qsieve.cfg"
trying to use "/tmpfs/test/etc/qsieve.cfg"
Setting current XMLStatusFile to "status.xml".
Setting FFT MemoryLimit to 2048MB.
Starting factorization for
9253082936723602 (16)
2^1 is factor.
137^1 is factor.
1021^1 is factor.
remaining number:
33075784213 (11)
remaining number is most probably a prime!
writing XML Status Report to "status.xml"

Factorization of P300: 
[= 9253082936723602 (16)]
= 2 (1)
* 137 (3)
* 1021 (4)
* 33075784213 (11)
going down...
527 reinecke.users @ localhost:/tmpfs/test
> 

Example Session

This is an example session showing how the standalone version of Qsieve is started in a shell.
594 reinecke.users @ localhost:/tmpfs
> time qsieve P3000
 ----------------------------------------
-         Qsieve standalone 3.0          -
-   (C) 1998 - 2005 Thorsten Reinecke    -
-      (qsieve@thorstenreinecke.de)      -
 ----------------------------------------
(Jun  6 2005, 03:46:25 using gcc 3.4.4)

This program may be freely distributed under the
terms of the GNU-Public-License.

Cannot find ConfigFile "qsieve.cfg"
trying to use "/public/packages/scientific/qsieve-3.0/etc/qsieve.cfg"
Setting current XMLStatusFile to "status.xml".
Setting current ClientAccount to "Athlon64-3000+".
Setting FFT MemoryLimit to 2048MB.
Starting factorization for
496025142797537184410324879054927095334462742231683423624 (57)
2^3 is factor.
11^1 is factor.
4184373131 (10) is factor. [round 55430]
--------------------------------------------------
phi-phase 0
phi-phase 1
factor found in phase 1: i=510510
8015654311073 (13) is factor.
phi-phase 1, up to 510481
phi-phase 2 (improved with pairing & fft)
using pg=1024 -> pms: 9240
estimated memory usage: 807KB (0MB)
allowed memory usage : 1595976KB (1558MB)
Phase2: 503580/5000000
Phase2: 5234460/5000000
phi-phase 2, up to 5234460
Fibonacci-Phase is deactivated!
remaining number:
168055076046233870480888816687321 (33)
Starting factorization with ECM and MPQS for
168055076046233870480888816687321 (33)
ECM-Phase (standalone) completed.
MPQS multiplier set to 41
Calculating static factorbase.
Dynamic Factors are deactivated.
QSieve sieve method selector called.
Mon Jun  6 06:31:04 2005: 0{0,0,0,0,0,0,0}/600,0/0,0->{0/0/0} [-100000] -> ca. 0    %
sieved relations: 0 [nan per minute] #DYNFB: 0, countdown now: 522600
recalibrating MPQS thresholds
Best two physical sieve intervals are 0 and 2
Sieving complete intervals.
Mon Jun  6 06:31:04 2005: 542{543,0,0,0,0,0,0}/600,0/0,0->{0/0/0} [-100000] -> ca. 90.33%
sieved relations: 543 [inf per minute] #DYNFB: 0, countdown now: 522600

Found a suitable relation...

factor found!
1679066482202177 (16) * 100088399016709273 (18)
= 168055076046233870480888816687321 (33)
1679066482202177 (16) is a factor.
100088399016709273 (18) is a factor.
factorization successfully completed.
writing XML Status Report to "status.xml"

Factorization of P3000: 
[= 496025142797537184410324879054927095334462742231683423624 (57)]
= 2 (1)^3
* 11 (2)
* 4184373131 (10)
* 8015654311073 (13)  [phi1]
* 1679066482202177 (16)  [dmpqs]
* 100088399016709273 (18)  [dmpqs]
going down...

real    0m1.379s
user    0m1.345s
sys     0m0.014s
594 reinecke.users @ localhost:/tmpfs
>

Results

Qsieve can summarize the results of factorization efforts in XML status reports. As these status reports need to be processed using an XSL stylesheet, your browser must be capable of handling XML documents correctly. You can also configure your webserver to generate status reports for ongoing factorizations:

History

Qsieve stands for "Quadratic Sieve", which was the fastest general purpose factorization algorithm known in the 1980's. -- Back to my school time I was interested in prime numbers. And in 1992 I participated at a undergraduate seminar on "Prime numbers and public key cryptography" at the University of Passau during my studies of computer science. Around 1997 I read (by chance) some chapters of the fabulous book "Prime Numbers and Computer Methods for Factorization" (written by Hans Riesel) which gave me a good introduction to this subject. This was the starting point of Qsieve!

During my spare time I was reading more and more papers about factorization methods and related subjects. I dived deeper into matter and -- again by chance -- I studied the terrific dissertation "An FFT Extension of the Elliptic Curve Method of Factorization" (written by Peter Lawrence Montgomery, 1992).

ECM was the missing feature in my program, because most large numbers consist of medium sized factors, and the quadratic sieve algorithm has a running time depending on the size of the given number whereas ECM depends mostly on the size of the factors. So a combination of trial division, ecm, and finally the quadratic sieve is much more efficient in finding complete factorizations. I decided to implement other factorization algorithms as well.

But as the numbers grew larger and larger, another problem occurred: Somehow the factorization needed to be parallelized into a distributed client-server system, because I wasn't willing to spend weeks for a successful factorization. So -- with initial help from Frank Heyder (a fellow student, who introduced me in TCP and Unix network programming) -- I integrated tcp support to my program.

Then I improved the quadratic sieve algorithm (using some ideas I read in papers), so the main factorization algorithm of Qsieve began to shift into a dynamic double large prime variation of the multiple polynomial quadratic sieve algorithm, or shorthand: a variation of ppmpqs.

In the following years I improved my skills in programming C++ and multithreaded applications. I also wrote some assembly code (even using 3DNow! and SSE) for time-critical parts of Qsieve.

In 2004, I added XML status reports and wrote a php4 script to monitor a distributed factorization on the web by simply using a browser. This was done, because people are more motivated to participate in a factorization when they can watch the progress. You may take a look at this (static) demonstration, or you may contact me if you want to participate. (Or maybe you want to setup a Qsieve server yourself? The necessary php scripts are included in the tarball!)

I gave the idea some thoughts to implement the number field sieve, but this is complicated matter, at least if you want to develop a sophisticated version of GNFS...

Nevertheless: At its current state, Qsieve is able to factorize 110-digit composite numbers within a week on a small network of medium sized computers! -- And remember: Qsieve is scalable! And most composites have some factors less than 40 digits long which can be found by ecm, anyway!

Reference Guide

You want to get some idea of how Qsieve is implemented?
Take a look to the reference manual which was generated using Doxygen.

Contact

You're interested in participating?
or:

Drop me a line: qsieve@thorstenreinecke.de


Webmaster, 2004-08-06; last revised 2007-11-07