Unit primesieve
Description
Pascal bindings for primesieve library.
primesieve - library for fast prime number generation.
Copyright (C) 2010 - 2021 Kim Walisch, <kim.walisch@gmail.com>
https://github.com/kimwalisch/primesieve
primesieve-pas - FPC/Delphi API for primesieve library.
Copyright (C) 2020 - 2021 I. Kakoulidis, <ioulianos.kakoulidis@hotmail.com>
https://github.com/JulStrat/primesieve-pas
This file is distributed under the BSD 2-Clause License.
Overview
Classes, Interfaces, Objects and Records
Name | Description |
---|---|
Record primesieve_iterator |
|
Record tuplets_iterator |
Functions and Procedures
function primesieve_generate_primes( start, stop: UInt64; var size: NativeUInt; ptype: Integer ): Pointer; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_generate_primes'; |
function primesieve_generate_n_primes( n: UInt64; start: UInt64; ptype: Integer ): Pointer; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_generate_n_primes'; |
function primesieve_nth_prime( n: Int64; start: UInt64 ): UInt64; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_nth_prime'; |
function primesieve_count_primes( start, stop: UInt64 ): UInt64; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_count_primes'; |
function primesieve_count_twins( start, stop: UInt64 ): UInt64; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_count_twins'; |
function primesieve_count_triplets( start, stop: UInt64 ): UInt64; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_count_triplets'; |
function primesieve_count_quadruplets( start, stop: UInt64 ): UInt64; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_count_quadruplets'; |
function primesieve_count_quintuplets( start, stop: UInt64 ): UInt64; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_count_quintuplets'; |
function primesieve_count_sextuplets( start, stop: UInt64 ): UInt64; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_count_sextuplets'; |
procedure primesieve_print_primes( start, stop: UInt64 ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_print_primes'; |
procedure primesieve_print_twins( start, stop: UInt64 ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_print_twins'; |
procedure primesieve_print_triplets( start, stop: UInt64 ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_print_triplets'; |
procedure primesieve_print_quadruplets( start, stop: UInt64 ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_print_quadruplets'; |
procedure primesieve_print_quintuplets( start, stop: UInt64 ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_print_quintuplets'; |
procedure primesieve_print_sextuplets( start, stop: UInt64 ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_print_sextuplets'; |
function primesieve_get_max_stop(): UInt64; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_get_max_stop'; |
function primesieve_get_sieve_size(): Integer; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_get_sieve_size'; |
function primesieve_get_num_threads(): Integer; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_get_num_threads'; |
procedure primesieve_set_sieve_size( sieve_size: Integer ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_set_sieve_size'; |
procedure primesieve_set_num_threads( num_threads: Integer ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_set_num_threads'; |
procedure primesieve_free( primes: Pointer ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_free'; |
function primesieve_version(): PAnsiChar; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_version'; |
procedure primesieve_init( var it: primesieve_iterator ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_init'; |
procedure primesieve_free_iterator( var it: primesieve_iterator ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_free_iterator'; |
procedure primesieve_skipto( var it: primesieve_iterator; start, stop_hint: UInt64 ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_skipto'; |
function primesieve_next_prime( var it: primesieve_iterator ): UInt64; inline; |
function primesieve_prev_prime( var it: primesieve_iterator ): UInt64; inline; |
procedure tuplets_init( var it: tuplets_iterator ); |
procedure tuplets_free( var it: tuplets_iterator ); |
procedure tuplets_skipto( var it: tuplets_iterator; start: UInt64 ); |
function tuplets_next_twin( var it: tuplets_iterator ): UInt64; |
function tuplets_next_triplet( var it: tuplets_iterator ): UInt64; |
function tuplets_next_quadruplet( var it: tuplets_iterator ): UInt64; |
function tuplets_next_quintuplet( var it: tuplets_iterator ): UInt64; |
function tuplets_next_sextuplet( var it: tuplets_iterator ): UInt64; |
Types
PUInt64 = ˆUInt64; |
PInt64 = ˆInt64; |
Constants
_PRIMESIEVE_VERSION = '7.7'; |
_PRIMESIEVE_VERSION_MAJOR = 7; |
_PRIMESIEVE_VERSION_MINOR = 7; |
_PRIMESIEVE_PAS_VERSION = '0.5.1'; |
_PRIMESIEVE_PAS_VERSION_MAJOR = 0; |
_PRIMESIEVE_PAS_VERSION_MINOR = 5; |
_PRIMESIEVE_PAS_VERSION_PATCH = 1; |
_PRIMESIEVE_ERROR = not UInt64(0); |
INT16_PRIMES = 8; |
UINT16_PRIMES = 9; |
INT32_PRIMES = 10; |
UINT32_PRIMES = 11; |
INT64_PRIMES = 12; |
UINT64_PRIMES = 13; |
Description
Functions and Procedures
function primesieve_generate_primes( start, stop: UInt64; var size: NativeUInt; ptype: Integer ): Pointer; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_generate_primes'; |
Get an array with the primes inside the interval [start, stop].
Parameters
|
function primesieve_generate_n_primes( n: UInt64; start: UInt64; ptype: Integer ): Pointer; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_generate_n_primes'; |
Get an array with the first n primes >= start. Parameters
|
function primesieve_nth_prime( n: Int64; start: UInt64 ): UInt64; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_nth_prime'; |
Find the nth prime. By default all CPU cores are used, use primesieve_set_num_threads to change the number of threads. Note that each call to primesieve_nth_prime incurs an initialization overhead of O(sqrt(start)) even if n is tiny. Hence it is not a good idea to use primesieve_nth_prime repeatedly in a loop to get the next (or previous) prime. For this use case it is better to use a primesieve_iterator which needs to be initialized only once. Parameters
|
function primesieve_count_primes( start, stop: UInt64 ): UInt64; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_count_primes'; |
Count the primes within the interval [start, stop]. By default all CPU cores are used, use primesieve_set_num_threads to change the number of threads. Note that each call to primesieve_count_primes incurs an initialization overhead of O(sqrt(stop)) even if the interval [start, stop] is tiny. Hence if you have written an algorithm that makes many calls to primesieve_count_primes it may be preferable to use a primesieve_iterator which needs to be initialized only once. |
function primesieve_count_twins( start, stop: UInt64 ): UInt64; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_count_twins'; |
Count the twin primes within the interval [start, stop]. By default all CPU cores are used, use primesieve_set_num_threads to change the number of threads. |
function primesieve_count_triplets( start, stop: UInt64 ): UInt64; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_count_triplets'; |
Count the prime triplets within the interval [start, stop]. By default all CPU cores are used, use primesieve_set_num_threads to change the number of threads. |
function primesieve_count_quadruplets( start, stop: UInt64 ): UInt64; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_count_quadruplets'; |
Count the prime quadruplets within the interval [start, stop]. By default all CPU cores are used, use primesieve_set_num_threads to change the number of threads. |
function primesieve_count_quintuplets( start, stop: UInt64 ): UInt64; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_count_quintuplets'; |
Count the prime quintuplets within the interval [start, stop]. By default all CPU cores are used, use primesieve_set_num_threads to change the number of threads. |
function primesieve_count_sextuplets( start, stop: UInt64 ): UInt64; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_count_sextuplets'; |
Count the prime sextuplets within the interval [start, stop]. By default all CPU cores are used, use primesieve_set_num_threads to change the number of threads. |
procedure primesieve_print_primes( start, stop: UInt64 ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_print_primes'; |
Print the primes within the interval [start, stop] to the standard output. |
procedure primesieve_print_twins( start, stop: UInt64 ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_print_twins'; |
Print the twin primes within the interval [start, stop] to the standard output. |
procedure primesieve_print_triplets( start, stop: UInt64 ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_print_triplets'; |
Print the prime triplets within the interval [start, stop] to the standard output. |
procedure primesieve_print_quadruplets( start, stop: UInt64 ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_print_quadruplets'; |
Print the prime quadruplets within the interval [start, stop] to the standard output. |
procedure primesieve_print_quintuplets( start, stop: UInt64 ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_print_quintuplets'; |
Print the prime quintuplets within the interval [start, stop] to the standard output. |
procedure primesieve_print_sextuplets( start, stop: UInt64 ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_print_sextuplets'; |
Print the prime sextuplets within the interval [start, stop] to the standard output. |
function primesieve_get_max_stop(): UInt64; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_get_max_stop'; |
Returns the largest valid stop number for primesieve. 2ˆ64-1 (UINT64_MAX) |
function primesieve_get_sieve_size(): Integer; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_get_sieve_size'; |
Get the current set sieve size in KiB. |
function primesieve_get_num_threads(): Integer; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_get_num_threads'; |
Get the current set number of threads. |
procedure primesieve_set_sieve_size( sieve_size: Integer ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_set_sieve_size'; |
Set the sieve size in KiB (kibibyte). The best sieving performance is achieved with a sieve size of your CPU's L1 or L2 cache size (per core). sieve_size >= 16 and <= 4096 |
procedure primesieve_set_num_threads( num_threads: Integer ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_set_num_threads'; |
Set the number of threads for use in primesieve_count_*() and primesieve_nth_prime. By default all CPU cores are used. |
procedure primesieve_free( primes: Pointer ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_free'; |
Deallocate a primes array created using the primesieve_generate_primes or primesieve_generate_n_primes functions. |
function primesieve_version(): PAnsiChar; cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_version'; |
Get the primesieve version number, in the form “i.j” |
procedure primesieve_init( var it: primesieve_iterator ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_init'; |
Initialize the primesieve iterator before first using it. |
procedure primesieve_free_iterator( var it: primesieve_iterator ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_free_iterator'; |
Free all iterator memory. |
procedure primesieve_skipto( var it: primesieve_iterator; start, stop_hint: UInt64 ); cdecl; external LIB_PRIMESIEVE name LIB_FNPFX + 'primesieve_skipto'; |
Reset the primesieve iterator to start.
Parameters
|
function primesieve_next_prime( var it: primesieve_iterator ): UInt64; inline; |
Get the next prime. Returns UINT64_MAX if next prime prime > 2ˆ64. |
function primesieve_prev_prime( var it: primesieve_iterator ): UInt64; inline; |
Get the previous prime. primesieve_prev_prime returns 0 for n <= 2. Note that primesieve_next_prime runs up to 2x faster than primesieve_prev_prime. Hence if the same algorithm can be written using either primesieve_prev_prime or primesieve_next_prime it is preferable to use primesieve_next_prime. |
procedure tuplets_init( var it: tuplets_iterator ); |
Initialize the prime tuplets iterator before first using it. |
procedure tuplets_free( var it: tuplets_iterator ); |
Free all prime tuplets iterator memory. |
procedure tuplets_skipto( var it: tuplets_iterator; start: UInt64 ); |
Reset the prime tuplets iterator to start. |
function tuplets_next_twin( var it: tuplets_iterator ): UInt64; |
Get next sequence of two primes of the form (p, p+2) |
function tuplets_next_triplet( var it: tuplets_iterator ): UInt64; |
Get next sequence of three primes of the form (p, p + 2, p + 6) or (p, p + 4, p + 6) |
function tuplets_next_quadruplet( var it: tuplets_iterator ): UInt64; |
Get next sequence of four primes of the form (p, p+2, p+6, p+8) |
function tuplets_next_quintuplet( var it: tuplets_iterator ): UInt64; |
Get next sequence of five primes of the form (p, p+2, p+6, p+8, p+12) or (p, p+4, p+6, p+10, p+12) |
function tuplets_next_sextuplet( var it: tuplets_iterator ): UInt64; |
Get next sequence of six primes of the form (p, p+4, p+6, p+10, p+12, p+16) |
Types
PUInt64 = ˆUInt64; |
PInt64 = ˆInt64; |
Constants
_PRIMESIEVE_VERSION = '7.7'; |
_PRIMESIEVE_VERSION_MAJOR = 7; |
_PRIMESIEVE_VERSION_MINOR = 7; |
_PRIMESIEVE_PAS_VERSION = '0.5.1'; |
Pascal API version |
_PRIMESIEVE_PAS_VERSION_MAJOR = 0; |
_PRIMESIEVE_PAS_VERSION_MINOR = 5; |
_PRIMESIEVE_PAS_VERSION_PATCH = 1; |
_PRIMESIEVE_ERROR = not UInt64(0); |
primesieve functions return PRIMESIEVE_ERROR (UINT64_MAX) if any error occurs. |
INT16_PRIMES = 8; |
Generate primes of Int16 (c int16_t) type |
UINT16_PRIMES = 9; |
Generate primes of UInt16 (c uint16_t) type |
INT32_PRIMES = 10; |
Generate primes of Int32 (c int32_t) type |
UINT32_PRIMES = 11; |
Generate primes of UInt32 (c uint32_t) type |
INT64_PRIMES = 12; |
Generate primes of Int64 (c int64_t) type |
UINT64_PRIMES = 13; |
Generate primes of UInt64 (c uint64_t) type |
Generated by PasDoc 0.16.0.