Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • autotooling
  • 0.9.2
  • 0.9.1
  • 0.9
  • 0.8
  • 0.7
  • 0.6
  • 0.5
  • 0.4.1
  • 0.4
  • 0.3
  • 0.2
  • 0.1
14 results

zn_poly

  • Clone with SSH
  • Clone with HTTPS
  • ===============================================================================
    
    zn_poly: a library for polynomial arithmetic (version 0.9)
    
    Copyright (C) 2007, 2008, David Harvey
    Copyright (C) 2018 David Harvey, E. M. Bray
    
    See the file COPYING for copyright and licensing information.
    
    ===============================================================================
    
    Installation instructions
    -------------------------
    
    (1) Unpack the tarball somewhere.
    
    
    (2) From the tarball directory, run the configure script, i.e.
    
       ./configure <options>
    
    This creates a makefile. Python must be available for this to work. The
    configure script doesn't do anything intelligent (like examine your system);
    it just writes the makefile based on the supplied options.
    
    Available options are the following:
    
    --cflags=<flags>
    
       Flags passed to gcc. Default is "-O2". You might need "-O2 -m64".
    
    --ldflags=<flags>
    
       Flags passed to linker. You might need "-m64", especially on some macs.
    
    --prefix=<path>
    
       Where to put zn_poly header and library files. Default is "/usr/local".
       The header file is stored at <path>/include. The library is stored at
       <path>/lib.
    
    --gmp-prefix=<path>
    
       Location of GMP include/library files (assumed to be under
       <path>/include and <path>/lib). Default is "/usr/local".
    
    --ntl-prefix=<path>
    
       Location of NTL include/library files (assumed to be under
       <path>/include and <path>/lib). This is only necessary if
       you want to build the profiling targets with NTL profiling support.
       Default is "/usr/local".
    
    --use-flint
    
       Use the FLINT library instead of GMP for large integer multiplication.
    
    --flint-prefix=<path>
    
       Location of FLINT include/library files (assumed to be under
       <path>/include and <path>/lib). Default is "/usr/local".
    
    --(en/dis)able-tuning
    
       Enable (the default) or disable automatic tuning.
    
    
    
    
    (3) (optional) Run "make tune" and then "tune/tune > src/tuning.c". This
        determines optimal tuning values on your platform and overwrites the
        tuning.c source file with the new values.
        
        This only works on platforms where cycle counter code is available
        (currently x86, x86_64 and powerpc). If you don't run "make tune", you'll
        just get some default tuning values that work well on my development
        machine.
    
        Note: Tuning is now always done by default as a prerequisite to other
        make targets; to disable it run ./configure with --disable-tuning
    
    
    (4) Run "make" to build the library.
    
    
    (5) Run "make install". This copies the library and include files to
        the requested destination directory.
    
    
    (6) (optional) Step (5) only installs the static version of the library.
        The makefile also has targets for shared libraries (you might need to add
        -fPIC to --cflags):
        
        * libzn_poly.dylib: for darwin
        * libzn_poly.dylib64: darwin, 64 bit
        * libzn_poly.so: linux
        * libzn_poly-0.9.so: linux, with sonames
        * cygzn_poly.dll: for cygwin
    
    
    
    ===============================================================================
    
    Other makefile targets
    ----------------------
    
    make demo/bernoulli/bernoulli
    
       An example program for computing bernoulli numbers mod p.
    
    make clean
    
       Remove all temporary files.
    
    make distclean
    
       Remove all temporary files including the generated makefile.
    
    make check
    
       Runs some quick tests to make sure that everything appears to be working.
    
    make test
    
       Builds a test program. Running "test/test all" runs the whole zn_poly test
       suite, which tests zn_poly much more thoroughly than "make check".
    
    make profile/mul-profile
    
       A program for profiling various polynomial multiplication algorithms over
       various modulus sizes and polynomial lengths.
    
    make profile/mul-profile-ntl
    
       As above, but also includes support for profiling NTL's multiplication.
    
    make profile/invert-profile
    make profile/invert-profile-ntl
    
       A program for profiling series inversion.
    
    make profile/negamul-profile
    
       A program for profiling various negacyclic multiplication algorithms.
       
    make profile/mulmid-profile
    
       A program for profiling various middle product algorithms.
    
    make profile/array-profile
    
       A program for profiling linear-time array functions, including butterfly
       routines used in the FFT multiplication routines, GMP's mpn_add and mpn_sub,
       and others.
    
    
    ===============================================================================