12namespace layer1_foundations {
13namespace algebraic_geometry {
16static void intersection_matrix_entry_print(
int *p,
17 int m,
int n,
int i,
int j,
int val,
18 std::string &output,
void *data);
74 long int *arc6,
int verbose_level)
76 int f_v = (verbose_level >= 1);
77 int f_vv = (verbose_level >= 2);
78 int i, j, h, pi, pj, bi, bj, p;
89 cout <<
"eckardt_point_info::init" << endl;
96 cout <<
"eckardt_point_info::init "
108 cout <<
"eckardt_point_info::init "
109 "computing E_{ij,kl,mn}:" << endl;
117 for (i = 0; i < 6; i++) {
119 for (j = i + 1; j < 6; j++, h++) {
125 cout <<
"bisecants: ";
130 for (i = 0; i < 15; i++) {
132 for (j = 0; j < 15; j++) {
152 cout <<
"We found " <<
nb_B_pts <<
" B-pts: ";
165 if (l == multiplicity) {
167 cout <<
"Pts[s] != C.data_sorted[f]" << endl;
171 for (u = 0; u < l; u++) {
181 for (u = 0; u < 6; u++) {
183 H[2 * u + 0] = h % 15;
184 H[2 * u + 1] = h / 15;
203 cout <<
"eckardt_point_info::init "
204 "We found " << nb_labels <<
" labels: ";
209 if (nb_labels != 3) {
210 cout <<
"nb_labels != 3" << endl;
223 cout <<
"eckardt_point_info::init "
224 "We found " <<
nb_B_pts <<
" Eckardt points:" << endl;
227 for (l = 0; l < 3; l++) {
229 Combi.
k2ij(h, i, j, 6);
230 cout << i + 1 << j + 1;
235 cout <<
"} B-pt=" <<
B_pts[s] << endl;
240 cout <<
"computing E_ij:" << endl;
247 for (j = 0; j < 6; j++) {
249 int deleted_point, rk, i1;
251 long int tangents[5];
256 deleted_point =
arc6[j];
261 cout <<
"deleting point " << j <<
" / 6:";
262 int_vec_print(cout, arc5, 5);
271 cout <<
"coefficients of the conic: ";
272 int_vec_print(cout, six_coeffs, 6);
280 for (i = 0; i < 5; i++) {
284 cout <<
"The tangent line at " << arc5[i] <<
" is:" << endl;
285 int_matrix_print(Basis, 2, 3);
298 cout <<
"eckardt_point_info::init "
299 "Found Eckardt point E_{"
300 << i1 + 1 << j + 1 <<
"}" << endl;
309 cout <<
"eckardt_point_info::init We found " <<
nb_E2
310 <<
" Eckardt points of the second type" << endl;
320 for (i = 0; i <
nb_E2; i++) {
332 cout <<
"eckardt_point_info::init done" << endl;
339 int f_v = (verbose_level >= 1);
345 cout <<
"eckardt_point_info::print_bisecants" << endl;
355 cout <<
"eckardt_point_info::print_bisecants before Poly1->init" << endl;
363 cout <<
"eckardt_point_info::print_bisecants after Poly1->init" << endl;
367 ost <<
"The 15 bisecants are:\\\\" << endl;
369 ost <<
"\\begin{array}{|r|r|r|r|r|}" << endl;
370 ost <<
"\\hline" << endl;
371 ost <<
"h & P_iP_j & \\mbox{rank} & \\mbox{line} "
372 "& \\mbox{equation}\\\\" << endl;
373 ost <<
"\\hline" << endl;
374 ost <<
"\\hline" << endl;
375 for (h = 0; h < 15; h++) {
377 Combi.
k2ij(h, i, j, 6);
378 ost << h <<
" & P_{" << i + 1 <<
"}P_{" << j + 1
379 <<
"} & " << a <<
" & " << endl;
390 ost <<
"\\\\" << endl;
392 ost <<
"\\hline" << endl;
393 ost <<
"\\end{array}" << endl;
399 cout <<
"eckardt_point_info::print_bisecants done" << endl;
405 int f_v = (verbose_level >= 1);
415 cout <<
"eckardt_point_info::print_intersections" << endl;
417 ost <<
"The intersections of bisecants are:\\\\" << endl;
418 for (i = 0; i < 15; i++) {
421 ost <<
"{\\small \\arraycolsep=1pt" << endl;
428 intersection_matrix_entry_print, (
void *)
this,
430 ost <<
"$$}" << endl;
432 cout <<
"eckardt_point_info::print_intersections done" << endl;
438 int f_v = (verbose_level >= 1);
443 cout <<
"eckardt_point_info::print_conics" << endl;
450 cout <<
"eckardt_point_info::print_conics before Poly2->init" << endl;
458 cout <<
"eckardt_point_info::print_conics after Poly2->init" << endl;
463 ost <<
"The 6 conics are:\\\\" << endl;
465 ost <<
"\\begin{array}{|r|r|r|}" << endl;
466 ost <<
"\\hline" << endl;
467 ost <<
"i & C_i & \\mbox{equation}\\\\" << endl;
468 ost <<
"\\hline" << endl;
469 ost <<
"\\hline" << endl;
470 for (h = 0; h < 6; h++) {
471 ost << h + 1 <<
" & C_" << h + 1 <<
" & " << endl;
476 ost <<
"\\\\" << endl;
478 ost <<
"\\hline" << endl;
479 ost <<
"\\end{array}" << endl;
486 cout <<
"eckardt_point_info::print_conics done" << endl;
492 int f_v = (verbose_level >= 1);
496 cout <<
"eckardt_point_info::print_Eckardt_points" << endl;
498 ost <<
"We found " <<
nb_E <<
" Eckardt points:\\\\" << endl;
499 for (s = 0; s <
nb_E; s++) {
500 ost << s <<
" / " <<
nb_E <<
" : $";
502 ost <<
"= E_{" <<
E[s].
rank() <<
"}$\\\\" << endl;
508 cout <<
"eckardt_point_info::print_Eckardt_points done" << endl;
513static void intersection_matrix_entry_print(
int *p,
514 int m,
int n,
int i,
int j,
int val,
515 std::string &output,
void *data)
524 Combi.
k2ij(j, a, b, 6);
525 sprintf(str,
"P_%dP_%d", a + 1, b + 1);
528 Combi.
k2ij(i, a, b, 6);
529 sprintf(str,
"P_%dP_%d", a + 1, b + 1);
536 sprintf(str,
"%d", val);
geometry::projective_space * P2
void print_intersections(std::ostream &ost, int verbose_level)
void print_Eckardt_points(std::ostream &ost, int verbose_level)
void print_bisecants(std::ostream &ost, int verbose_level)
void print_conics(std::ostream &ost, int verbose_level)
void init(geometry::projective_space *P2, long int *arc6, int verbose_level)
Eckardt point on a cubic surface using the Schlaefli labeling.
void latex(std::ostream &ost)
a collection of combinatorial functions
void k2ij(int k, int &i, int &j, int n)
a statistical analysis of data consisting of single integers
void init(int *data, int data_length, int f_second, int verbose_level)
void get_data_by_multiplicity(int *&Pts, int &nb_pts, int multiplicity, int verbose_level)
void PG_element_normalize_from_front(int *v, int stride, int len)
void PG_element_normalize(int *v, int stride, int len)
linear_algebra::linear_algebra * Linear_algebra
void unrank_lint_here_and_compute_perp(int *Mtx, long int rk, int verbose_level)
void print_single_generator_matrix_tex(std::ostream &ost, long int a)
projective space PG(n,q) of dimension n over Fq
int determine_conic_in_plane(long int *input_pts, int nb_pts, int *six_coeffs, int verbose_level)
field_theory::finite_field * F
void find_tangent_lines_to_conic(int *six_coeffs, long int *points, int nb_points, long int *tangents, int verbose_level)
int intersection_of_two_lines(long int l1, long int l2)
long int line_through_two_points(long int p1, long int p2)
void unrank_point(int *v, long int rk)
void unrank_line(int *basis, long int rk)
int Gauss_easy(int *A, int m, int n)
interface to create latex output files
void int_matrix_print_with_labels_and_partition(std::ostream &ost, int *p, int m, int n, int *row_labels, int *col_labels, int *row_part_first, int *row_part_len, int nb_row_parts, int *col_part_first, int *col_part_len, int nb_col_parts, void(*process_function_or_NULL)(int *p, int m, int n, int i, int j, int val, std::string &output, void *data), void *data, int f_tex)
homogeneous polynomials of a given degree in a given number of variables over a finite field GF(q)
void init(field_theory::finite_field *F, int nb_vars, int degree, int f_init_incidence_structure, monomial_ordering_type Monomial_ordering_type, int verbose_level)
void print_equation(std::ostream &ost, int *coeffs)
#define Lint_vec_copy(A, B, C)
#define Lint_vec_print(A, B, C)
#define NEW_OBJECTS(type, n)
#define Int_vec_copy(A, B, C)
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects