What's new in Primesieve 5.5
Nov 10, 2015
- This release contains many small incremental improvements. There are 2 minor backwards incompatible API changes which are described further down:
- primesieve GUI app: Runtime detection of CPU L1 cache size.
- primesieve.pc.in: Added support for pkg-config.
- appveyor.yml: Automated Windows (MSVC++) testing.
- README.md: New "Bindings for other languages" section.
- include/config.h: tune for Intel Skylake CPUs.
- include/WheelFactorization.hpp: Slightly faster initialization.
- src/primesieve/EratMedium.cpp: Unroll sieving loop, up to 5% speed up.
- src/primesieve/popcount.cpp: Faster popcount algorithm.
- examples/c/previous_prime.c: Shows how to use primesieve_previous_prime().
- C++ API changes:
- primesieve::test() has been renamed to primesieve::primesieve_test() in order to prevent naming collisions.
- primesieve::iterator::previous_prime() now returns 0 if input
New in Primesieve 5.4 (Sep 18, 2014)
- Fixed two bugs in the computation of prime k-tuplets.
New in Primesieve 5.3 (Jul 8, 2014)
- Fix use of uninitialized variable bug in primesieve::iterator: https://github.com/kimwalisch/primesieve/commit/006d572ea8fa4958eaf46c1db24c983b1ce27e1b
- README.md update: Explain how to build from master-branch.
- New file HACKING.md: Explains source tree, useful for developers.
New in Primesieve 5.2 (Apr 15, 2014)
- Added backwards nth prime search, if n < 0 primesieve::nth_prime(int64_t n, uint64_t start); will find the nth prime < start.
- Faster nth prime implementation, more accurate guessing of the nth prime gives up to 20% speed up if n < 10^8.
- Added continuous integration testing with Travis (travis-ci.org), files: .travis.yml, Readme.md (shows build status).
New in Primesieve 5.1 (Feb 15, 2014)
- and are now compatible with , fixed CALLBACK and max() issues.
- Fixed bug in primesieve::iterator::previous_prime().
- Fixed bug in primesieve_previous_prime().
- Added stop_hint optimization to primesieve::iterator which gives a significant speed up if only few primes are generated.
- Replaced GENERATE_PRIMES() macro by templatized callbackPrimes() method (src/primesieve/PrimeFinder.cpp).
New in Primesieve 5.0 (Feb 15, 2014)
- Includes C bindings for all of its functions.
- Features a new API.
- New primesieve::iterator class that provides next_prime() and previous_prime() methods.
- ParallelPrimeSieve now uses multi-threading by default, it does not care about arithmetic order anymore. Please do not use ParallelPrimeSieve directly anymore instead use the new API.
- Renamed src/soe to src/primesieve.
- Renamed PrimeSieveCallback class to Callback.
- Moved most header files to include/primesieve.
New in Primesieve 4.2 (Mar 11, 2013)
- libprimesieve generates (callback) primes up to 5% faster on little-endian CPUs (x86, x86-64) due to improved endiansafe_cast.h (src/soe).
- The best pre-sieve setting is now automatically chosen at runtime, this speeds up sieving small intervals.
- The Makefile now supports the Solaris OS.
- Updated documentation: README, INSTALL, doc/EXAMPLES, doc/FAQ and doc/LIBPRIMESIEVE. New files: AUTHORS and THANKS.
- Fixed a bug in the primesieve GUI code (doc/BUGS).
- Updated ExpressionParser.h (src/apps/*) to version 2.5.
- Added more example programs: examples/store_primes_in_vector.cpp and examples/nth_prime.cpp.
- Lots of refactoring to make the code easier to understand.
- API changes:
- The undocumented pre-sieve methods have been removed (pre-sieving is now automatically configured at runtime).
- void PrimeSieve::getPreSieve();
- void PrimeSieve::setPreSieve(int);
New in Primesieve 4.1 (Jan 17, 2013)
- New PrimeSieveCallback interface class that simplifies prime number generation with classes, see doc/USAGE_EXAMPLES.
- The primesieve console (terminal) application now supports GNU-style long options e.g. --size=256.
- Fixed a bug (for sizeof(int) > 4) in the bit population count algorithm, read BUGS file.
- Updated files: README, INSTALL, doc/USAGE_EXAMPLES.
- The Makefile now uses the system's default C++ compiler instead of GNU g++ which makes it more portable.
- The primesieve_error class has been moved into its own file src/soe/primesieve_error.h (previously PrimeSieve.h).
New in Primesieve 4.0 (Oct 23, 2012)
- Added support for OpenMP 2.*, useful for compilers that do not support OpenMP >= 3.0, e.g. MSVC, Apple g++.
- New examples directory with 12 simple example programs.
- New doc/API file that lists the public member functions of the
- PrimeSieve and ParallelPrimeSieve C++ classes.
- The Makefile is now POSIX compatible, it works with any POSIX shell e.g. sh, bash, ash, ksh, zsh, ...
- The Makefile now supports MinGW (with MSYS) and Cygwin.
- Fixed a shared libprimesieve bug (read doc/BUGS).
- Up to 10 percent faster prime number generation due to new internal 64-bit getNextPrime() (previously 32-bit).
- New unsynchronized ParallelPrimeSieve::generatePrimes() method that calls back primes in parallel (read USAGE_EXAMPLES).
- Faster thread synchronization in ParallelPrimeSieve, replaced slow OpenMP critical directive with faster omp_test_lock().
- Optimized prime k-tuplet (twin primes, ...) counting for out-of-order CPUs (src/soe/PrimeNumberFinder.cpp).
- New primesieve_error() exception used for all exceptions within PrimeSieve and ParallelPrimeSieve (read USAGE_EXAMPLES).
- New pre-sieve code (src/soe/PreSieve.cpp).
- Ported the primesieve GUI application from Qt 4 to Qt 5.
New in Primesieve 3.8 (Jul 16, 2012)
- Improved OOP design of WheelFactorization.h.
- Minor speed up for big sieving primes ~2% (src/soe/EratBig.cpp), reduced the number of operations in the main sieving loop.
- Minor speed up for small sieving primes ~3% (src/soe/EraSmall.cpp), new inner sieving loop without instruction dependencies that uses only 12 asm instructions (previously 16).
- Improved OpenMP load balance in src/soe/ParallelPrimeSieve.cpp.
- Improved code readability of EratSmall.cpp, EratMedium.cpp, EratBig.cpp, SieveOfEratosthenes.cpp and others.
- The Makefile now automatically detects the CPU's L1 data cache size on Unix-like OSes (Linux, Mac OS X).
- Renamed ./docs to ./doc
- Revised README.txt, added 7. Motivation.
- Updated INSTALL, LIBPRIMESIEVE and USAGE_EXAMPLES.
- Added version #defines to PrimeSieve.h, e.g. for this release:
- #define PRIMESIEVE_VERSION "3.8"
- #define PRIMESIEVE_MAJOR_VERSION 3
- #define PRIMESIEVE_MINOR_VERSION 8
- #define PRIMESIEVE_YEAR 2012
New in Primesieve 3.6 (May 4, 2012)
- Built with Intel C++ Compiler 12.1 (Composer XE 2011)
- Minor speed up for small sieving primes ~ 5%
New in Primesieve 3.0 (Jul 18, 2011)
- Improved thread scheduling (10 percent speed up)
- Faster initialization (20 percent speed up)
- Two new options: -o and -r
New in Primesieve 2.1 (Apr 19, 2011)
- Added an arithmetic expression parser to ease number input
- Supported operators: +,-,*,/,%,^,e
- Examples: 2^32, 1e18+2e10
- Fixed a lower bound bug present in version 1.0
- Use of threads (OpenMP) instead of processes