Example #1
0
 /// @param y  factor numbers <= y
 FactorTable(int64_t y)
 {
   if (y > max())
     throw primecount_error("y must be <= FactorTable::max().");
   y = std::max<int64_t>(8, y);
   T T_MAX = std::numeric_limits<T>::max();
   init_factors(y, T_MAX);
 }
Example #2
0
/* setup. Note: 'int param' must be another argument if modulii other than 2^61-1 will be used */
extern void init_rel_prime(REL_PRIME_TABLE * data, BigNum * maxval)
{
  /* modified by cmdavis */
  BigNum limit, num, denom;
  struct BIGNUM_ARRAY_TYPE the_primes;
	
  /* initialize 'data.power' */ 
  (*data).power = POWER_N;

  /* initialize 'data.valid' */
  (*data).valid = new BigNum[1];
  (*data).valid = maxval;

  /* initialize 'data.prim'  */
  (*data).prim = new BigNum[1];
  *((*data).prim) = Set_ui(PRIM);

  /* initialize 'data.magic' (density of relative primes) */
  (*data).magic = new BigRat[1];
  num = MAGIC_NUM;
  denom = MAGIC_DEN;
  (*((*data).magic)).br_set_num(num);
  (*((*data).magic)).br_set_den(denom);

  /* initialize 'data.the_primes[]' */
  (*data).the_primes = init_factors();

  /* initialize 'data.kill_us[]' */	
  (*data).kill_us.size = (*data).the_primes.size - MOST;

  if ((*data).kill_us.size < 0)           
    (*data).kill_us.size = 0;

  (*data).kill_us.list = (*data).the_primes.list;
 
  /* initialize 'data.denom[]' */ 
  the_primes = minus(&((*data).the_primes.list[(*data).kill_us.size]),
		     (*data).the_primes.size - (*data).kill_us.size); 

  /* define maximum value for which setup is valid */
  limit = guess_mu_inverse(maxval, (*data).magic);
  limit = limit * 2;
  (*data).denom = find_denom(the_primes.list, the_primes.size, &limit);

  limit.b_clear();
  num.b_clear();
  denom.b_clear();
  free_bn_array(&the_primes);
}
static void __init init_clk_top_div(struct clk_onecell_data *clk_data)
{
	init_factors(top_divs, ARRAY_SIZE(top_divs), clk_data);
}
static void __init init_clk_root_alias(struct clk_onecell_data *clk_data)
{
	init_factors(root_clk_alias, ARRAY_SIZE(root_clk_alias), clk_data);
}