8#ifndef SRC_LIB_FOUNDATIONS_NUMBER_THEORY_NUMBER_THEORY_H_
9#define SRC_LIB_FOUNDATIONS_NUMBER_THEORY_NUMBER_THEORY_H_
14namespace layer1_foundations {
15namespace number_theory {
84 int x1,
int y1,
int z1,
85 int x2,
int y2,
int z2,
86 int &x3,
int &y3,
int &z3,
int verbose_level);
91 int f_with_grid,
int f_with_points,
int point_density,
92 int f_path,
int start_idx,
int nb_steps,
95 int f_with_grid,
int f_with_points,
int point_density,
96 int f_path,
int start_idx,
int nb_steps,
99 int &a,
int &
b,
int verbose_level);
171 int k,
int q,
int verbose_level);
176 int &nb_add,
int &nb_negate,
int &nb_mult,
181 void paste(
int **Xr,
int **
X,
int s,
int verbose_level);
187 int nb,
int sz,
int *Result,
int verbose_level);
202 long int mod(
long int a,
long int p);
204 long int power_mod(
long int a,
long int n,
long int p);
206 long int mult_mod(
long int a,
long int b,
long int p);
207 long int add_mod(
long int a,
long int b,
long int p);
208 long int ab_over_c(
long int a,
long int b,
long int c);
210 long int gcd_lint(
long int m,
long int n);
213 long int &g,
long int &u,
long int &v);
215 long int a,
long int b,
int f_key,
int verbose_level);
239 int sp_ge(
int n,
int p_min);
240 int factor_int(
int a,
int *&primes,
int *&exponents);
241 void factor_lint(
long int a, std::vector<long int> &primes, std::vector<int> &exponents);
245 int Legendre(
long int a,
long int p,
int verbose_level);
246 int Jacobi(
long int a,
long int m,
int verbose_level);
248 long int a,
long int m,
int verbose_level);
250 long int a,
long int m,
int verbose_level);
252 int ny2(
long int x,
long int &x1);
253 int ny_p(
long int n,
long int p);
259 int &ct,
int &cb,
int verbose_level);
261 int &ct,
int &cb,
int verbose_level);
269 long int p1,
long int p2,
int verbose_level);
271 int f_latex, std::ostream &ost,
int verbose_level);
272 void sieve(std::vector<int> &primes,
273 int factorbase,
int verbose_level);
275 int from,
int to,
int limit,
int verbose_level);
278 int a,
int q,
int n,
int verbose_level);
281 int x1,
int x2,
int x3,
282 int y1,
int y2,
int y3,
283 int &z1,
int &z2,
int &z3,
int verbose_level);
286 int x1,
int y1,
int z1,
287 int &x3,
int &y3,
int &z3,
291 int x1,
int y1,
int z1,
292 int &x3,
int &y3,
int &z3,
295 int x,
int b,
int c);
297 int b,
int c,
int &nb,
int *&T,
int verbose_level);
299 int b,
int c,
int &order,
300 int x1,
int y1,
int z1,
301 std::vector<std::vector<int> > &Pts,
305 int x1,
int y1,
int z1,
306 int x3,
int y3,
int z3,
options for drawing an object of type layered_graph
a general 2D graphical output interface (metapost, tikz, postscript)
cyclotomic sets for cyclic codes
void print_latex_with_selection(std::ostream &ost, int *Selection, int nb_sel)
void print_latex(std::ostream &ost)
void init(field_theory::finite_field *F, int n, int verbose_level)
data_structures::set_of_sets * S
a fixed elliptic curve in Weierstrass form
int index_of_point(int x1, int x2, int x3)
void print_all_powers(int i)
void print_points_affine()
void latex_points_with_order(std::ostream &ost)
void compute_addition_table(int verbose_level)
void init(field_theory::finite_field *F, int b, int c, int verbose_level)
void save_incidence_matrix(std::string &fname, int verbose_level)
void add_point_to_table(int x, int y, int z)
void latex_order_of_all_points(std::ostream &ost)
void draw_grid(std::string &fname, graphics::layered_graph_draw_options *Draw_options, int f_with_grid, int f_with_points, int point_density, int f_path, int start_idx, int nb_steps, int verbose_level)
void make_affine_point(int x1, int x2, int x3, int &a, int &b, int verbose_level)
void addition(int x1, int y1, int z1, int x2, int y2, int z2, int &x3, int &y3, int &z3, int verbose_level)
void order_of_all_points(std::vector< int > &Ord)
int order_of_point(int i)
void draw_grid2(graphics::mp_graphics &G, int f_with_grid, int f_with_points, int point_density, int f_path, int start_idx, int nb_steps, int verbose_level)
field_theory::finite_field * F
void print_addition_table()
void compute_points(int verbose_level)
basic number theoretic functions
void factor_lint(long int a, std::vector< long int > &primes, std::vector< int > &exponents)
int random_integer_in_interval(int lower_bound, int upper_bound)
int sp_ge(int n, int p_min)
int Legendre_with_key_in_latex(std::ostream &ost, long int a, long int m, int verbose_level)
void sieve(std::vector< int > &primes, int factorbase, int verbose_level)
int Jacobi(long int a, long int m, int verbose_level)
int smallest_primedivisor(int n)
long int mod(long int a, long int p)
long int mult_mod(long int a, long int b, long int p)
void print_longfactorization(int nb_primes, ring_theory::longinteger_object *primes, int *exponents)
long int ChineseRemainder2(long int a1, long int a2, long int p1, long int p2, int verbose_level)
void do_eulerfunction_interval(long int n_min, long int n_max, int verbose_level)
void elliptic_curve_addition(field_theory::finite_field *F, int b, int c, int x1, int x2, int x3, int y1, int y2, int y3, int &z1, int &z2, int &z3, int verbose_level)
void elliptic_curve_all_point_multiples(field_theory::finite_field *F, int b, int c, int &order, int x1, int y1, int z1, std::vector< std::vector< int > > &Pts, int verbose_level)
int choose_a_prime_greater_than(int lower_bound)
void sieve_primes(std::vector< int > &v, int from, int to, int limit, int verbose_level)
long int gcd_with_key_in_latex(std::ostream &ost, long int a, long int b, int f_key, int verbose_level)
long int primitive_root_randomized(long int p, int verbose_level)
int random_integer_greater_than(int n, int lower_bound)
int choose_a_prime_in_interval(int lower_bound, int upper_bound)
long int gcd_lint(long int m, long int n)
int i_power_j_safe(int i, int j)
void elliptic_curve_point_multiple_with_log(field_theory::finite_field *F, int b, int c, int n, int x1, int y1, int z1, int &x3, int &y3, int &z3, int verbose_level)
long int power_mod(long int a, long int n, long int p)
int Legendre(long int a, long int p, int verbose_level)
void print_factorization(int nb_primes, int *primes, int *exponents)
void cyclotomic_set(std::vector< int > &cyclotomic_set, int a, int q, int n, int verbose_level)
int i_power_j(int i, int j)
long int ab_over_c(long int a, long int b, long int c)
long int i_power_j_lint(long int i, long int j)
int is_prime_power(int q)
long int add_mod(long int a, long int b, long int p)
int eulers_totient_function(int n, int verbose_level)
long int int_negate(long int a, long int p)
long int moebius_function(long int n)
int nb_primes_available()
void factor_prime_power(int q, int &p, int &e)
long int i_power_j_lint_safe(int i, int j, int verbose_level)
void extended_gcd_lint(long int m, long int n, long int &g, long int &u, long int &v)
void do_babystep_giantstep(long int p, long int g, long int h, int f_latex, std::ostream &ost, int verbose_level)
int elliptic_curve_discrete_log(field_theory::finite_field *F, int b, int c, int x1, int y1, int z1, int x3, int y3, int z3, int verbose_level)
void elliptic_curve_point_multiple(field_theory::finite_field *F, int b, int c, int n, int x1, int y1, int z1, int &x3, int &y3, int &z3, int verbose_level)
int ny2(long int x, long int &x1)
int lint_logq(long int n, int q)
long int primitive_root(long int p, int verbose_level)
int ny_p(long int n, long int p)
int int_logq(int n, int q)
long int euler_function(long int n)
void int_mult_fractions(int at, int ab, int bt, int bb, int &ct, int &cb, int verbose_level)
int Jacobi_with_key_in_latex(std::ostream &ost, long int a, long int m, int verbose_level)
int is_strict_prime_power(int q)
long int order_mod_p(long int a, long int p)
void elliptic_curve_points(field_theory::finite_field *F, int b, int c, int &nb, int *&T, int verbose_level)
int lint_log10(long int n)
int elliptic_curve_evaluate_RHS(field_theory::finite_field *F, int x, int b, int c)
void int_add_fractions(int at, int ab, int bt, int bb, int &ct, int &cb, int verbose_level)
long int int_abs(long int a)
int get_prime_from_table(int idx)
void extended_gcd_int(int m, int n, int &g, int &u, int &v)
long int inverse_mod(long int a, long int p)
int factor_int(int a, int *&primes, int *&exponents)
a class to represent arbitrary precision integers
the orbiter library for the classification of combinatorial objects