17namespace layer1_foundations {
18namespace field_theory {
232 f_rank_point_in_PG_given_as_pairs =
FALSE;
233 rank_point_in_PG_given_as_pairs_n = 0;
265 int argc, std::string *argv,
268 int f_v = (verbose_level >= 1);
273 cout <<
"finite_field_activity_description::read_arguments" << endl;
275 for (i = 0; i < argc; i++) {
277 if (ST.
stringcmp(argv[i],
"-cheat_sheet_GF") == 0) {
280 cout <<
"-cheat_sheet_GF " << endl;
284 else if (ST.
stringcmp(argv[i],
"-write_code_for_division") == 0) {
290 cout <<
"-write_code_for_division "
296 else if (ST.
stringcmp(argv[i],
"-polynomial_division") == 0) {
305 else if (ST.
stringcmp(argv[i],
"-extended_gcd_for_polynomials") == 0) {
314 else if (ST.
stringcmp(argv[i],
"-polynomial_mult_mod") == 0) {
320 cout <<
"-polynomial_mult_mod "
326 else if (ST.
stringcmp(argv[i],
"-Berlekamp_matrix") == 0) {
333 else if (ST.
stringcmp(argv[i],
"-normal_basis") == 0) {
340 else if (ST.
stringcmp(argv[i],
"-normalize_from_the_right") == 0) {
343 cout <<
"-normalize_from_the_right " << endl;
346 else if (ST.
stringcmp(argv[i],
"-normalize_from_the_left") == 0) {
349 cout <<
"-normalize_from_the_left " << endl;
352 else if (ST.
stringcmp(argv[i],
"-nullspace") == 0) {
359 else if (ST.
stringcmp(argv[i],
"-polynomial_find_roots") == 0) {
366 else if (ST.
stringcmp(argv[i],
"-RREF") == 0) {
373 else if (ST.
stringcmp(argv[i],
"-weight_enumerator") == 0) {
381 else if (ST.
stringcmp(argv[i],
"-Walsh_Hadamard_transform") == 0) {
386 cout <<
"-Walsh_Hadamard_transform "
392 else if (ST.
stringcmp(argv[i],
"-algebraic_normal_form") == 0) {
397 cout <<
"-algebraic_normal_form "
403 else if (ST.
stringcmp(argv[i],
"-apply_trace_function") == 0) {
407 cout <<
"-apply_trace_function "
413 else if (ST.
stringcmp(argv[i],
"-apply_power_function") == 0) {
418 cout <<
"-apply_power_function "
425 else if (ST.
stringcmp(argv[i],
"-identity_function") == 0) {
429 cout <<
"-identity_function "
435 else if (ST.
stringcmp(argv[i],
"-trace") == 0) {
438 cout <<
"-trace " << endl;
441 else if (ST.
stringcmp(argv[i],
"-norm") == 0) {
444 cout <<
"-norm " << endl;
448 else if (ST.
stringcmp(argv[i],
"-Walsh_matrix") == 0) {
456 else if (ST.
stringcmp(argv[i],
"-Vandermonde_matrix") == 0) {
459 cout <<
"-Vandermonde_matrix " << endl;
462 else if (ST.
stringcmp(argv[i],
"-search_APN_function") == 0) {
465 cout <<
"-search_APN_function " << endl;
470 else if (ST.
stringcmp(argv[i],
"-make_table_of_irreducible_polynomials") == 0) {
474 cout <<
"-make_table_of_irreducible_polynomials "
478 else if (ST.
stringcmp(argv[i],
"-EC_Koblitz_encoding") == 0) {
486 cout <<
"-EC_Koblitz_encoding "
491 else if (ST.
stringcmp(argv[i],
"-EC_points") == 0) {
497 cout <<
"-EC_points " <<
" " <<
EC_label <<
" " <<
EC_b <<
" " <<
EC_c << endl;
500 else if (ST.
stringcmp(argv[i],
"-EC_add") == 0) {
510 else if (ST.
stringcmp(argv[i],
"-EC_cyclic_subgroup") == 0) {
516 cout <<
"-EC_cyclic_subgroup " <<
" " <<
EC_b <<
" " <<
EC_c <<
" " <<
EC_pt_text << endl;
519 else if (ST.
stringcmp(argv[i],
"-EC_multiple_of") == 0) {
530 else if (ST.
stringcmp(argv[i],
"-EC_discrete_log") == 0) {
541 else if (ST.
stringcmp(argv[i],
"-EC_bsgs") == 0) {
549 cout <<
"-EC_baby_step_giant_step " <<
" " <<
EC_b <<
" " <<
EC_c <<
" "
555 else if (ST.
stringcmp(argv[i],
"-EC_bsgs_decode") == 0) {
564 cout <<
"-EC_baby_step_giant_step_decode "
573 else if (ST.
stringcmp(argv[i],
"-NTRU_encrypt") == 0) {
588 else if (ST.
stringcmp(argv[i],
"-polynomial_center_lift") == 0) {
595 else if (ST.
stringcmp(argv[i],
"-polynomial_reduce_mod_p") == 0) {
604 else if (ST.
stringcmp(argv[i],
"-cheat_sheet_PG") == 0) {
611 else if (ST.
stringcmp(argv[i],
"-cheat_sheet_Gr") == 0) {
621 else if (ST.
stringcmp(argv[i],
"-cheat_sheet_hermitian") == 0) {
628 else if (ST.
stringcmp(argv[i],
"-cheat_sheet_desarguesian_spread") == 0) {
635 else if (ST.
stringcmp(argv[i],
"-find_CRC_polynomials") == 0) {
641 cout <<
"-find_CRC_polynomials "
648 else if (ST.
stringcmp(argv[i],
"-sift_polynomials") == 0) {
653 cout <<
"-sift_polynomials "
659 else if (ST.
stringcmp(argv[i],
"-mult_polynomials") == 0) {
664 cout <<
"-mult_polynomials "
670 else if (ST.
stringcmp(argv[i],
"-polynomial_division_ranked") == 0) {
675 cout <<
"-polynomial_division_ranked "
681 else if (ST.
stringcmp(argv[i],
"-polynomial_division_from_file") == 0) {
686 cout <<
"-polynomial_division_from_file "
693 else if (ST.
stringcmp(argv[i],
"-polynomial_division_from_file_all_k_bit_error_patterns") == 0) {
699 cout <<
"-polynomial_division_from_file_all_k_bit_error_patterns "
708 else if (ST.
stringcmp(argv[i],
"-RREF_random_matrix") == 0) {
713 cout <<
"-RREF_demo "
725 else if (ST.
stringcmp(argv[i],
"-transversal") == 0) {
731 cout <<
"-transversal "
737 else if (ST.
stringcmp(argv[i],
"-intersection_of_two_lines") == 0) {
742 cout <<
"-intersection_of_two_lines "
748 else if (ST.
stringcmp(argv[i],
"-inverse_isomorphism_klein_quadric") == 0) {
752 cout <<
"-inverse_isomorphism_klein_quadric "
756 else if (ST.
stringcmp(argv[i],
"-rank_point_in_PG") == 0) {
763 else if (ST.
stringcmp(argv[i],
"-unrank_point_in_PG") == 0) {
773 else if (ST.
stringcmp(argv[i],
"-rank_point_in_PG_given_as_pairs") == 0) {
774 f_rank_point_in_PG_given_as_pairs =
TRUE;
775 rank_point_in_PG_given_as_pairs_n = ST.
strtoi(argv[++i]);
776 rank_point_in_PG_given_as_pairs_text.assign(argv[++i]);
778 cout <<
"-rank_point_in_PG " << rank_point_in_PG_given_as_pairs_n <<
" " << rank_point_in_PG_given_as_pairs_text << endl;
783 else if (ST.
stringcmp(argv[i],
"-field_reduction") == 0) {
791 cout <<
"-field_reduction "
799 else if (ST.
stringcmp(argv[i],
"-parse_and_evaluate") == 0) {
814 else if (ST.
stringcmp(argv[i],
"-product_of") == 0) {
822 else if (ST.
stringcmp(argv[i],
"-sum_of") == 0) {
830 else if (ST.
stringcmp(argv[i],
"-negate") == 0) {
838 else if (ST.
stringcmp(argv[i],
"-inverse") == 0) {
846 else if (ST.
stringcmp(argv[i],
"-power_map") == 0) {
858 else if (ST.
stringcmp(argv[i],
"-evaluate") == 0) {
868 else if (ST.
stringcmp(argv[i],
"-generator_matrix_cyclic_code") == 0) {
878 else if (ST.
stringcmp(argv[i],
"-nth_roots") == 0) {
885 else if (ST.
stringcmp(argv[i],
"-make_BCH_code") == 0) {
895 else if (ST.
stringcmp(argv[i],
"-make_BCH_code_and_encode") == 0) {
902 cout <<
"-make_BCH_code_and_encode "
910 else if (ST.
stringcmp(argv[i],
"-NTT") == 0) {
915 cout <<
"-NTT " <<
NTT_n
922 else if (ST.
stringcmp(argv[i],
"-end") == 0) {
924 cout <<
"-end" << endl;
929 cout <<
"finite_field_activity_description::read_arguments "
930 "unrecognized option " << argv[i] << endl;
935 cout <<
"finite_field_activity_description::read_arguments done" << endl;
943 cout <<
"-cheat_sheet_GF " << endl;
946 cout <<
"-write_code_for_division "
960 cout <<
"-polynomial_mult_mod "
972 cout <<
"-normalize_from_the_right " << endl;
975 cout <<
"-normalize_from_the_left " << endl;
991 cout <<
"-Walsh_Hadamard_transform "
997 cout <<
"-algebraic_normal_form "
1003 cout <<
"-apply_trace_function "
1009 cout <<
"-apply_power_function "
1016 cout <<
"-identity_function "
1022 cout <<
"-trace " << endl;
1025 cout <<
"-norm " << endl;
1032 cout <<
"-Vandermonde_matrix " << endl;
1035 cout <<
"-search_APN_function " << endl;
1039 cout <<
"-make_table_of_irreducible_polynomials "
1043 cout <<
"-EC_Koblitz_encoding "
1048 cout <<
"-EC_points " <<
" " <<
EC_label <<
" " <<
EC_b <<
" " <<
EC_c << endl;
1054 cout <<
"-EC_cyclic_subgroup " <<
" " <<
EC_b <<
" " <<
EC_c <<
" " <<
EC_pt_text << endl;
1061 cout <<
"-EC_discrete_log "
1069 cout <<
"-EC_baby_step_giant_step "
1078 cout <<
"-EC_baby_step_giant_step_decode "
1116 cout <<
"-find_CRC_polynomials "
1123 cout <<
"-sift_polynomials "
1129 cout <<
"-mult_polynomials "
1135 cout <<
"-polynomial_division_ranked "
1141 cout <<
"-polynomial_division_from_file "
1148 cout <<
"-polynomial_division_from_file_all_k_bit_error_patterns "
1157 cout <<
"-RREF_demo "
1169 cout <<
"-transversal "
1175 cout <<
"-intersection_of_two_lines "
1181 cout <<
"-inverse_isomorphism_klein_quadric "
1191 if (f_rank_point_in_PG_given_as_pairs) {
1192 cout <<
"-rank_point_in_PG " << rank_point_in_PG_given_as_pairs_n <<
" " << rank_point_in_PG_given_as_pairs_text << endl;
1196 cout <<
"-field_reduction "
1252 cout <<
"-make_BCH_code_and_encode "
1260 cout <<
"-NTT " <<
NTT_n
std::string unrank_point_in_PG_text
int read_arguments(int argc, std::string *argv, int verbose_level)
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
finite_field_activity_description()
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 nullspace_input_matrix
std::string polynomial_reduce_mod_p_A
~finite_field_activity_description()
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
the orbiter library for the classification of combinatorial objects