18namespace layer1_foundations {
19namespace algebraic_geometry {
58 cout <<
"clebsch_map::freeself" << endl;
63 int hds,
int verbose_level)
65 int f_v = (verbose_level >= 1);
68 cout <<
"clebsch_map::init_half_double_six" << endl;
79 cout <<
"clebsch_map::init_half_double_six hds = " <<
hds
80 <<
" double six = " <<
ds <<
" row = " <<
ds_row << endl;
84 cout <<
"clebsch_map::init_half_double_six "
85 "before Surf->prepare_clebsch_map" << endl;
90 cout <<
"clebsch_map::init_half_double_six "
91 "after Surf->prepare_clebsch_map" << endl;
95 cout <<
"clebsch_map::init_half_double_six "
126 cout <<
"surface_with_action::arc_lifting_and_classify "
134 cout <<
"surface_with_action::arc_lifting_and_classify "
135 "Lines with points on them:" << endl;
137 cout <<
"The half double six is no " <<
hds
141 cout <<
" = \\{" << endl;
142 for (h = 0; h < 6; h++) {
149 cout <<
"\\}$\\\\" << endl;
152 for (u = 0; u < 6; u++) {
155 cout <<
"surface_with_action::arc_lifting_and_classify u="
156 << u <<
" / 6" << endl;
160 cout <<
"surface_with_action::arc_lifting_and_classify "
161 "intersecting line " << a <<
" and plane "
169 cout <<
"surface_with_action::arc_lifting_and_classify "
174 cout <<
"surface_with_action::arc_lifting_and_classify "
184 cout <<
"surface_with_action::arc_lifting_and_classify "
185 "local coefficients ";
196 cout <<
"clebsch_map::init_half_double_six done" << endl;
202 int f_v = (verbose_level >= 1);
205 cout <<
"clebsch_map::compute_Clebsch_map_down" << endl;
209 cout <<
"clebsch_map::compute_Clebsch_map_down SO == NULL" << endl;
218 cout <<
"clebsch_map::compute_Clebsch_map_down before compute_Clebsch_map_down_worker" << endl;
225 cout <<
"clebsch_map::compute_Clebsch_map_down The plane contains one of the lines, "
226 "this should not happen" << endl;
230 cout <<
"clebsch_map::compute_Clebsch_map_down after compute_Clebsch_map_down_worker" << endl;
234 cout <<
"clebsch_map::compute_Clebsch_map_down done" << endl;
240 long int *Image_rk,
int *Image_coeff,
252 int f_v = (verbose_level >= 1);
253 int f_vv = (verbose_level >= 2);
257 int Dual_planes[4 * 4];
265 long int i, h, pt, r;
270 cout <<
"clebsch_map::compute_Clebsch_map_down_worker" << endl;
284 cout <<
"Plane (3 basis vectors and dual coordinates):" << endl;
286 cout <<
"base_cols: ";
302 for (i = 0; i < 2; i++) {
308 cout <<
"clebsch_map::compute_Clebsch_map_down_worker Line a lies "
309 "inside the hyperplane" << endl;
321 for (i = 0; i < 2; i++) {
327 cout <<
"clebsch_map::compute_Clebsch_map_down_worker Line b lies "
328 "inside the hyperplane" << endl;
340 cout <<
"clebsch_map::compute_Clebsch_map_down_worker "
341 "pt " << h <<
" / " <<
SO->
nb_pts <<
" is " << pt <<
" = ";
352 cout <<
"The point is on line_a" << endl;
361 cout <<
"The point is on line_b" << endl;
375 cout <<
"clebsch_map::compute_Clebsch_map_down_worker First plane in dual coordinates: ";
386 cout <<
"clebsch_map::compute_Clebsch_map_down_worker Second plane in dual coordinates: ";
396 cout <<
"clebsch_map::compute_Clebsch_map_down_worker Dual coordinates for all three planes: " << endl;
404 cout <<
"clebsch_map::compute_Clebsch_map_down_worker Dual coordinates and perp: " << endl;
407 cout <<
"clebsch_map::compute_Clebsch_map_down_worker matrix of dual coordinates has rank " << r << endl;
413 cout <<
"clebsch_map::compute_Clebsch_map_down_worker The line is contained in the plane" << endl;
420 cout <<
"clebsch_map::compute_Clebsch_map_down_worker intersection point normalized: ";
429 Dual_planes + 12, coefficients,
433 cout <<
"clebsch_map::compute_Clebsch_map_down_worker pt " << h <<
" / " <<
SO->
nb_pts
434 <<
" is " << pt <<
" : image = ";
436 cout <<
" image = " << Image_rk[h] << endl;
441 cout <<
"clebsch_map::compute_Clebsch_map_down_worker done" << endl;
450 cout <<
"clebsch_map::clebsch_map_print_fibers" << endl;
455 cout <<
"clebsch_map::clebsch_map_print_fibers The fibers "
456 "have the following sizes: ";
467 cout <<
"clebsch_map::clebsch_map_print_fibers fibers "
468 "of size " << sz <<
":" << endl;
472 for (i = 0; i < l2; i++) {
477 cout <<
"arc point " << pt <<
" belongs to the " << l1
478 <<
" surface points in the list of Pts "
479 "(local numbering): ";
480 for (j = 0; j < l1; j++) {
499 int f_v = (verbose_level >= 1);
500 int i, j, pt, nb_blow_up_lines;
503 cout <<
"clebsch_map::clebsch_map_find_arc_and_lines" << endl;
508 cout <<
"lines_on_point:" << endl;
517 cout <<
"clebsch_map::clebsch_map_find_arc_and_lines "
518 "The fibers have the following sizes: ";
532 nb_blow_up_lines = 0;
538 cout <<
"clebsch_map::clebsch_map_find_arc_and_lines "
539 "fibers of size " << sz <<
":" << endl;
546 for (i = 0; i < l2; i++) {
551 cout <<
"arc point " << pt <<
" belongs to the " << l1
552 <<
" surface points in the list of Pts "
554 for (j = 0; j < l1; j++) {
567 for (i = 0; i < l2; i++) {
580 cout <<
"lines through point fiber[0]="
581 << fiber[0] <<
" : ";
586 cout <<
"lines through point fiber[1]="
587 << fiber[1] <<
" : ";
597 fiber[0], fiber[1], common_elt)) {
598 cout <<
"The fiber does not seem to come "
599 "from a line, i=" << i << endl;
603 cout <<
"The fiber does not seem to come "
604 "from a line" << endl;
605 cout <<
"i=" << i <<
" / " << l2 << endl;
606 cout <<
"pt=" << pt << endl;
607 cout <<
"fiber[0]=" << fiber[0] << endl;
608 cout <<
"fiber[1]=" << fiber[1] << endl;
609 cout <<
"lines through point fiber[0]=" << fiber[0] <<
" : ";
614 cout <<
"lines through point fiber[1]=" << fiber[1] <<
" : ";
623 if (nb_blow_up_lines == 6) {
624 cout <<
"too many long fibers" << endl;
627 cout <<
"i=" << i <<
" fiber[0]=" << fiber[0]
628 <<
" fiber[1]=" << fiber[1]
629 <<
" common_elt=" << common_elt << endl;
630 Arc[nb_blow_up_lines] = pt;
637 for (u = 0; u < l2; u++) {
639 for (v = u + 1; v < l2; v++, w++) {
641 Fiber_recognize[w] = -1;
642 if (!lines_on_point->find_common_element_in_two_sets(
643 fiber[0], fiber[1], common_elt)) {
645 cout <<
"The fiber does not seem to "
646 "come from a line" << endl;
647 cout <<
"i=" << i <<
" / " << l2 << endl;
648 cout <<
"pt=" << pt << endl;
649 cout <<
"fiber[0]=" << fiber[0] << endl;
650 cout <<
"fiber[1]=" << fiber[1] << endl;
651 cout <<
"lines_on_point:" << endl;
652 lines_on_point->print_table();
657 Fiber_recognize[w] = common_elt;
664 C_fiber.init(Fiber_recognize, w,
FALSE, 0);
665 cout <<
"The fiber type is : ";
666 C_fiber.print_naked(
TRUE);
675 if (nb_blow_up_lines != 6) {
676 cout <<
"nb_blow_up_lines != 6" << endl;
677 cout <<
"nb_blow_up_lines = " << nb_blow_up_lines << endl;
682 cout <<
"clebsch_map::clebsch_map_find_arc_and_lines "
693 ost <<
"The half double six is no " <<
hds <<
"$ = "
696 ost <<
" = \\{" << endl;
697 for (h = 0; h < 6; h++) {
703 ost <<
"\\}$\\\\" << endl;
717 ost <<
"The plane is:" << endl;
720 ost <<
"Clebsch map for lines $" <<
line1
728 ost <<
"Clebsch map for lines $" <<
line1
731 <<
"$ yields arc = $";
733 ost <<
"$ : blown up lines = ";
735 ost <<
"\\\\" << endl;
field_theory::finite_field * F
int intersection_points_local[6]
int intersection_points[6]
void report(std::ostream &ost, int verbose_level)
int compute_Clebsch_map_down_worker(long int *Image_rk, int *Image_coeff, int verbose_level)
long int Blown_up_lines[6]
void clebsch_map_find_arc_and_lines(int verbose_level)
void clebsch_map_print_fibers()
void init_half_double_six(surface_object *SO, int hds, int verbose_level)
void compute_Clebsch_map_down(int verbose_level)
std::string * Line_label_tex
long int * Half_double_sixes
std::string * Eckard_point_label_tex
int choose_tritangent_plane_for_Clebsch_map(int line_a, int line_b, int transversal_line, int verbose_level)
void print_set_of_lines_tex(std::ostream &ost, long int *v, int len)
std::string * Half_double_six_label_tex
schlaefli_labels * Labels
void prepare_clebsch_map(int ds, int ds_row, int &line1, int &line2, int &transversal, int verbose_level)
geometry::projective_space * P2
geometry::projective_space * P
field_theory::finite_field * F
void unrank_point(int *v, long int rk)
long int * Tritangent_plane_rk
data_structures::set_of_sets * lines_on_point
void clebsch_map_latex(std::ostream &ost, long int *Clebsch_map, int *Clebsch_coeff)
void print_lines_with_points_on_them(std::ostream &ost)
a particular cubic surface in PG(3,q), given by its equation
surface_object_properties * SOP
void matrix_print(int *p, int m, int n)
int find_common_element_in_two_sets(int idx1, int idx2, int &common_elt)
a statistical analysis of data consisting of single integers
void init_lint(long int *data, int data_length, int f_second, int verbose_level)
void print_naked(int f_backwards)
int * second_sorting_perm_inv
void PG_element_normalize(int *v, int stride, int len)
linear_algebra::linear_algebra * Linear_algebra
void print_set_tex(std::ostream &ost, long int *v, int len)
void unrank_lint_here(int *Mtx, long int rk, int verbose_level)
int point_of_intersection_of_a_line_and_a_plane_in_three_space(long int line, int plane, int verbose_level)
long int rank_point(int *v)
void unrank_point(int *v, long int rk)
void reduce_mod_subspace_and_get_coefficient_vector(int k, int len, int *basis, int *base_cols, int *v, int *coefficients, int verbose_level)
int Gauss_easy(int *A, int m, int n)
int RREF_and_kernel(int n, int k, int *A, int verbose_level)
int Gauss_simple(int *A, int m, int n, int *base_cols, int verbose_level)
int dot_product(int len, int *v, int *w)
interface to create latex output files
void lint_set_print_tex(std::ostream &ost, long int *v, int len)
data_structures::int_vec * Int_vec
#define Int_vec_zero(A, B)
#define Lint_vec_print(A, B, C)
#define Int_vec_copy(A, B, C)
#define Int_vec_print(A, B, C)
orbiter_kernel_system::orbiter_session * Orbiter
global Orbiter session
the orbiter library for the classification of combinatorial objects