#ifndef __BEE2_PRI_H
#define __BEE2_PRI_H
#include "bee2/defs.h"
#ifdef __cplusplus
extern "C" {
#endif
size_t priBaseSize();
word priBasePrime(
size_t i
);
void priBaseMod(
word mods[],
const word a[],
size_t n,
size_t count
);
bool_t priIsSieved(
const word a[],
size_t n,
size_t base_count,
void* stack
);
size_t priIsSieved_deep(size_t base_count);
bool_t priIsSmooth(
const word a[],
size_t n,
size_t base_count,
void* stack
);
size_t priIsSmooth_deep(size_t n);
bool_t priIsPrimeW(
register word a,
void* stack
);
size_t priIsPrimeW_deep();
bool_t priRMTest(
const word a[],
size_t n,
size_t iter,
void* stack
);
size_t priRMTest_deep(size_t n);
bool_t priIsPrime(
const word a[],
size_t n,
void* stack
);
size_t priIsPrime_deep(size_t n);
bool_t priIsSGPrime(
const word q[],
size_t n,
void* stack
);
size_t priIsSGPrime_deep(size_t n);
bool_t priNextPrimeW(
word p[1],
word a,
void* stack
);
size_t priNextPrimeW_deep();
bool_t priNextPrime(
word p[],
const word a[],
size_t n,
size_t trials,
size_t base_count,
size_t iter,
void* stack
);
size_t priNextPrime_deep(size_t n, size_t base_count);
bool_t priExtendPrime(
word p[],
size_t l,
const word q[],
size_t n,
size_t trials,
size_t base_count,
gen_i rng,
void* rng_state,
void* stack
);
size_t priExtendPrime_deep(size_t l, size_t n, size_t base_count);
bool_t priExtendPrime2(
word p[],
size_t l,
const word q[],
size_t n,
const word a[],
size_t m,
size_t trials,
size_t base_count,
gen_i rng,
void* rng_state,
void* stack
);
size_t priExtendPrime2_deep(size_t l, size_t n, size_t m, size_t base_count);
#ifdef __cplusplus
}
#endif
#endif