8#ifndef SRC_LIB_FOUNDATIONS_ORTHOGONAL_ORTHOGONA_H_
9#define SRC_LIB_FOUNDATIONS_ORTHOGONAL_ORTHOGONA_H_
12namespace layer1_foundations {
13namespace orthogonal_geometry {
54 long int *points,
int nb_points,
int *point_color,
58 long int *starter,
int starter_sz,
59 long int special_line,
60 long int *candidates,
int nb_candidates,
61 int *&point_color,
int &nb_colors,
64 long int *candidates,
int nb_candidates,
65 long int *good_candidates,
int &nb_good_candidates,
67 int pair_test(
int a,
int x,
int y,
int verbose_level);
70 void print(std::ostream &ost,
long int *S,
int len);
72 long int *&free_pts,
int *&free_pt_idx,
int &nb_free_pts,
75 int case_number,
int nb_cases_total,
76 long int *Starter_set,
int starter_size,
77 long int *candidates,
int nb_candidates,
78 int f_eliminate_graphs_if_possible,
123 void compute(
int verbose_level);
124 void latex(std::ostream &ost,
int verbose_level);
143 int *v,
int stride,
int epsilon,
int k,
144 int c1,
int c2,
int c3,
long int a,
int verbose_level);
146 int *v,
int stride,
int epsilon,
int k,
147 int c1,
int c2,
int c3,
int verbose_level);
149 void Q_unrank(
int *v,
int stride,
int k,
long int a,
int verbose_level);
150 long int Q_rank(
int *v,
int stride,
int k,
int verbose_level);
151 void Q_unrank_directly(
int *v,
int stride,
int k,
long int a,
int verbose_level);
154 long int Q_rank_directly(
int *v,
int stride,
int k,
int verbose_level);
155 void Qplus_unrank(
int *v,
int stride,
int k,
long int a,
int verbose_level);
158 long int Qplus_rank(
int *v,
int stride,
int k,
int verbose_level);
160 int stride,
int k,
long int a,
161 int c1,
int c2,
int c3,
int verbose_level);
168 int k,
int c1,
int c2,
int c3,
int verbose_level);
169 void S_unrank(
int *v,
int stride,
int n,
long int a);
170 void S_rank(
int *v,
int stride,
int n,
long int &a);
171 void N_unrank(
int *v,
int stride,
int n,
long int a);
172 void N_rank(
int *v,
int stride,
int n,
long int &a);
173 void N1_unrank(
int *v,
int stride,
int n,
long int a);
174 void N1_rank(
int *v,
int stride,
int n,
long int &a);
175 void Sbar_unrank(
int *v,
int stride,
int n,
long int a,
int verbose_level);
176 void Sbar_rank(
int *v,
int stride,
int n,
long int &a,
int verbose_level);
177 void Nbar_unrank(
int *v,
int stride,
int n,
long int a);
178 void Nbar_rank(
int *v,
int stride,
int n,
long int &a);
310 void fill(
long int *M,
int i,
int j,
long int a);
315 long int *line,
int verbose_level);
317 long int *line,
int verbose_level);
319 int *pt_coords,
int verbose_level);
321 long int *line_pencil_point_ranks,
int verbose_level);
323 int *line_pencil_line_ranks,
int verbose_level);
325 long int *line_pencil_line_ranks,
int verbose_level);
329 long int *point_ranks,
int *&line_vector,
343 void perp(
long int pt,
long int *Perp_without_pt,
int &sz,
346 int &sz,
int verbose_level);
348 int &sz,
int verbose_level);
359 int BLT_test_full(
int size,
long int *set,
int verbose_level);
360 int BLT_test(
int size,
long int *set,
int verbose_level);
365 int &nb_planes,
int *&intersection_matrix,
366 int &Block_size,
int *&Blocks,
374 long int find_root(
long int rk2,
int verbose_level);
376 long int rk_from,
long int rk_to,
long int root,
int verbose_level);
378 long int rk_from,
long int rk_to,
long int root,
379 int m,
int verbose_level);
381 long int rk_from,
long int rk_to,
long int root,
385 long int rk_from,
long int rk_to,
long int root,
386 int *
B,
int *Bv,
int *w,
int *z,
int *x,
389 int *from,
int *to,
int *root,
390 int *
B,
int *Bv,
int *w,
int *z,
int *x,
393 int f_action_is_semilinear,
397 int f_semisimilarity,
398 int *Mtx,
int verbose_level);
414 int n,
int *Gram,
int verbose_level);
422 int *v,
int *w,
int verbose_level);
424 int *w,
int *v,
int verbose_level);
430 long int pt_from,
long int pt_to,
431 int nb,
long int *ranks,
int verbose_level);
433 int nb,
long int *input_ranks,
long int *output_ranks,
436 int nb,
int *input_coords,
int *output_coords,
444 long int index,
int verbose_level);
446 long int &type,
long int &index);
449 long int rk,
int verbose_level);
468 long int pt1,
long int pt2,
long int &cpt1,
long int &cpt2,
479 int pt1_type,
int pt2_type);
486 int *x,
int *y,
int *z,
int verbose_level);
500 void report_lines(std::ostream &ost,
int verbose_level);
506 void report(std::ostream &ost,
int verbose_level);
515 int index,
int verbose_level);
517 int index,
int verbose_level);
521 long int index,
int verbose_level);
523 int *v,
int verbose_level);
525 int *v,
int verbose_level);
527 long int &type,
long int &index,
int verbose_level);
529 long int &type,
long int &index,
int verbose_level);
531 long int &type,
long int &index,
int verbose_level);
533 long int &type,
long int &index,
int verbose_level);
535 long int &type,
long int &index,
int verbose_level);
538 int *v,
int verbose_level);
542 int *v,
int verbose_level);
546 int *v,
int verbose_level);
550 int *v,
int verbose_level);
554 int *v,
int verbose_level);
558 int *v,
int verbose_level);
563 long int rk,
int verbose_level);
566 long int index,
int verbose_level);
570 long int index,
int verbose_level);
574 long int index,
int verbose_level);
576 long int index,
int verbose_level);
582 long int index,
int verbose_level);
585 long int index,
int verbose_level);
588 long int index,
int verbose_level);
591 long int index,
int verbose_level);
595 long int index,
int verbose_level);
599 long int index,
int verbose_level);
603 long int pt1_type,
long int pt2_type,
int verbose_level);
612 int *x,
int *y,
int *z,
int verbose_level);
615 int line_type,
long int pt1,
long int pt2,
616 long int &cpt1,
long int &cpt2,
int verbose_level);
618 long int pt1,
long int pt2,
long int &cpt1,
long int &cpt2);
620 long int pt1,
long int pt2,
long int &cpt1,
long int &cpt2);
622 long int pt1,
long int pt2,
long int &cpt1,
long int &cpt2);
624 long int pt1,
long int pt2,
long int &cpt1,
long int &cpt2);
626 long int pt1,
long int pt2,
long int &cpt1,
long int &cpt2);
628 int *u,
int *v,
int stride,
int m);
632 int &f_start_with_one,
int &value_middle,
int &value_end,
640 int stride,
long int rk,
int verbose_level);
641 long int rank_point(
int *v,
int stride,
int verbose_level);
643 long int index,
int verbose_level);
644 long int rank_line(
long int p1,
long int p2,
int verbose_level);
646 long int pt1_type,
long int pt2_type);
648 long int index,
int verbose_level);
650 long int &type,
long int &index,
int verbose_level);
652 long int &cpt1,
long int &cpt2,
int verbose_level);
653 void unrank_S(
int *v,
int stride,
int m,
int rk);
654 long int rank_S(
int *v,
int stride,
int m);
655 void unrank_N(
int *v,
int stride,
int m,
long int rk);
656 long int rank_N(
int *v,
int stride,
int m);
657 void unrank_N1(
int *v,
int stride,
int m,
long int rk);
658 long int rank_N1(
int *v,
int stride,
int m);
659 void unrank_Sbar(
int *v,
int stride,
int m,
long int rk);
660 long int rank_Sbar(
int *v,
int stride,
int m);
661 void unrank_Nbar(
int *v,
int stride,
int m,
long int rk);
662 long int rank_Nbar(
int *v,
int stride,
int m);
721 int f_sum_of_squares,
int verbose_level);
723 long int *ranks,
int verbose_level);
725 int *unusual_coordinates,
int verbose_level);
730 int *usual_coordinates,
int verbose_level);
733 int *unusual_coordinates,
int verbose_level);
739 int bilinear_form(
int a1,
int b1,
int c1,
int a2,
int b2,
int c2,
744 int gamma,
int delta,
int m,
long int *Set,
745 int f_second_half,
int verbose_level);
747 int gamma,
int delta,
int offset,
int m,
long int *Set,
748 int f_second_half,
int verbose_level);
750 int gamma,
int delta,
int offset,
int m,
long int *Set,
751 int f_second_half,
int f_test,
int verbose_level);
753 int gamma,
int delta,
int m,
long int *Set,
754 int f_test,
int verbose_level);
756 int *M4,
int *M5,
int verbose_level);
758 int *M5,
int *M4,
int verbose_level);
761 int &a,
int &b,
int &c,
int &d,
762 int &f_semi1,
int &f_semi2,
int &f_semi3,
int &f_semi4);
764 int a,
int b,
int c,
int d,
765 int f_semi1,
int f_semi2,
int f_semi3,
int f_semi4,
compact storage of 0/1-data as bitvectors
data structure for set partitions following Jeffrey Leon
decomposition of an incidence matrix
to rank and unrank subspaces of a fixed dimension in F_q^n
projective space PG(n,q) of dimension n over Fq
a graph with a vertex coloring
int pair_test(int a, int x, int y, int verbose_level)
void early_test_func(long int *S, int len, long int *candidates, int nb_candidates, long int *good_candidates, int &nb_good_candidates, int verbose_level)
int collinearity_test(long int *S, int len, int verbose_level)
void compute_adjacency_list_fast(int first_point_of_starter, long int *points, int nb_points, int *point_color, data_structures::bitvector *&Bitvec, int verbose_level)
geometry::projective_space * P
void init(orthogonal *O, int verbose_level)
field_theory::finite_field * F
void find_free_points(long int *S, int S_sz, long int *&free_pts, int *&free_pt_idx, int &nb_free_pts, int verbose_level)
void compute_colors(int orbit_at_level, long int *starter, int starter_sz, long int special_line, long int *candidates, int nb_candidates, int *&point_color, int &nb_colors, int verbose_level)
void print(std::ostream &ost, long int *S, int len)
geometry::grassmann * G53
int f_orthogonal_allocated
int create_graph(int case_number, int nb_cases_total, long int *Starter_set, int starter_size, long int *candidates, int nb_candidates, int f_eliminate_graphs_if_possible, graph_theory::colored_graph *&CG, int verbose_level)
int check_conditions(int len, long int *S, int verbose_level)
invariants of a BLT-sets in Q(4,q)
geometry::decomposition * D2
void latex(std::ostream &ost, int verbose_level)
void init(blt_set_domain *D, long int *the_set, int verbose_level)
long int * the_set_in_orthogonal
void compute(int verbose_level)
data_structures::set_of_sets * Sos2
int * intersection_matrix
int highest_intersection_number
data_structures::set_of_sets * Sos3
data_structures::set_of_sets * Sos
geometry::decomposition * D3
indexing of points in an orthogonal geometry O^epsilon(n,q)
void S_unrank(int *v, int stride, int n, long int a)
long int Q_rank_directly(int *v, int stride, int k, int verbose_level)
void Q_epsilon_unrank(int *v, int stride, int epsilon, int k, int c1, int c2, int c3, long int a, int verbose_level)
void Sbar_rank(int *v, int stride, int n, long int &a, int verbose_level)
void Q_unrank(int *v, int stride, int k, long int a, int verbose_level)
void N1_unrank(int *v, int stride, int n, long int a)
long int Qplus_rank(int *v, int stride, int k, int verbose_level)
void init(field_theory::finite_field *F, int verbose_level)
long int Q_epsilon_rank(int *v, int stride, int epsilon, int k, int c1, int c2, int c3, int verbose_level)
void Nbar_rank(int *v, int stride, int n, long int &a)
void Qminus_unrank(int *v, int stride, int k, long int a, int c1, int c2, int c3, int verbose_level)
field_theory::finite_field * F
void S_rank(int *v, int stride, int n, long int &a)
void Qplus_unrank(int *v, int stride, int k, long int a, int verbose_level)
void N_unrank(int *v, int stride, int n, long int a)
void N_rank(int *v, int stride, int n, long int &a)
long int Qminus_rank(int *v, int stride, int k, int c1, int c2, int c3, int verbose_level)
long int Q_rank(int *v, int stride, int k, int verbose_level)
void N1_rank(int *v, int stride, int n, long int &a)
void Sbar_unrank(int *v, int stride, int n, long int a, int verbose_level)
void Q_unrank_directly(int *v, int stride, int k, long int a, int verbose_level)
void Nbar_unrank(int *v, int stride, int n, long int a)
an orthogonal geometry O^epsilon(n,q)
long int rank_Nbar(int *v, int stride, int m)
void parabolic_neighbor54_unrank(long int index, int *v, int verbose_level)
int parabolic_decide_P11_odd(long int pt1, long int pt2)
int test_if_minimal_on_line(int *v1, int *v2, int *v3)
long int rank_line_L7(long int p1, long int p2, int verbose_level)
long int parabolic_neighbor51_odd_rank(int *v, int verbose_level)
void init_parabolic_odd(int verbose_level)
void unrank_N1(int *v, int stride, int m, long int rk)
int evaluate_hyperbolic_quadratic_form(int *v, int stride, int m)
long int parabolic_rank_line_L1_even(long int p1, long int p2, int verbose_level)
void list_points_of_given_type(int t, int verbose_level)
long int rank_point(int *v, int stride, int verbose_level)
void parabolic_odd_type2_index_to_point(long int index, int *v, int verbose_level)
void points_on_line_by_line_rank(long int line_rk, long int *line, int verbose_level)
void parabolic_unrank_line(long int &p1, long int &p2, long int rk, int verbose_level)
void report_schemes(std::ostream &ost, int verbose_level)
void parabolic_canonical_points_L8(long int pt1, long int pt2, long int &cpt1, long int &cpt2)
void find_minimal_point_on_line(int *v1, int *v2, int *v3)
void list_points_vs_points(int t1, int t2, int verbose_level)
int parabolic_decide_P35(long int pt1, long int pt2)
void Siegel_move_backward_by_index(long int rk1, long int rk2, int *w, int *v, int verbose_level)
long int hyperbolic_rank_line(long int p1, long int p2, int verbose_level)
field_theory::finite_field * F
void lines_on_point_by_line_rank(long int pt, long int *line_pencil_line_ranks, int verbose_level)
void canonical_points_L7(long int pt1, long int pt2, long int &cpt1, long int &cpt2)
void Siegel_move_forward_by_index(long int rk1, long int rk2, int *v, int *w, int verbose_level)
long int parabolic_neighbor34_rank(int *v, int verbose_level)
void test_Siegel(int index, int verbose_level)
long int parabolic_odd_type_and_index_to_point_rk(long int type, long int index, int verbose_level)
void Siegel_Transformation3(int *T, int *from, int *to, int *root, int *B, int *Bv, int *w, int *z, int *x, int verbose_level)
void find_root_parabolic_xyz(long int rk2, int *x, int *y, int *z, int verbose_level)
void Siegel_Transformation(int *T, long int rk_from, long int rk_to, long int root, int verbose_level)
void canonical_points_L3(long int pt1, long int pt2, long int &cpt1, long int &cpt2)
void parabolic_unrank_line_L2_odd(long int &p1, long int &p2, long int index, int verbose_level)
int evaluate_hyperbolic_bilinear_form(int *u, int *v, int stride, int m)
void parabolic_even_type2_index_to_point(int index, int *v)
int parabolic_decide_P44(long int pt1, long int pt2)
void init_decomposition(int verbose_level)
int hyperbolic_decide_P3(long int pt1, long int pt2)
int is_zero_vector(int *u, int stride, int len)
void parabolic_canonical_points_L7(long int pt1, long int pt2, long int &cpt1, long int &cpt2)
void random_generator_for_orthogonal_group(int f_action_is_semilinear, int f_siegel, int f_reflection, int f_similarity, int f_semisimilarity, int *Mtx, int verbose_level)
void parabolic_odd_type1_index_to_point(long int index, int *v, int verbose_level)
void unrank_point(int *v, int stride, long int rk, int verbose_level)
void unrank_Nbar(int *v, int stride, int m, long int rk)
void move_points(long int pt_from, long int pt_to, int nb, int *input_coords, int *output_coords, int verbose_level)
void create_Law_71_BLT_set(long int *set, int verbose_level)
int parabolic_type_and_index_to_point_rk(int type, int index, int verbose_level)
int evaluate_bilinear_form_by_rank(int i, int j)
void create_FTWKB_BLT_set(long int *set, int *ABC, int verbose_level)
void create_latex_report(int verbose_level)
void Gauss_step(int *v1, int *v2, int len, int idx)
void fill(long int *M, int i, int j, long int a)
long int parabolic_neighbor53_rank(int *v, int verbose_level)
void report(std::ostream &ost, int verbose_level)
int hyperbolic_decide_P2(long int pt1, long int pt2)
void canonical_points_L4(long int pt1, long int pt2, long int &cpt1, long int &cpt2)
void report_points_of_given_type(std::ostream &ost, int t, int verbose_level)
void create_random_similarity(int *Mtx, int verbose_level)
void parabolic_neighbor52_even_unrank(long int index, int *v, int verbose_level)
void parabolic_neighbor51_odd_unrank(long int index, int *v, int verbose_level)
long int rank_line_L5(long int p1, long int p2, int verbose_level)
void make_fname_incidence_matrix_csv(std::string &fname)
int collinearity_test(int size, long int *set, int verbose_level)
long int parabolic_rank_line_L6(long int p1, long int p2, int verbose_level)
void create_LP_37_4a_BLT_set(long int *set, int verbose_level)
void perp_of_k_points(long int *pts, int nb_pts, long int *&Perp, int &sz, int verbose_level)
long int parabolic_rank_line(long int p1, long int p2, int verbose_level)
void parabolic_even_point_to_type_and_index(int *v, long int &type, long int &index, int verbose_level)
void change_form_value(int *u, int stride, int m, int multiplier)
void canonical_points_L1(long int pt1, long int pt2, long int &cpt1, long int &cpt2)
int hyperbolic_decide_P1(long int pt1, long int pt2)
void unrank_N(int *v, int stride, int m, long int rk)
void canonical_points_L2(long int pt1, long int pt2, long int &cpt1, long int &cpt2)
void hyperbolic_canonical_points_of_line(int line_type, long int pt1, long int pt2, long int &cpt1, long int &cpt2, int verbose_level)
void unrank_Sbar(int *v, int stride, int m, long int rk)
void parabolic_point_properties(int *v, int stride, int n, int &f_start_with_one, int &value_middle, int &value_end, int verbose_level)
void create_LP_37_72_BLT_set(long int *set, int verbose_level)
void init_parabolic_even(int verbose_level)
int hyperbolic_line_type_given_point_types(long int pt1, long int pt2, int pt1_type, int pt2_type)
long int parabolic_rank_line_L4(long int p1, long int p2, int verbose_level)
long int rank_line_L6(long int p1, long int p2, int verbose_level)
void parabolic_neighbor34_unrank(long int index, int *v, int verbose_level)
void lines_on_point_by_line_rank_must_fit_into_int(long int pt, int *line_pencil_line_ranks, int verbose_level)
int find_root_hyperbolic(long int rk2, int m, int verbose_level)
void Siegel_map_between_singular_points_hyperbolic(int *T, long int rk_from, long int rk_to, long int root, int m, int verbose_level)
void hyperbolic_point_rk_to_type_and_index(long int rk, long int &type, long int &index)
long int parabolic_rank_line_L8(long int p1, long int p2, int verbose_level)
void parabolic_unrank_line_L1_odd(long int &p1, long int &p2, long int index, int verbose_level)
void unrank_line_L7(long int &p1, long int &p2, long int index, int verbose_level)
void create_random_semisimilarity(int *Mtx, int verbose_level)
void parabolic_canonical_points_L3(long int pt1, long int pt2, long int &cpt1, long int &cpt2)
long int parabolic_neighbor54_rank(int *v, int verbose_level)
void report_points(std::ostream &ost, int verbose_level)
long int hyperbolic_type_and_index_to_point_rk(long int type, long int index, int verbose_level)
long int rank_line(long int p1, long int p2, int verbose_level)
int parabolic_is_middle_dependent(int *vec1, int *vec2)
void Siegel_move_backward(int *v1, int *v2, int *v3, int *v4, int verbose_level)
long int rank_line_L4(long int p1, long int p2, int verbose_level)
int * index_minus_square_without
void parabolic_unrank_line_L3(long int &p1, long int &p2, long int index, int verbose_level)
void canonical_points_L5(long int pt1, long int pt2, long int &cpt1, long int &cpt2)
void scalar_multiply_vector(int *u, int stride, int len, int multiplier)
void Siegel_map_between_singular_points(int *T, long int rk_from, long int rk_to, long int root, int verbose_level)
long int parabolic_neighbor52_odd_rank(int *v, int verbose_level)
void parabolic_unrank_line_L4(long int &p1, long int &p2, long int index, int verbose_level)
int evaluate_parabolic_bilinear_form(int *u, int *v, int stride, int m)
int parabolic_even_type_and_index_to_point_rk(int type, int index, int verbose_level)
void zero_vector(int *u, int stride, int len)
int * index_minus_nonsquare
void create_K2_BLT_set(long int *set, int *ABC, int verbose_level)
void Siegel_Transformation2(int *T, long int rk_from, long int rk_to, long int root, int *B, int *Bv, int *w, int *z, int *x, int verbose_level)
void create_random_orthogonal_reflection(int *Mtx, int verbose_level)
int last_non_zero_entry(int *u, int stride, int len)
void init_hyperbolic(int verbose_level)
void parabolic_point_rk_to_type_and_index(long int rk, long int &type, long int &index, int verbose_level)
void parabolic_neighbor52_odd_unrank(long int index, int *v, int verbose_level)
ring_theory::homogeneous_polynomial_domain * Poly
void parabolic_odd_point_rk_to_type_and_index(long int rk, long int &type, long int &index, int verbose_level)
long int parabolic_rank_line_L7(long int p1, long int p2, int verbose_level)
long int parabolic_line_type_given_point_types(long int pt1, long int pt2, long int pt1_type, long int pt2_type, int verbose_level)
int parabolic_decide_P22_even(long int pt1, long int pt2)
void unrank_line(long int &p1, long int &p2, long int index, int verbose_level)
void init_counting_functions(int verbose_level)
long int rank_N(int *v, int stride, int m)
int evaluate_bilinear_form(int *u, int *v, int stride)
int BLT_test_full(int size, long int *set, int verbose_level)
void point_rk_to_type_and_index(long int rk, long int &type, long int &index, int verbose_level)
long int type_and_index_to_point_rk(long int type, long int index, int verbose_level)
int BLT_test(int size, long int *set, int verbose_level)
int is_minus_square(int i)
void parabolic_canonical_points_of_line(int line_type, long int pt1, long int pt2, long int &cpt1, long int &cpt2, int verbose_level)
int evaluate_quadratic_form(int *v, int stride)
void parabolic_even_type1_index_to_point(int index, int *v)
long int parabolic_rank_line_L5(long int p1, long int p2, int verbose_level)
void perp_of_two_points(long int pt1, long int pt2, long int *Perp, int &sz, int verbose_level)
long int rank_line_L3(long int p1, long int p2, int verbose_level)
void parabolic_point_normalize(int *v, int stride, int n)
void point_to_line_map(int size, long int *point_ranks, int *&line_vector, int verbose_level)
int line_type_given_point_types(long int pt1, long int pt2, long int pt1_type, long int pt2_type)
int parabolic_decide_P45(long int pt1, long int pt2)
void hyperbolic_unrank_line(long int &p1, long int &p2, long int rk, int verbose_level)
void parabolic_neighbor53_unrank(long int index, int *v, int verbose_level)
void create_K1_BLT_set(long int *set, int *ABC, int verbose_level)
void list_points_by_type(int verbose_level)
void export_incidence_matrix_to_csv(int verbose_level)
void unrank_S(int *v, int stride, int m, int rk)
void unrank_line_L3(long int &p1, long int &p2, long int index, int verbose_level)
long int rank_N1(int *v, int stride, int m)
void plane_invariant(unusual_model *U, int size, int *set, int &nb_planes, int *&intersection_matrix, int &Block_size, int *&Blocks, int verbose_level)
int triple_is_collinear(long int pt1, long int pt2, long int pt3)
void unrank_line_L2(long int &p1, long int &p2, long int index, int verbose_level)
void parabolic_unrank_line_L8(long int &p1, long int &p2, long int index, int verbose_level)
void find_root_hyperbolic_xyz(long int rk2, int m, int *x, int *y, int *z, int verbose_level)
long int parabolic_rank_line_L2_odd(long int p1, long int p2, int verbose_level)
void parabolic_unrank_line_L7(long int &p1, long int &p2, long int index, int verbose_level)
long int rank_line_L2(long int p1, long int p2, int verbose_level)
int * lines_on_point_coords2
void unrank_line_L5(long int &p1, long int &p2, long int index, int verbose_level)
void points_on_line(long int pi, long int pj, long int *line, int verbose_level)
void unrank_line_L4(long int &p1, long int &p2, long int index, int verbose_level)
void parabolic_canonical_points_L1_even(long int pt1, long int pt2, long int &cpt1, long int &cpt2)
void make_Siegel_Transformation(int *M, int *v, int *u, int n, int *Gram, int verbose_level)
void canonical_points_of_line(int line_type, long int pt1, long int pt2, long int &cpt1, long int &cpt2, int verbose_level)
void lines_on_point(long int pt, long int *line_pencil_point_ranks, int verbose_level)
void init(int epsilon, int n, field_theory::finite_field *F, int verbose_level)
long int parabolic_neighbor52_even_rank(int *v, int verbose_level)
long int rank_line_L1(long int p1, long int p2, int verbose_level)
long int rank_Sbar(int *v, int stride, int m)
void print_minus_square_tables()
int parabolic_decide_P33(long int pt1, long int pt2)
long int find_root(long int rk2, int verbose_level)
void parabolic_normalize_point_wrt_subspace(int *v, int stride)
void parabolic_even_point_rk_to_type_and_index(long int rk, long int &type, long int &index, int verbose_level)
int parabolic_rank_line_L2_even(long int p1, long int p2, int verbose_level)
void perp(long int pt, long int *Perp_without_pt, int &sz, int verbose_level)
void unrank_line_L1(long int &p1, long int &p2, long int index, int verbose_level)
void move_points_by_ranks(long int pt_from, long int pt_to, int nb, long int *input_ranks, long int *output_ranks, int verbose_level)
void init_parabolic(int verbose_level)
void report_quadratic_form(std::ostream &ost, int verbose_level)
void create_LP_37_4b_BLT_set(long int *set, int verbose_level)
void parabolic_unrank_line_L1_even(long int &p1, long int &p2, long int index, int verbose_level)
void parabolic_unrank_line_L2_even(long int &p1, long int &p2, long int index, int verbose_level)
void init_form_and_Gram_matrix(int verbose_level)
void parabolic_canonical_points_separate_P5(long int pt1, long int pt2, long int &cpt1, long int &cpt2)
void parabolic_unrank_line_L5(long int &p1, long int &p2, long int index, int verbose_level)
int * lines_on_point_coords1
void report_schemes_easy(std::ostream &ost)
void create_random_Siegel_transformation(int *Mtx, int verbose_level)
void make_initial_partition(data_structures::partitionstack &S, int verbose_level)
void Siegel_move_forward(int *v1, int *v2, int *v3, int *v4, int verbose_level)
void unrank_line_L6(long int &p1, long int &p2, long int index, int verbose_level)
void make_orthogonal_reflection(int *M, int *z, int verbose_level)
void move_points_by_ranks_in_place(long int pt_from, long int pt_to, int nb, long int *ranks, int verbose_level)
void normalize_point(int *v, int stride)
void list_all_points_vs_points(int verbose_level)
void parabolic_unrank_line_L6(long int &p1, long int &p2, long int index, int verbose_level)
void report_points_by_type(std::ostream &ost, int verbose_level)
void report_lines(std::ostream &ost, int verbose_level)
long int parabolic_rank_line_L1_odd(long int p1, long int p2, int verbose_level)
int parabolic_decide_P22_odd(long int pt1, long int pt2)
long int parabolic_rank_line_L3(long int p1, long int p2, int verbose_level)
long int find_root_parabolic(long int rk2, int verbose_level)
long int rank_S(int *v, int stride, int m)
int is_ending_dependent(int *vec1, int *vec2)
void parabolic_odd_point_to_type_and_index(int *v, long int &type, long int &index, int verbose_level)
void points_on_line_by_coordinates(long int pi, long int pj, int *pt_coords, int verbose_level)
int * minus_squares_without
void canonical_points_L6(long int pt1, long int pt2, long int &cpt1, long int &cpt2)
Penttila's unusual model to create BLT-sets.
int hyperbolic_basis_inverse[4 *4]
field_theory::finite_field * FQ
int build_candidate_set_with_offset(orthogonal &O, int q, int gamma, int delta, int offset, int m, long int *Set, int f_second_half, int verbose_level)
void transform_matrix_unusual_to_usual(orthogonal *O, int *M4, int *M5, int verbose_level)
int build_candidate_set(orthogonal &O, int q, int gamma, int delta, int m, long int *Set, int f_second_half, int verbose_level)
void create_Mondello_BLT_set(long int *BLT, int *ABC, int verbose_level)
void convert_to_ranks(int n, int *unusual_coordinates, long int *ranks, int verbose_level)
void setup2(field_theory::finite_field *FQ, field_theory::finite_field *Fq, int f_sum_of_squares, int verbose_level)
field_theory::finite_field * Fq
void print_2x2(int *v, int *f_semi)
int hyperbolic_basis[4 *4]
void convert_from_rank(long int rank, int *unusual_coordinates, int verbose_level)
int quadratic_form(int a, int b, int c, int verbose_level)
void create_Linear_BLT_set(long int *BLT, int *ABC, int verbose_level)
void transform_matrix_usual_to_unusual(orthogonal *O, int *M5, int *M4, int verbose_level)
void parse_4by4_matrix(int *M4, int &a, int &b, int &c, int &d, int &f_semi1, int &f_semi2, int &f_semi3, int &f_semi4)
void convert_from_usual(int n, int *usual_coordinates, int *unusual_coordinates, int verbose_level)
void setup(field_theory::finite_field *FQ, field_theory::finite_field *Fq, int verbose_level)
int build_candidate_set_with_or_without_test(orthogonal &O, int q, int gamma, int delta, int offset, int m, long int *Set, int f_second_half, int f_test, int verbose_level)
int create_orbit_of_psi(orthogonal &O, int q, int gamma, int delta, int m, long int *Set, int f_test, int verbose_level)
void print_coordinates_detailed(long int pt, int cnt)
void create_4by4_matrix(int *M4, int a, int b, int c, int d, int f_semi1, int f_semi2, int f_semi3, int f_semi4, int verbose_level)
void create_Fisher_BLT_set(long int *Fisher_BLT, int *ABC, int verbose_level)
int bilinear_form(int a1, int b1, int c1, int a2, int b2, int c2, int verbose_level)
void convert_from_ranks(int n, long int *ranks, int *unusual_coordinates, int verbose_level)
void print_M5(orthogonal *O, int *M5)
long int convert_to_rank(int *unusual_coordinates, int verbose_level)
void convert_to_usual(int n, int *unusual_coordinates, int *usual_coordinates, int verbose_level)
void print_coordinates_detailed_set(long int *set, int len)
homogeneous polynomials of a given degree in a given number of variables over a finite field GF(q)
the orbiter library for the classification of combinatorial objects