1 #ifndef LAS_SMALLSIEVE_HPP_ 2 #define LAS_SMALLSIEVE_HPP_ 3 4 #include <cstdarg> 5 #include <cstdio> 6 #include <vector> 7 #include "fb-types.h" // sublat_t 8 #include "fb.hpp" 9 #include "las-forwardtypes.hpp" 10 #include "macros.h" 11 class bucket_primes_t; 12 struct qlattice_basis; 13 struct small_sieve_data_t; 14 struct where_am_I; 15 16 /* Do not compute start positions for more than this number of bucket 17 * regions in advance. This defines the frequency of a synchronization 18 * point, so it should not be too small. Typically one set of start 19 * positions for one bucket region costs about 25k. 20 * 21 * This is capped to nb_buckets 22 */ 23 #define SMALL_SIEVE_START_POSITIONS_MAX_ADVANCE 1024 24 25 extern void small_sieve_info(const char * what, int side, small_sieve_data_t const & r); 26 extern int small_sieve_dump(FILE *, const char *, va_list); 27 extern void small_sieve_clear(small_sieve_data_t & ssd); 28 29 extern void small_sieve_init(small_sieve_data_t & ssd, 30 std::vector<fb_entry_general> const & resieved, 31 std::vector<fb_entry_general> const & rest, 32 int logI, 33 int side, 34 fb_factorbase::key_type const & fbK, 35 qlattice_basis const & Q, 36 double scale); 37 38 extern void small_sieve_start( 39 std::vector<spos_t> & ssdpos, 40 small_sieve_data_t & ssd, 41 unsigned int first_region_index, 42 int logI, sublat_t const & sl); 43 44 extern void small_sieve_prepare_many_start_positions( 45 small_sieve_data_t & ssd, 46 unsigned int first_region_index, 47 int nregions, 48 int logI, sublat_t const & sl); 49 50 extern void small_sieve_activate_many_start_positions(small_sieve_data_t & ssd); 51 52 extern void sieve_small_bucket_region(unsigned char *S, unsigned int N, 53 small_sieve_data_t const & ssd, 54 std::vector<spos_t> const & ssdpos, 55 int logI, sublat_t const & sl, 56 where_am_I & w); 57 58 extern void resieve_small_bucket_region (bucket_primes_t *BP, 59 unsigned char *S, 60 unsigned int N, 61 small_sieve_data_t & ssd, 62 std::vector<spos_t> const & ssdpos, 63 int logI, sublat_t const & sl, 64 where_am_I & w MAYBE_UNUSED); 65 66 #endif /* LAS_SMALLSIEVE_HPP_ */ 67