19namespace layer1_foundations {
20namespace field_theory {
39 int f_v = (verbose_level >= 1);
42 cout <<
"finite_field_activity::init" << endl;
48 cout <<
"finite_field_activity::init done" << endl;
54 int f_v = (verbose_level >= 1);
57 cout <<
"finite_field_activity::perform_activity" << endl;
255 cout <<
"Vandermonde:" << endl;
257 cout <<
"Vandermonde inverse:" << endl;
262 cout <<
"Vandermonde:" << endl;
264 cout <<
"$$" << endl;
265 cout <<
"\\left[" << endl;
267 cout <<
"\\right]" << endl;
268 cout <<
"$$" << endl;
270 cout <<
"Vandermonde inverse:" << endl;
271 cout <<
"$$" << endl;
272 cout <<
"\\left[" << endl;
274 cout <<
"\\right]" << endl;
275 cout <<
"$$" << endl;
280 cout <<
"too big to print" << endl;
395 cout <<
"please use option -draw_options .. -end" << endl;
423 cout <<
"F_secondary == NULL" << endl;
505 for (i = 0; i < m * n; i++) {
565 FALSE , verbose_level);
602 data, sz, verbose_level);
604 for (i = 0; i < sz; i++) {
609 cout <<
"the product is " << s << endl;
625 data, sz, verbose_level);
627 for (i = 0; i < sz; i++) {
632 cout <<
"the sum is " << s << endl;
649 data, sz, verbose_level);
650 for (i = 0; i < sz; i++) {
654 cout <<
"the negative of " << a <<
" is " << s << endl;
673 data, sz, verbose_level);
674 for (i = 0; i < sz; i++) {
678 cout <<
"the inverse of " << a <<
" is " << s << endl;
697 data, sz, verbose_level);
700 cout <<
"a : a^k" << endl;
703 for (i = 0; i < sz; i++) {
707 cout << a <<
" : " << s << endl;
718 cout <<
"before evaluate" << endl;
730 cout <<
"before generator_matrix_cyclic_code" << endl;
767 snprintf(title, 1000,
"Nth roots");
786 Nth->
report(ost, verbose_level);
793 cout <<
"Written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
801 coding_theory_domain Codes;
808 int *generator_polynomial;
816 cout <<
"generator polynomial is:" << endl;
820 cout <<
"\"" << endl;
823 cout <<
"-sparse \"";
825 cout <<
"\"" << endl;
832 generator_polynomial =
NEW_int(degree + 1);
833 for (i = 0; i <= degree; i++) {
834 generator_polynomial[i] = Nth->
FX->
s_i(P, i);
837 Codes.generator_matrix_cyclic_code(n,
838 degree, generator_polynomial, Genma);
843 cout <<
"generator matrix:" << endl;
862 fname.assign(
"genma_BCH");
863 sprintf(str,
"_n%d", n);
865 sprintf(str,
"_k%d", k);
867 sprintf(str,
"_q%d",
F->
q);
869 fname.append(
".csv");
873 cout <<
"Written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
880 snprintf(str, 1000,
"BCH_codes_q%d_n%d_d%d.tex",
896 snprintf(title, 1000,
"BCH codes");
915 C->
report(ost, verbose_level);
922 cout <<
"Written file " << fname <<
" of size " << Fio.
file_size(fname) << endl;
938 int *generator_polynomial;
947 cout <<
"generator polynomial is ";
952 generator_polynomial =
NEW_int(degree + 1);
953 for (i = 0; i <= degree; i++) {
954 generator_polynomial[i] = Nth->
FX->
s_i(P, i);
978 cout <<
"finite_field_activity::perform_activity done" << endl;
global functions related to finite fields, irreducible polynomials and such
void apply_power_function(field_theory::finite_field *F, std::string &fname_csv_in, long int d, int verbose_level)
void Walsh_matrix(field_theory::finite_field *F, int n, int *&W, int verbose_level)
void do_norm(field_theory::finite_field *F, int verbose_level)
void algebraic_normal_form(field_theory::finite_field *F, std::string &fname_csv_in, int n, int verbose_level)
void search_APN(field_theory::finite_field *F, int verbose_level)
void do_cheat_sheet_GF(field_theory::finite_field *F, int verbose_level)
void apply_trace_function(field_theory::finite_field *F, std::string &fname_csv_in, int verbose_level)
void apply_Walsh_Hadamard_transform(field_theory::finite_field *F, std::string &fname_csv_in, int n, int verbose_level)
void Vandermonde_matrix(field_theory::finite_field *F, int *&W, int *&W_inv, int verbose_level)
void do_trace(field_theory::finite_field *F, int verbose_level)
void identity_function(field_theory::finite_field *F, std::string &fname_csv_out, int verbose_level)
various functions related to coding theory
void field_reduction(field_theory::finite_field *FQ, field_theory::finite_field *Fq, std::string &label, int m, int n, std::string &genma_text, int verbose_level)
void CRC_encode_text(field_theory::nth_roots *Nth, ring_theory::unipoly_object &CRC_poly, std::string &text, std::string &fname, int verbose_level)
void find_CRC_polynomials(field_theory::finite_field *F, int t, int da, int dc, int verbose_level)
void generator_matrix_cyclic_code(field_theory::finite_field *F, int n, std::string &poly_coeffs, int verbose_level)
void do_weight_enumerator(field_theory::finite_field *F, int *M, int m, int n, int f_normalize_from_the_left, int f_normalize_from_the_right, int verbose_level)
void make_BCH_code(int n, field_theory::finite_field *F, int d, field_theory::nth_roots *&Nth, ring_theory::unipoly_object &P, int verbose_level)
void report(std::ostream &ost, int verbose_level)
void init(field_theory::finite_field *F, int n, int d, int verbose_level)
a collection of functions related to cryptography
void do_EC_discrete_log(field_theory::finite_field *F, int EC_b, int EC_c, std::string &base_pt_text, std::string &pt_text, int verbose_level)
void do_EC_Koblitz_encoding(field_theory::finite_field *F, int EC_b, int EC_c, int EC_s, std::string &pt_text, std::string &EC_message, int verbose_level)
void do_EC_baby_step_giant_step(field_theory::finite_field *F, int EC_b, int EC_c, std::string &EC_bsgs_G, int EC_bsgs_N, std::string &EC_bsgs_cipher_text, int verbose_level)
void NTRU_encrypt(int N, int p, field_theory::finite_field *Fq, std::string &H_coeffs, std::string &R_coeffs, std::string &Msg_coeffs, int verbose_level)
void do_EC_cyclic_subgroup(field_theory::finite_field *F, int EC_b, int EC_c, std::string &pt_text, int verbose_level)
void polynomial_center_lift(std::string &A_coeffs, field_theory::finite_field *F, int verbose_level)
void polynomial_reduce_mod_p(std::string &A_coeffs, field_theory::finite_field *F, int verbose_level)
void do_EC_baby_step_giant_step_decode(field_theory::finite_field *F, int EC_b, int EC_c, std::string &EC_bsgs_A, int EC_bsgs_N, std::string &EC_bsgs_cipher_text_T, std::string &EC_bsgs_keys, int verbose_level)
void do_EC_points(field_theory::finite_field *F, std::string &label, int EC_b, int EC_c, int verbose_level)
void do_EC_add(field_theory::finite_field *F, int EC_b, int EC_c, std::string &pt1_text, std::string &pt2_text, int verbose_level)
void do_EC_multiple_of(field_theory::finite_field *F, int EC_b, int EC_c, std::string &pt_text, int n, int verbose_level)
void print_integer_matrix_width(std::ostream &ost, int *p, int m, int n, int dim_n, int w)
a domain for things related to expression parsing
void parse_and_evaluate(field_theory::finite_field *F, std::string &name_of_formula, std::string &formula_text, std::string &managed_variables, int f_evaluate, std::string ¶meters, int verbose_level)
void evaluate(field_theory::finite_field *Fq, std::string &formula_label, std::string ¶meters, int verbose_level)
description of a finite field activity
long int mult_polynomials_r0
int f_cheat_sheet_desarguesian_spread
std::string write_code_for_division_B
long int mult_polynomials_r1
std::string field_reduction_label
int f_polynomial_division_from_file_all_k_bit_error_patterns
std::string polynomial_mult_mod_M
std::string apply_power_function_fname_csv_in
std::string polynomial_division_from_file_fname
std::string inverse_isomorphism_klein_quadric_matrix_A6
std::string transversal_line_1_basis
int f_generator_matrix_cyclic_code
std::string product_of_elements
int f_write_code_for_division
std::string Walsh_Hadamard_transform_fname_csv_in
int f_search_APN_function
int f_polynomial_division_ranked
int f_EC_Koblitz_encoding
std::string transversal_point
int f_make_BCH_code_and_encode
int cheat_sheet_hermitian_projective_dimension
int polynomial_division_from_file_all_k_bit_error_patterns_k
std::string rank_point_in_PG_label
std::string power_map_elements
int f_polynomial_mult_mod
int f_Walsh_Hadamard_transform
std::string write_code_for_division_fname
int f_find_CRC_polynomials
long int apply_power_function_d
std::string negate_elements
int f_make_table_of_irreducible_polynomials
std::string EC_bsgs_cipher_text
int f_polynomial_find_roots
std::string Berlekamp_matrix_coeffs
int f_normalize_from_the_right
int f_polynomial_center_lift
int f_polynomial_reduce_mod_p
std::string make_BCH_code_and_encode_text
std::string polynomial_division_A
int f_inverse_isomorphism_klein_quadric
int f_apply_trace_function
std::string polynomial_mult_mod_B
int Walsh_Hadamard_transform_n
int f_polynomial_division
int f_normalize_from_the_left
std::string EC_discrete_log_pt_text
long int sift_polynomials_r0
std::string make_BCH_code_and_encode_fname
std::string sum_of_elements
std::string NTRU_encrypt_Msg
int f_apply_power_function
int make_table_of_irreducible_polynomials_degree
std::string NTRU_encrypt_H
long int sift_polynomials_r1
std::string write_code_for_division_A
int f_EC_baby_step_giant_step
std::string field_reduction_text
std::string evaluate_formula_label
std::string identity_function_fname_csv_out
std::string transversal_line_2_basis
std::string evaluate_parameters
int polynomial_division_from_file_all_k_bit_error_patterns_r1
std::string polynomial_division_from_file_all_k_bit_error_patterns_fname
int cheat_sheet_desarguesian_spread_m
int find_CRC_polynomials_nb_errors
int f_algebraic_normal_form
std::string polynomial_reduce_mod_p_A
std::string apply_trace_function_fname_csv_in
long int polynomial_division_r0
int algebraic_normal_form_n
int generator_matrix_cyclic_code_n
std::string inverse_elements
int f_cheat_sheet_hermitian
std::string algebraic_normal_form_fname_csv_in
int f_extended_gcd_for_polynomials
std::string polynomial_mult_mod_A
std::string generator_matrix_cyclic_code_poly
int f_intersection_of_two_lines
std::string polynomial_find_roots_A
long int polynomial_division_from_file_r1
std::string NTRU_encrypt_R
int f_polynomial_division_from_file
std::string parse_name_of_formula
long int polynomial_division_r1
int f_EC_baby_step_giant_step_decode
std::string weight_enumerator_input_matrix
std::string polynomial_division_B
std::string parse_parameters
std::string polynomial_center_lift_A
int find_CRC_polynomials_check_bits
std::string parse_managed_variables
std::string RREF_input_matrix
int find_CRC_polynomials_information_bits
void perform_activity(int verbose_level)
void init(finite_field_activity_description *Descr, finite_field *F, int verbose_level)
finite_field * F_secondary
finite_field_activity_description * Descr
void finite_field_init(int q, int f_without_tables, int verbose_level)
the nth roots over Fq using an extension field
ring_theory::unipoly_domain * FX
void report(std::ostream &ost, int verbose_level)
void init(finite_field *F, int n, int verbose_level)
various functions related to geometries
void do_create_desarguesian_spread(field_theory::finite_field *FQ, field_theory::finite_field *Fq, int m, int verbose_level)
void do_cheat_sheet_hermitian(field_theory::finite_field *F, int projective_dimension, int verbose_level)
void do_transversal(field_theory::finite_field *F, std::string &line_1_basis, std::string &line_2_basis, std::string &point, int f_normalize_from_the_left, int f_normalize_from_the_right, int verbose_level)
void do_intersection_of_two_lines(field_theory::finite_field *F, std::string &line_1_basis, std::string &line_2_basis, int f_normalize_from_the_left, int f_normalize_from_the_right, int verbose_level)
void do_inverse_isomorphism_klein_quadric(field_theory::finite_field *F, std::string &inverse_isomorphism_klein_quadric_matrix_A6, int verbose_level)
void do_rank_points_in_PG(field_theory::finite_field *F, std::string &label, int verbose_level)
void do_cheat_sheet_Gr(field_theory::finite_field *F, int n, int k, int verbose_level)
void do_cheat_sheet_PG(field_theory::finite_field *F, graphics::layered_graph_draw_options *O, int n, int verbose_level)
options for drawing an object of type layered_graph
catch all class for linear algebra functions
void do_nullspace(field_theory::finite_field *F, int *M, int m, int n, int f_normalize_from_the_left, int f_normalize_from_the_right, int verbose_level)
void compute_normal_basis(field_theory::finite_field *F, int d, int verbose_level)
void Berlekamp_matrix(field_theory::finite_field *F, std::string &Berlekamp_matrix_coeffs, int verbose_level)
void RREF_demo(field_theory::finite_field *F, int *A, int m, int n, int verbose_level)
void do_RREF(field_theory::finite_field *F, int *M, int m, int n, int f_normalize_from_the_left, int f_normalize_from_the_right, int verbose_level)
basic number theoretic functions
a collection of functions related to file io
void int_matrix_write_csv(std::string &fname, int *M, int m, int n)
long int file_size(std::string &fname)
interface to create latex output files
void int_matrix_print_tex(std::ostream &ost, int *p, int m, int n)
void head(std::ostream &ost, int f_book, int f_title, const char *title, const char *author, int f_toc, int f_landscape, int f_12pt, int f_enlarged_page, int f_pagenumbers, const char *extras_for_preamble)
void foot(std::ostream &ost)
void get_vector_from_label(std::string &label, int *&v, int &sz, int verbose_level)
graphics::layered_graph_draw_options * draw_options
data_structures::int_vec * Int_vec
void get_matrix_from_label(std::string &label, int *&v, int &m, int &n)
interface to system functions
int random_integer(int p)
global functions related to ring theory
void polynomial_division_with_report(field_theory::finite_field *F, long int rk0, long int rk1, int verbose_level)
void polynomial_division_from_file_all_k_error_patterns_with_report(field_theory::finite_field *F, std::string &input_file, long int rk1, int k, int verbose_level)
void write_code_for_division(field_theory::finite_field *F, std::string &fname_code, std::string &A_coeffs, std::string &B_coeffs, int verbose_level)
void polynomial_division(field_theory::finite_field *F, std::string &A_coeffs, std::string &B_coeffs, int verbose_level)
void sift_polynomials(field_theory::finite_field *F, long int rk0, long int rk1, int verbose_level)
void do_make_table_of_irreducible_polynomials(field_theory::finite_field *F, int deg, int verbose_level)
void polynomial_division_from_file_with_report(field_theory::finite_field *F, std::string &input_file, long int rk1, int verbose_level)
void extended_gcd_for_polynomials(field_theory::finite_field *F, std::string &A_coeffs, std::string &B_coeffs, int verbose_level)
void mult_polynomials(field_theory::finite_field *F, long int rk0, long int rk1, int verbose_level)
void polynomial_mult_mod(field_theory::finite_field *F, std::string &A_coeffs, std::string &B_coeffs, std::string &M_coeffs, int verbose_level)
void polynomial_find_roots(field_theory::finite_field *F, std::string &A_coeffs, int verbose_level)
void print_object_dense(unipoly_object p, std::ostream &ost)
int & s_i(unipoly_object p, int i)
int degree(unipoly_object p)
void print_object_sparse(unipoly_object p, std::ostream &ost)
void print_object(unipoly_object p, std::ostream &ost)
#define Int_matrix_print(A, B, C)
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
the orbiter library for the classification of combinatorial objects