14namespace layer1_foundations {
15namespace orthogonal_geometry {
30 int type,
int index,
int verbose_level)
32 int f_v = (verbose_level >= 1);
33 int f_vv = (verbose_level >= 2);
37 cout <<
"parabolic_type_and_index_to_point_rk "
38 "type=" << type <<
" index=" << index
39 <<
" epsilon=" <<
epsilon <<
" n=" <<
n << endl;
42 int field, sub_index, len;
46 sub_index = index % len;
49 cout <<
"field=" << field
50 <<
" sub_index=" << sub_index << endl;
57 cout <<
"parabolic_type_and_index_to_point_rk "
58 "type=" << type <<
" index=" << index
59 <<
" rk=" << rk << endl;
64 int field, sub_index, len;
68 sub_index = index % len;
71 cout <<
"field=" << field <<
" sub_index=" << sub_index << endl;
78 cout <<
"parabolic_type_and_index_to_point_rk "
79 "type=" << type <<
" index=" << index
80 <<
" rk=" << rk << endl;
86 cout <<
"parabolic_type_and_index_to_point_rk "
87 "type=" << type <<
" index=" << index << endl;
88 cout <<
"parabolic_type_and_index_to_point_rk "
89 "before subspace->unrank_point" << endl;
92 cout <<
"parabolic_type_and_index_to_point_rk "
93 "subspace == NULL" << endl;
98 cout <<
"parabolic_type_and_index_to_point_rk "
99 "after subspace->unrank_point" << endl;
105 cout <<
"parabolic_type_and_index_to_point_rk "
106 "type=" << type <<
" index=" << index
107 <<
" rk=" << rk << endl;
111 else if (type == 6) {
115 cout <<
"parabolic_type_and_index_to_point_rk "
116 "type=" << type <<
" index=" << index
117 <<
" rk=" << rk << endl;
122 cout <<
"error in parabolic_P3to7_type_and_index_to_point_rk, "
123 "illegal index" << endl;
127 else if (type == 7) {
131 cout <<
"parabolic_type_and_index_to_point_rk "
132 "type=" << type <<
" index=" << index
133 <<
" rk=" << rk << endl;
138 cout <<
"error in parabolic_P3to7_type_and_index_to_point_rk, "
139 "illegal index" << endl;
146 type, index, verbose_level);
150 type, index, verbose_level);
156 int type,
int index,
int verbose_level)
158 int f_v = (verbose_level >= 1);
163 cout <<
"parabolic_even_type_and_index_to_point_rk "
164 "type=" << type <<
" index=" << index << endl;
170 cout <<
"parabolic_even_type_and_index_to_point_rk "
171 "type=" << type <<
" index=" << index
172 <<
" rk=" << rk << endl;
176 else if (type == 2) {
180 cout <<
"parabolic_even_type_and_index_to_point_rk "
181 "type=" << type <<
" index=" << index
182 <<
" rk=" << rk << endl;
186 cout <<
"error in parabolic_even_type_and_index_to_point_rk "
187 "illegal type " << type << endl;
196 cout <<
"error in parabolic_even_type1_index_to_point, "
197 "index >= p1" << endl;
204 v[1 + 2 * (
m - 1) + 0] = a;
205 v[1 + 2 * (
m - 1) + 1] = b;
211 int a, b, c, d, l, ll, lll, field1, field2;
212 int sub_index, sub_sub_index;
217 sub_index = index %
N1_mm1;
223 v[1 + 2 * (
m - 1) + 0] = a;
224 v[1 + 2 * (
m - 1) + 1] = b;
234 sub_index = index % ll;
236 field2 = sub_index / lll;
237 sub_sub_index = sub_index % lll;
243 v[1 + 2 * (
m - 1) + 0] = a;
244 v[1 + 2 * (
m - 1) + 1] = b;
252 sub_index = index % ll;
253 field2 = sub_index /
N1_mm1;
254 sub_sub_index = sub_index %
N1_mm1;
262 v[1 + 2 * (
m - 1) + 0] = b;
263 v[1 + 2 * (
m - 1) + 1] = c;
269 cout <<
"error in parabolic_even_type2_index_to_point "
270 "illegal index" << endl;
276 long int type,
long int index,
int verbose_level)
278 int f_v = (verbose_level >= 1);
283 cout <<
"parabolic_odd_type_and_index_to_point_rk "
284 "type=" << type <<
" index=" << index << endl;
289 cout <<
"parabolic_odd_type_and_index_to_point_rk created ";
295 cout <<
"parabolic_odd_type_and_index_to_point_rk "
296 "type=" << type <<
" index=" << index
297 <<
" rk=" << rk << endl;
301 else if (type == 2) {
305 cout <<
"parabolic_odd_type_and_index_to_point_rk "
306 "type=" << type <<
" index=" << index
307 <<
" rk=" << rk << endl;
311 cout <<
"error in parabolic_odd_type_and_index_to_point_rk "
312 "illegal type " << type << endl;
317 long int index,
int *v,
int verbose_level)
319 long int a, b, c, l, ll, ms_idx, field1, field2, sub_index, sub_sub_index;
320 int f_v = (verbose_level >= 1);
323 cout <<
"parabolic_odd_type1_index_to_point "
324 "m = " <<
m <<
" index = " << index << endl;
327 cout <<
"error in parabolic_odd_type1_index_to_point, "
328 "index >= p1" << endl;
334 sub_index = index %
N1_mm1;
337 cout <<
"case a) ms_idx = " << ms_idx
338 <<
" sub_index=" << sub_index
339 <<
" field1 = " << field1 << endl;
342 v[1 + 2 * (
m - 1) + 0] = field1;
343 v[1 + 2 * (
m - 1) + 1] = 1;
352 field1 = index /
S_mm1;
353 sub_index = index %
S_mm1;
355 cout <<
"case b) sub_index=" << sub_index
356 <<
" field1 = " << field1 << endl;
358 if (sub_index == 0) {
362 v[1 + 2 * (
m - 1) + 0] = a;
363 v[1 + 2 * (
m - 1) + 1] = b;
370 sub_sub_index = sub_index %
Sbar_mm1;
376 v[1 + 2 * (
m - 1) + 0] = a;
377 v[1 + 2 * (
m - 1) + 1] = b;
384 l = ((
q - 1) / 2 - 1) * (
q - 1) *
N1_mm1;
389 sub_index = index % ll;
390 field2 = sub_index /
N1_mm1;
391 sub_sub_index = sub_index %
N1_mm1;
394 cout <<
"case c) ms_idx = " << ms_idx
395 <<
" sub_index=" << sub_index
396 <<
" field2 = " << field2
397 <<
" sub_sub_index=" << sub_sub_index
398 <<
" field1 = " << field1
404 v[1 + 2 * (
m - 1) + 0] = a;
405 v[1 + 2 * (
m - 1) + 1] = b;
412 cout <<
"error in parabolic_odd_type1_index_to_point "
413 "illegal index" << endl;
419 long int index,
int *v,
int verbose_level)
421 long int a, b, c, l, ll, ms_idx, field1, field2, sub_index, sub_sub_index;
422 int f_v = (verbose_level >= 1);
425 cout <<
"parabolic_odd_type2_index_to_point "
426 "index = " << index << endl;
429 cout <<
"error in parabolic_odd_type2_index_to_point, "
430 "index >= p1" << endl;
436 sub_index = index %
N1_mm1;
439 cout <<
"case 1 ms_idx=" << ms_idx
440 <<
" field1=" << field1
441 <<
" sub_index=" << sub_index << endl;
444 v[1 + 2 * (
m - 1) + 0] = field1;
445 v[1 + 2 * (
m - 1) + 1] = 1;
456 sub_index = index % ll;
457 field2 = sub_index /
N1_mm1;
458 sub_sub_index = sub_index %
N1_mm1;
461 cout <<
"case 2 ms_idx=" << ms_idx
462 <<
" field1=" << field1 <<
" field2=" << field2
463 <<
" sub_sub_index=" << sub_sub_index << endl;
470 v[1 + 2 * (
m - 1) + 0] = a;
471 v[1 + 2 * (
m - 1) + 1] = b;
477 cout <<
"error in parabolic_odd_type2_index_to_point "
478 "illegal index" << endl;
483 long int rk,
long int &type,
long int &index,
int verbose_level)
485 int f_v = (verbose_level >= 1);
486 int f_vv = (verbose_level >= 2);
489 cout <<
"parabolic_point_rk_to_type_and_index "
490 "rk = " << rk << endl;
496 cout <<
"parabolic_point_rk_to_type_and_index "
497 "rk = " << rk <<
" type = " << type
498 <<
" index = " << index << endl;
506 cout <<
"parabolic_point_rk_to_type_and_index "
507 "rk = " << rk <<
" type = " << type
508 <<
" index = " << index << endl;
514 cout <<
"parabolic_point_rk_to_type_and_index created vector ";
519 long int field, sub_index, len;
526 cout <<
"field=" << field <<
" sub_index=" << sub_index << endl;
528 index = (field - 1) * len + sub_index;
530 cout <<
"parabolic_point_rk_to_type_and_index rk = " << rk
531 <<
" type = " << type
532 <<
" index = " << index << endl;
537 long int field, sub_index, len;
544 cout <<
"field=" << field <<
" sub_index=" << sub_index << endl;
546 index = (field - 1) * len + sub_index;
548 cout <<
"parabolic_point_rk_to_type_and_index "
549 "rk = " << rk <<
" type = " << type
550 <<
" index = " << index << endl;
558 cout <<
"parabolic_point_rk_to_type_and_index "
559 "rk = " << rk <<
" type = " << type
560 <<
" index = " << index << endl;
566 type, index, verbose_level);
570 type, index, verbose_level);
575 long int rk,
long int &type,
long int &index,
int verbose_level)
579 type, index, verbose_level);
583 int *v,
long int &type,
long int &index,
int verbose_level)
585 int f_v = (verbose_level >= 1);
586 int f_start_with_one, value_middle, value_end, f_middle_is_zero;
587 long int a, b, l, ll, lll, field1, field2, sub_index, sub_sub_index;
590 cout <<
"parabolic_even_point_to_type_and_index:";
594 if (v[0] != 0 && v[0] != 1) {
595 cout <<
"parabolic_even_point_to_type_and_index: "
596 "error in unrank_point" << endl;
600 f_start_with_one, value_middle, value_end, verbose_level);
601 if (value_middle == 0) {
605 f_middle_is_zero =
FALSE;
607 cout <<
"parabolic_even_point_to_type_and_index: "
608 "f_start_with_one=" << f_start_with_one
609 <<
" value_middle=" << value_middle
610 <<
" f_middle_is_zero=" << f_middle_is_zero
611 <<
" value_end=" << value_end << endl;
613 if (f_start_with_one &&
618 a = v[1 + 2 * (
m - 1) + 0];
619 b = v[1 + 2 * (
m - 1) + 1];
622 cout <<
"parabolic_even_point_to_type_and_index "
623 "type = " << type <<
" index = " << index << endl;
627 else if (value_end) {
630 if (!f_start_with_one) {
632 sub_index =
rank_N1(v + 1, 1,
m - 1);
633 a = v[1 + 2 * (
m - 1) + 0];
634 b = v[1 + 2 * (
m - 1) + 1];
636 index += field1 *
N1_mm1 + sub_index;
638 cout <<
"parabolic_even_point_to_type_and_index "
639 "type = " << type <<
" index = " << index << endl;
646 if (value_middle == 0) {
647 a = v[1 + 2 * (
m - 1) + 0];
648 b = v[1 + 2 * (
m - 1) + 1];
654 sub_index = field2 * lll + sub_sub_index;
656 index += field1 * ll + sub_index;
658 cout <<
"parabolic_even_point_to_type_and_index "
659 "type = " << type <<
" index = " << index << endl;
666 sub_sub_index =
rank_N1(v + 1, 1,
m - 1);
667 a =
F->
add(1, value_middle);
668 b = v[1 + 2 * (
m - 1) + 0];
670 if (a == 0 || a == 1) {
671 cout <<
"error in parabolic_even_point_to_type_and_index "
672 "a == 0 || a == 1" << endl;
676 cout <<
"error in parabolic_even_point_to_type_and_index "
684 sub_index = field2 *
N1_mm1 + sub_sub_index;
686 index += field1 * ll + sub_index;
688 cout <<
"parabolic_even_point_to_type_and_index "
689 "type = " << type <<
" index = " << index << endl;
694 cout <<
"error in parabolic_even_point_to_type_and_index, "
695 "unknown type, type = " << type << endl;
701 long int rk,
long int &type,
long int &index,
int verbose_level)
705 type, index, verbose_level);
709 int *v,
long int &type,
long int &index,
int verbose_level)
711 int f_v = (verbose_level >= 1);
712 int f_start_with_one, value_middle, value_end;
713 int f_middle_is_zero, f_end_value_is_minus_square;
714 int a, c, l, ll, ms_idx, field1, field2, sub_index, sub_sub_index;
717 cout <<
"parabolic_odd_point_to_type_and_index:";
721 if (v[0] != 0 && v[0] != 1) {
722 cout <<
"parabolic_odd_point_to_type_and_index: "
723 "error in unrank_point" << endl;
727 f_start_with_one, value_middle, value_end, verbose_level);
729 cout <<
"f_start_with_one=" << f_start_with_one
730 <<
" value_middle=" << value_middle
731 <<
" value_end=" << value_end << endl;
733 if (value_middle == 0) {
737 f_middle_is_zero =
FALSE;
740 cout <<
"f_middle_is_zero=" << f_middle_is_zero << endl;
744 cout <<
"f_end_value_is_minus_square="
745 << f_end_value_is_minus_square << endl;
748 if (f_end_value_is_minus_square) {
752 if (!f_start_with_one) {
755 cout <<
"parabolic_odd_point_to_type_and_index: "
756 "ms_idx == -1" << endl;
760 sub_index =
rank_N1(v + 1, 1,
m - 1);
761 index += ms_idx *
N1_mm1 + sub_index;
763 cout <<
"parabolic_odd_point_to_type_and_index "
764 "type = " << type <<
" index = " << index << endl;
770 if (value_middle == 0) {
771 if (f_middle_is_zero) {
772 a = v[1 + 2 * (
m - 1) + 0];
775 index += field1 *
S_mm1 + sub_index;
777 cout <<
"parabolic_odd_point_to_type_and_index "
778 "type = " << type <<
" index = " << index << endl;
783 a = v[1 + 2 * (
m - 1) + 0];
792 sub_index = field2 *
Sbar_mm1 + sub_sub_index + 1;
793 index += field1 *
S_mm1 + sub_index;
795 cout <<
"parabolic_odd_point_to_type_and_index "
796 "type = " << type <<
" index = " << index << endl;
802 l = ((
q - 1) / 2 - 1) * (
q - 1) *
N1_mm1;
806 cout <<
"parabolic_odd_point_to_type_and_index: "
807 "ms_idx == -1" << endl;
812 sub_sub_index =
rank_N1(v + 1, 1,
m - 1);
813 a = v[1 + 2 * (
m - 1) + 0];
815 sub_index = field2 *
N1_mm1 + sub_sub_index;
816 index += ms_idx * ll + sub_index;
818 cout <<
"parabolic_odd_point_to_type_and_index "
819 "type = " << type <<
" index = " << index << endl;
823 else if (value_end) {
827 if (!f_start_with_one) {
830 cout <<
"parabolic_odd_point_to_type_and_index: "
831 "ms_idx == -1" << endl;
835 sub_index =
rank_N1(v + 1, 1,
m - 1);
836 index += ms_idx *
N1_mm1 + sub_index;
838 cout <<
"parabolic_odd_point_to_type_and_index "
839 "type = " << type <<
" index = " << index << endl;
848 cout <<
"parabolic_odd_point_to_type_and_index: "
849 "ms_idx == -1" << endl;
854 sub_sub_index =
rank_N1(v + 1, 1,
m - 1);
855 a = v[1 + 2 * (
m - 1) + 0];
859 sub_index = field2 *
N1_mm1 + sub_sub_index;
860 index += ms_idx * ll + sub_index;
862 cout <<
"parabolic_odd_point_to_type_and_index "
863 "type = " << type <<
" index = " << index << endl;
867 cout <<
"error in parabolic_odd_point_to_type_and_index, "
868 "unknown type, type = " << type << endl;
877 long int index,
int *v,
int verbose_level)
880 int f_v = (verbose_level >= 1);
883 cout <<
"parabolic_neighbor51_odd_unrank "
884 "index=" << index << endl;
895 cout <<
"parabolic_neighbor51_odd_unrank ";
902 int *v,
int verbose_level)
905 long int type, index;
906 int f_v = (verbose_level >= 1);
909 cout <<
"parabolic_neighbor51_odd_rank ";
914 cout <<
"parabolic_neighbor51_odd_rank v[2]" << endl;
923 cout <<
"normalized and in subspace: ";
930 cout <<
"parabolic_neighbor51_odd_rank type != 1" << endl;
938 long int index,
int *v,
int verbose_level)
941 int f_v = (verbose_level >= 1);
944 cout <<
"parabolic_neighbor52_odd_unrank index=" << index << endl;
955 cout <<
"parabolic_neighbor52_odd_unrank ";
963 long int i, type, index;
964 int f_v = (verbose_level >= 1);
967 cout <<
"parabolic_neighbor52_odd_rank ";
972 cout <<
"parabolic_neighbor52_odd_rank v[2]" << endl;
983 cout <<
"parabolic_neighbor52_odd_rank type != 2" << endl;
990 long int index,
int *v,
int verbose_level)
993 int f_v = (verbose_level >= 1);
996 cout <<
"parabolic_neighbor52_even_unrank index=" << index << endl;
1006 cout <<
"parabolic_neighbor52_even_unrank ";
1014 long int i, type, index;
1015 int f_v = (verbose_level >= 1);
1018 cout <<
"parabolic_neighbor52_even_rank ";
1023 cout <<
"parabolic_neighbor52_even_rank v[2]" << endl;
1034 cout <<
"parabolic_neighbor52_even_rank type != 1" << endl;
1041 long int index,
int *v,
int verbose_level)
1043 long int len, sub_len, a, av, b, sub_index;
1044 long int sub_sub_index, multiplier;
1045 int f_v = (verbose_level >= 1);
1048 cout <<
"parabolic_neighbor34_unrank "
1049 "index=" << index << endl;
1055 cout <<
"case 1 index=" << index << endl;
1070 sub_index = index %
N1_mm2;
1073 cout <<
"case 2 a=" << a
1074 <<
" sub_index=" << sub_index << endl;
1090 sub_index = index %
N1_mm2;
1093 cout <<
"case 3 a=" << a
1094 <<
" sub_index=" << sub_index << endl;
1110 sub_index = index %
S_mm2;
1113 cout <<
"case 4 a=" << a
1114 <<
" sub_index=" << sub_index << endl;
1129 a = index / sub_len;
1130 sub_index = index % sub_len;
1132 sub_sub_index = sub_index %
N1_mm2;
1140 cout <<
"case 5 a=" << a <<
" b=" << b
1141 <<
" sub_sub_index=" << sub_sub_index << endl;
1151 cout <<
"case 5 multiplyer=" << multiplier << endl;
1156 cout <<
"parabolic_neighbor34_unrank index illegal" << endl;
1161 cout <<
"parabolic_neighbor34_unrank ";
1169 int len1, len2, len3, len4, av;
1170 int index, sub_len, a, b, sub_index, sub_sub_index, multiplyer;
1171 int f_v = (verbose_level >= 1);
1174 cout <<
"parabolic_neighbor34_rank " << endl;
1180 cout <<
"parabolic_neighbor34_rank v[n - 1]" << endl;
1183 if (v[
n - 2] == 0) {
1184 cout <<
"parabolic_neighbor34_rank v[n - 2] == 0" << endl;
1196 cout <<
"parabolic_neighbor34_rank "
1197 "v[2] != F->negate(1)" << endl;
1203 index =
rank_S(v + 3, 1,
m - 2);
1205 cout <<
"case 1 index=" << index << endl;
1212 sub_index =
rank_N1(v + 3, 1,
m - 2);
1214 cout <<
"case 2 a=" << a
1215 <<
" sub_index=" << sub_index << endl;
1217 index = (a - 1) *
N1_mm2 + sub_index;
1224 cout <<
"parabolic_neighbor34_rank v[1] != 1" << endl;
1229 cout <<
"parabolic_neighbor34_rank "
1230 "v[2] != F->negate(a)" << endl;
1236 sub_index =
rank_N1(v + 3, 1,
m - 2);
1238 cout <<
"case 3 a=" << a
1239 <<
" sub_index=" << sub_index << endl;
1241 index = (a - 1) *
N1_mm2 + sub_index;
1250 sub_index =
rank_S(v + 3, 1,
m - 2);
1252 cout <<
"case 4 a=" << a
1253 <<
" sub_index=" << sub_index << endl;
1255 index = (a - 1) *
S_mm2 + sub_index;
1266 cout <<
"parabolic_neighbor34_rank b = av" << endl;
1271 cout <<
"case 5 multiplyer=" << multiplyer << endl;
1274 sub_sub_index =
rank_N1(v + 3, 1,
m - 2);
1276 cout <<
"case 5 a=" << a <<
" b=" << b
1277 <<
" sub_sub_index=" << sub_sub_index << endl;
1282 sub_index = b *
N1_mm2 + sub_sub_index;
1283 index = (a - 1) * sub_len + sub_index;
1292 cout <<
"parabolic_neighbor34_rank illegal point" << endl;
1297 cout <<
"parabolic_neighbor34_rank index = " << index << endl;
1304 long int index,
int *v,
int verbose_level)
1306 long int a, sub_index;
1307 int f_v = (verbose_level >= 1);
1311 cout <<
"parabolic_neighbor53_unrank index=" << index << endl;
1321 cout <<
"case 1 index=" << index <<
" a=" << a
1322 <<
" sub_index=" << sub_index << endl;
1337 sub_index = index %
N1_mm2;
1340 cout <<
"case 2 index=" << index <<
" a=" << a
1341 <<
" sub_index=" << sub_index << endl;
1352 cout <<
"parabolic_neighbor53_unrank index illegal" << endl;
1357 cout <<
"parabolic_neighbor53_unrank ";
1366 int index, a, sub_index;
1367 int f_v = (verbose_level >= 1);
1370 cout <<
"parabolic_neighbor53_rank " << endl;
1376 cout <<
"parabolic_neighbor53_rank v[n - 2]" << endl;
1379 if (v[
n - 1] == 0) {
1380 cout <<
"parabolic_neighbor53_rank v[n - 1] == 0" << endl;
1391 index = (a - 1) *
Sbar_mm2 + sub_index;
1397 sub_index =
rank_N1(v + 3, 1,
m - 2);
1398 index = len1 + (a - 1) *
N1_mm2 + sub_index;
1402 cout <<
"parabolic_neighbor53_rank illegal point" << endl;
1407 cout <<
"parabolic_neighbor53_rank index = " << index << endl;
1413 long int index,
int *v,
int verbose_level)
1415 long int a, sub_index;
1416 int f_v = (verbose_level >= 1);
1417 long int len1, len2;
1420 cout <<
"parabolic_neighbor54_unrank index=" << index << endl;
1430 cout <<
"case 1 index=" << index
1432 <<
" sub_index=" << sub_index << endl;
1447 sub_index = index %
N1_mm2;
1450 cout <<
"case 2 index=" << index
1452 <<
" sub_index=" << sub_index << endl;
1463 cout <<
"parabolic_neighbor54_unrank index illegal" << endl;
1468 cout <<
"parabolic_neighbor54_unrank ";
1477 long int index, a, sub_index;
1478 int f_v = (verbose_level >= 1);
1481 cout <<
"parabolic_neighbor54_rank " << endl;
1487 cout <<
"normalized wrt subspace " << endl;
1492 cout <<
"parabolic_neighbor54_rank v[n - 2]" << endl;
1495 if (v[
n - 2] == 0) {
1496 cout <<
"parabolic_neighbor54_rank v[n - 1] == 0" << endl;
1507 index = (a - 1) *
Sbar_mm2 + sub_index;
1513 sub_index =
rank_N1(v + 3, 1,
m - 2);
1514 index = len1 + (a - 1) *
N1_mm2 + sub_index;
1518 cout <<
"parabolic_neighbor54_rank illegal point" << endl;
1523 cout <<
"parabolic_neighbor54_rank index = " << index << endl;
1534 long int &p1,
long int &p2,
long int rk,
int verbose_level)
1536 int f_v = (verbose_level >= 1);
1539 cout <<
"parabolic_unrank_line rk=" << rk << endl;
1542 cout <<
"orthogonal::parabolic_unrank_line "
1543 "Witt index zero, there is no line to unrank" << endl;
1555 cout <<
"reducing rk to " << rk <<
" l2=" <<
l2 << endl;
1566 cout <<
"reducing rk to " << rk <<
" l3=" <<
l3 << endl;
1598 cout <<
"error in orthogonal::parabolic_unrank_line, "
1599 "rk too big" << endl;
1605 int f_v = (verbose_level >= 1);
1606 long int p1_type, p2_type, p1_index, p2_index, type;
1610 cout <<
"parabolic_rank_line "
1611 "p1=" <<
p1 <<
" p2=" <<
p2 << endl;
1614 p1_type, p1_index, verbose_level);
1616 cout <<
"parabolic_rank_line "
1617 "p1_type=" << p1_type
1618 <<
" p1_index=" << p1_index << endl;
1621 p2_type, p2_index, verbose_level);
1623 cout <<
"parabolic_rank_line "
1624 "p2_type=" << p2_type
1625 <<
" p2_index=" << p2_index << endl;
1628 p1,
p2, p1_type, p2_type, verbose_level);
1630 cout <<
"parabolic_rank_line "
1631 "line type = " << type << endl;
1634 p1,
p2, cp1, cp2, verbose_level);
1636 cout <<
"parabolic_rank_line "
1637 "cp1=" << cp1 <<
" cp2=" << cp2 << endl;
1646 else if (type == 2) {
1654 else if (type == 3) {
1658 else if (type == 4) {
1662 else if (type == 5) {
1666 else if (type == 6) {
1670 else if (type == 7) {
1674 else if (type == 8) {
1679 cout <<
"parabolic_rank_line type nyi" << endl;
1685 long int &p1,
long int &p2,
long int index,
int verbose_level)
1687 int f_v = (verbose_level >= 1);
1688 int f_vv = (verbose_level >= 2);
1690 long int idx, sub_idx;
1693 cout <<
"error in parabolic_unrank_line_L1_even "
1694 "index too large" << endl;
1696 idx = index / (
q - 1);
1697 sub_idx = index % (
q - 1);
1699 cout <<
"parabolic_unrank_line_L1_even "
1700 "index=" << index <<
" idx=" << idx
1701 <<
" sub_idx=" << sub_idx << endl;
1705 cout <<
"p1=" <<
p1 << endl;
1709 cout <<
"p2=" <<
p2 << endl;
1712 cout <<
"parabolic_unrank_line_L1_even "
1713 "index=" << index <<
" p1=" <<
p1
1714 <<
" p2=" <<
p2 << endl;
1719 long int p1,
long int p2,
int verbose_level)
1721 int f_v = (verbose_level >= 1);
1724 long int index, type, idx, sub_idx;
1727 cout <<
"parabolic_unrank_line_L1_even "
1728 <<
" p1=" <<
p1 <<
" p2=" <<
p2 << endl;
1732 cout <<
"parabolic_rank_line_L1_even p1 must be in P5" << endl;
1737 cout <<
"parabolic_rank_line_L1_even p2 must be in P1" << endl;
1740 index = idx * (
q - 1) + sub_idx;
1745 long int &p1,
long int &p2,
long int index,
int verbose_level)
1747 int f_v = (verbose_level >= 1);
1750 long int idx, index2, rk1;
1753 cout <<
"parabolic_unrank_line_L1_odd "
1754 "index=" << index <<
" l1=" <<
l1
1755 <<
" a51=" <<
a51 << endl;
1758 cout <<
"error in parabolic_unrank_line_L1_odd "
1759 "index too large" << endl;
1763 index2 = index %
a51;
1767 cout <<
"rk1=" << rk1 << endl;
1771 cout <<
"p1=" <<
p1 << endl;
1780 cout <<
"parabolic_unrank_line_L1_odd "
1781 "index=" << index <<
" p1=" <<
p1
1782 <<
" p2=" <<
p2 << endl;
1787 long int p1,
long int p2,
int verbose_level)
1789 int f_v = (verbose_level >= 1);
1792 long int index, type, idx, index2, rk1;
1795 cout <<
"parabolic_rank_line_L1_odd "
1796 "p1=" <<
p1 <<
" p2=" <<
p2 << endl;
1803 cout <<
"parabolic_rank_line_L1_odd "
1804 "type=" << type <<
" idx=" << idx << endl;
1807 cout <<
"parabolic_rank_line_L1_odd "
1808 "point 1 must be of type 5" << endl;
1817 cout <<
"parabolic_rank_line_L1_odd "
1818 "idx=" << idx <<
" index2=" << index2 << endl;
1821 index = idx *
a51 + index2;
1824 cout <<
"parabolic_unrank_line_L1_odd index=" << index << endl;
1830 long int &p1,
long int &p2,
long int index,
int verbose_level)
1832 int f_v = (verbose_level >= 1);
1833 int f_vv = (verbose_level >= 2);
1835 long int idx, index2, rk1;
1838 cout <<
"parabolic_unrank_line_L2_even index=" << index << endl;
1841 cout <<
"error in parabolic_unrank_line_L2_even "
1842 "index too large" << endl;
1846 index2 = index %
a52a;
1857 cout <<
"p2=" <<
p2 << endl;
1860 cout <<
"parabolic_unrank_line_L2_even "
1861 "index=" << index <<
" p1=" <<
p1
1862 <<
" p2=" <<
p2 << endl;
1867 long int &p1,
long int &p2,
long int index,
int verbose_level)
1869 int f_v = (verbose_level >= 1);
1870 int f_vv = (verbose_level >= 2);
1872 long int idx, index2, rk1;
1875 cout <<
"parabolic_unrank_line_L2_odd "
1876 "index=" << index << endl;
1879 cout <<
"error in parabolic_unrank_line_L2_odd "
1880 "index too large" << endl;
1884 index2 = index %
a52a;
1886 cout <<
"parabolic_unrank_line_L2_odd "
1887 "idx=" << idx <<
" index2=" << index2 << endl;
1896 cout <<
"after Siegel_move_forward_by_index";
1904 cout <<
"p2=" <<
p2 << endl;
1907 cout <<
"parabolic_unrank_line_L2_odd "
1908 "index=" << index <<
" p1=" <<
p1
1909 <<
" p2=" <<
p2 << endl;
1914 long int p1,
long int p2,
int verbose_level)
1916 int f_v = (verbose_level >= 1);
1919 long int index, type, idx, index2, rk1;
1922 cout <<
"parabolic_rank_line_L2_even "
1923 "p1=" <<
p1 <<
" p2=" <<
p2 << endl;
1929 cout <<
"parabolic_rank_line_L2_even "
1930 "type=" << type <<
" idx=" << idx << endl;
1933 cout <<
"parabolic_rank_line_L2_even "
1934 "point 1 must be of type 5" << endl;
1941 cout <<
"after Siegel_move_backward_by_index";
1948 cout <<
"parabolic_rank_line_L2_even idx=" << idx
1949 <<
" index2=" << index2 << endl;
1952 index = idx *
a52a + index2;
1955 cout <<
"parabolic_rank_line_L2_even index=" << index << endl;
1961 long int p1,
long int p2,
int verbose_level)
1963 int f_v = (verbose_level >= 1);
1966 long int index, type, idx, index2, rk1;
1969 cout <<
"parabolic_rank_line_L2_odd "
1970 "p1=" <<
p1 <<
" p2=" <<
p2 << endl;
1976 cout <<
"parabolic_rank_line_L2_odd type=" << type
1977 <<
" idx=" << idx << endl;
1980 cout <<
"parabolic_rank_line_L2_odd "
1981 "point 1 must be of type 5" << endl;
1988 cout <<
"after Siegel_move_backward_by_index";
1995 cout <<
"parabolic_rank_line_L2_odd idx=" << idx
1996 <<
" index2=" << index2 << endl;
1999 index = idx *
a52a + index2;
2002 cout <<
"parabolic_unrank_line_L2_odd index=" << index << endl;
2008 long int &p1,
long int &p2,
long int index,
int verbose_level)
2010 int f_v = (verbose_level >= 1);
2013 long int idx, index2, idx2, field, rk1, rk2, a, b, c, multiplier, i;
2016 cout <<
"parabolic_unrank_line_L3 index=" << index << endl;
2019 cout <<
"error in parabolic_unrank_line_L3 "
2020 "index too large" << endl;
2024 index2 = index %
a32b;
2025 idx2 = idx / (
q - 1);
2026 field = idx % (
q - 1);
2029 cout <<
"parabolic_unrank_line_L3 idx=" << idx
2030 <<
" index2=" << index2 <<
" idx2=" << idx2
2031 <<
" field=" << field << endl;
2037 cout <<
"parabolic_unrank_line_L3 rk1=" << rk1
2038 <<
" rk2=" << rk2 <<
" idx2=" << idx2
2039 <<
" field=" << field << endl;
2055 cout <<
"after Siegel_move_forward" << endl;
2062 cout <<
"a=" << a <<
" b=" << b << endl;
2066 cout <<
"a != b but a = 0" << endl;
2070 cout <<
"a != b but b = 0" << endl;
2075 cout <<
"multiplier=" << multiplier << endl;
2077 for (i = 0; i <
n - 2; i++) {
2081 cout <<
"after scaling" << endl;
2086 cout <<
"c=" << c << endl;
2089 cout <<
"c != a" << endl;
2094 cout <<
"now changing the last components:" << endl;
2107 cout <<
"parabolic_unrank_line_L3 index=" << index
2108 <<
" p1=" <<
p1 <<
" p2=" <<
p2 << endl;
2114 int f_v = (verbose_level >= 1);
2117 long int index, idx, index2, idx2, field;
2118 long int rk1, rk2, type, a, b, c, i, multiplier;
2121 cout <<
"parabolic_rank_line_L3 "
2122 "p1=" <<
p1 <<
" p2=" <<
p2 << endl;
2137 cout <<
"after parabolic_normalize_point_wrt_subspace ";
2143 cout <<
"field=" << field << endl;
2148 type, idx2, verbose_level);
2150 cout <<
"parabolic_unrank_line_L3 "
2151 "rk1=" << rk1 <<
" rk2=" << rk2
2152 <<
" idx2=" << idx2 <<
" field=" << field << endl;
2155 cout <<
"parabolic_rank_line_L3 type != 5" << endl;
2164 idx = idx2 * (
q - 1) + (field - 1);
2168 cout <<
"after Siegel_move_backward" << endl;
2175 cout <<
"a=" << a <<
" b=" << b << endl;
2179 cout <<
"a != b but a = 0" << endl;
2183 cout <<
"a != b but b = 0" << endl;
2188 cout <<
"multiplier=" << multiplier << endl;
2190 for (i = 0; i <
n - 2; i++) {
2194 cout <<
"after scaling" << endl;
2199 cout <<
"c=" << c << endl;
2202 cout <<
"c != a" << endl;
2207 cout <<
"after scaling" << endl;
2215 cout <<
"parabolic_rank_line_L3 idx=" << idx
2216 <<
" index2=" << index2 <<
" idx2=" << idx2
2217 <<
" field=" << field << endl;
2220 index = idx *
a32b + index2;
2223 cout <<
"parabolic_unrank_line_L3 index=" << index << endl;
2230 long int &p1,
long int &p2,
long int index,
int verbose_level)
2233 int f_v = (verbose_level >= 1);
2236 long int idx, neighbor_idx, rk1;
2239 cout <<
"parabolic_unrank_line_L4 index=" << index << endl;
2242 cout <<
"error in parabolic_unrank_line_L4 index too large" << endl;
2246 neighbor_idx = index %
a53;
2248 cout <<
"parabolic_unrank_line_L4 idx=" << idx
2249 <<
" neighbor_idx=" << neighbor_idx << endl;
2261 cout <<
"p1=" <<
p1 <<
" ";
2264 cout <<
"p2=" <<
p2 <<
" ";
2269 cout <<
"parabolic_unrank_line_L4 index=" << index
2270 <<
" p1=" <<
p1 <<
" p2=" <<
p2 << endl;
2276 int f_v = (verbose_level >= 1);
2279 long int index, idx, neighbor_idx, rk1, type;
2282 cout <<
"parabolic_rank_line_L4 "
2283 "p1=" <<
p1 <<
" p2=" <<
p2 << endl;
2289 cout <<
"parabolic_rank_line_L4 type != 5" << endl;
2297 cout <<
"after Siegel_move_backward_by_index";
2304 cout <<
"parabolic_rank_line_L4 idx=" << idx
2305 <<
" neighbor_idx=" << neighbor_idx << endl;
2308 index = idx *
a53 + neighbor_idx;
2311 cout <<
"parabolic_rank_line_L4 index=" << index << endl;
2317 long int &p1,
long int &p2,
long int index,
int verbose_level)
2320 int f_v = (verbose_level >= 1);
2323 long int idx, neighbor_idx, rk1;
2326 cout <<
"parabolic_unrank_line_L5 index=" << index << endl;
2329 cout <<
"error in parabolic_unrank_line_L5 index too large" << endl;
2333 neighbor_idx = index %
a54;
2335 cout <<
"parabolic_unrank_line_L5 idx=" << idx
2336 <<
" neighbor_idx=" << neighbor_idx << endl;
2348 cout <<
"p1=" <<
p1 <<
" ";
2351 cout <<
"p2=" <<
p2 <<
" ";
2356 cout <<
"parabolic_unrank_line_L5 index=" << index
2357 <<
" p1=" <<
p1 <<
" p2=" <<
p2 << endl;
2363 int f_v = (verbose_level >= 1);
2366 long int index, idx, neighbor_idx, rk1, type;
2369 cout <<
"parabolic_rank_line_L5 p1=" <<
p1 <<
" p2=" <<
p2 << endl;
2375 cout <<
"parabolic_rank_line_L5 type != 5" << endl;
2383 cout <<
"after Siegel_move_backward_by_index";
2390 cout <<
"parabolic_rank_line_L5 idx=" << idx
2391 <<
" neighbor_idx=" << neighbor_idx << endl;
2394 index = idx *
a54 + neighbor_idx;
2397 cout <<
"parabolic_rank_line_L5 index=" << index << endl;
2403 long int &p1,
long int &p2,
long int index,
int verbose_level)
2406 int f_v = (verbose_level >= 1);
2412 cout <<
"parabolic_unrank_line_L6 index=" << index << endl;
2415 cout <<
"error in parabolic_unrank_line_L6 "
2416 "index too large" << endl;
2430 cout <<
"parabolic_unrank_line_L6 "
2432 <<
" p1=" <<
p1 <<
" p2=" <<
p2 << endl;
2437 long int p1,
long int p2,
int verbose_level)
2439 int f_v = (verbose_level >= 1);
2446 cout <<
"parabolic_rank_line_L6 p1=" <<
p1 <<
" p2=" <<
p2 << endl;
2450 if (
v1[
n - 2] ||
v1[
n - 1] ||
v2[
n - 2] ||
v2[
n - 1]) {
2451 cout <<
"parabolic_rank_line_L6 points not in subspace" << endl;
2459 cout <<
"parabolic_rank_line_L6 index=" << index << endl;
2465 long int &p1,
long int &p2,
long int index,
int verbose_level)
2468 int f_v = (verbose_level >= 1);
2473 cout <<
"parabolic_unrank_line_L7 index=" << index << endl;
2476 cout <<
"error in parabolic_unrank_line_L7 "
2477 "index too large" << endl;
2484 cout <<
"parabolic_unrank_line_L7 "
2485 "index=" << index <<
" p1=" <<
p1 <<
" p2=" <<
p2 << endl;
2491 int f_v = (verbose_level >= 1);
2494 long int type, index;
2497 cout <<
"parabolic_rank_line_L7 p1=" <<
p1 <<
" p2=" <<
p2 << endl;
2500 cout <<
"parabolic_rank_line_L7 p1 != pt_Q" << endl;
2505 cout <<
"parabolic_rank_line_L7 type != 5" << endl;
2510 cout <<
"parabolic_rank_line_L7 index=" << index << endl;
2516 long int &p1,
long int &p2,
long int index,
int verbose_level)
2519 int f_v = (verbose_level >= 1);
2524 cout <<
"parabolic_unrank_line_L8 index=" << index << endl;
2527 cout <<
"error in parabolic_unrank_line_L8 "
2528 "index too large" << endl;
2535 cout <<
"parabolic_unrank_line_L8 index=" << index
2536 <<
" p1=" <<
p1 <<
" p2=" <<
p2 << endl;
2542 int f_v = (verbose_level >= 1);
2545 long int type, index;
2548 cout <<
"parabolic_rank_line_L8 p1=" <<
p1 <<
" p2=" <<
p2 << endl;
2551 cout <<
"parabolic_rank_line_L8 p1 != pt_P" << endl;
2556 cout <<
"parabolic_rank_line_L8 type != 5" << endl;
2561 cout <<
"parabolic_rank_line_L8 index=" << index << endl;
2567 long int pt1_type,
long int pt2_type,
int verbose_level)
2569 int f_v = (verbose_level >= 1);
2573 cout <<
"parabolic_line_type_given_point_types "
2574 "pt1=" << pt1 <<
" pt2=" << pt2 << endl;
2576 if (pt1_type > pt2_type) {
2578 pt2, pt1, pt2_type, pt1_type, verbose_level);
2583 if (pt1_type == 1) {
2588 if (pt2_type == 1) {
2591 else if (pt2_type == 2) {
2594 else if (pt2_type == 3) {
2597 else if (pt2_type == 4) {
2600 else if (pt2_type == 5) {
2605 else if (pt1_type == 2) {
2607 if (pt2_type == 2) {
2610 else if (pt2_type == 3) {
2613 else if (pt2_type == 4) {
2616 else if (pt2_type == 5) {
2621 if (pt2_type == 2) {
2624 else if (pt2_type == 3) {
2627 else if (pt2_type == 4) {
2630 else if (pt2_type == 5) {
2635 else if (pt1_type == 3) {
2637 if (pt2_type == 3) {
2640 else if (pt2_type == 4) {
2643 else if (pt2_type == 5) {
2646 else if (pt2_type == 6) {
2651 if (pt2_type == 3) {
2654 else if (pt2_type == 4) {
2657 else if (pt2_type == 5) {
2660 else if (pt2_type == 6) {
2665 else if (pt1_type == 4) {
2667 if (pt2_type == 4) {
2670 else if (pt2_type == 5) {
2673 else if (pt2_type == 7) {
2678 if (pt2_type == 4) {
2681 else if (pt2_type == 5) {
2684 else if (pt2_type == 7) {
2689 else if (pt1_type == 5) {
2690 if (pt2_type == 5) {
2693 else if (pt2_type == 6) {
2696 else if (pt2_type == 7) {
2700 cout <<
"orthogonal::parabolic_line_type_given_point_types "
2701 "illegal combination" << endl;
2702 cout <<
"pt1_type = " << pt1_type << endl;
2703 cout <<
"pt2_type = " << pt2_type << endl;
2709 int verbose_level = 0;
2727 int verbose_level = 0;
2753 int verbose_level = 0;
2767 int verbose_level = 0;
2782 cout <<
"parabolic_decide_P33 ending is not dependent" << endl;
2815 int verbose_level = 0;
2828 cout <<
"parabolic_decide_P44 ending is not dependent" << endl;
2834 long int rk2,
int *x,
int *y,
int *z,
int verbose_level)
2837 int f_v = (verbose_level >= 1);
2840 for (i = 0; i <
n; i++) {
2847 cout <<
"find_root_parabolic_xyz rk2=" << rk2 << endl;
2858 if (y[2] && y[0] == 0) {
2865 cout <<
"find_root_parabolic_xyz n == 3, "
2866 "we should not be in this case" << endl;
2871 for (i = 3; i <
n; i++) {
2885 cout <<
"error in find_root_parabolic_xyz" << endl;
2892 int f_v = (verbose_level >= 1);
2893 long int root, u, v;
2896 cout <<
"find_root_parabolic rk2=" << rk2 << endl;
2899 cout <<
"find_root_parabolic: rk2 must not be 0" << endl;
2904 cout <<
"find_root_parabolic: m must not be 1" << endl;
2911 cout <<
"found root: ";
2919 cout <<
"find_root_parabolic u=" << u << endl;
2924 cout <<
"find_root_parabolic v=" << v << endl;
2929 cout <<
"find_root_parabolic root=" << root << endl;
2935 int line_type,
long int pt1,
long int pt2,
2936 long int &cpt1,
long int &cpt2,
int verbose_level)
2938 int f_v = (verbose_level >= 1);
2941 cout <<
"parabolic_canonical_points_of_line "
2942 "line_type=" << line_type
2943 <<
" pt1=" << pt1 <<
" pt2=" << pt2 << endl;
2945 if (line_type == 1) {
2953 else if (line_type == 2) {
2956 else if (line_type == 3) {
2959 else if (line_type == 4) {
2962 else if (line_type == 5) {
2965 else if (line_type == 6) {
2969 else if (line_type == 7) {
2972 else if (line_type == 8) {
2976 cout <<
"parabolic_canonical_points_of_line "
2977 "of type " << line_type << endl;
2978 cout <<
"pt1=" << pt1 <<
" pt2=" << pt2 << endl;
2979 cout <<
"cpt1=" << cpt1 <<
" cpt2=" << cpt2 << endl;
2984 long int pt1,
long int pt2,
long int &cpt1,
long int &cpt2)
2986 int verbose_level = 0;
3004 cout <<
"parabolic_canonical_points_L1_even ending "
3005 "of v1 is not zero" << endl;
3008 for (i = 1; i <
n - 2; i++) {
3016 cout <<
"parabolic_canonical_points_L1_even "
3029 long int pt1,
long int pt2,
long int &cpt1,
long int &cpt2)
3031 int verbose_level = 0;
3037 cout <<
"parabolic_canonical_points_separate_P5" << endl;
3039 int_vec_print(cout,
v1,
n);
3041 int_vec_print(cout,
v2,
n);
3044 for (i =
n - 2; i <
n; i++)
3050 cout <<
"after Gauss_step" << endl;
3052 int_vec_print(cout,
v1,
n);
3054 int_vec_print(cout,
v2,
n);
3058 cout <<
"parabolic_canonical_points_separate_P5 "
3059 "ending of v1 is not zero" << endl;
3071 long int pt1,
long int pt2,
long int &cpt1,
long int &cpt2)
3073 int verbose_level = 0;
3079 cout <<
"parabolic_canonical_points_L3 v1[n - 2]" << endl;
3084 cout <<
"parabolic_canonical_points_L3 v2[n - 1]" << endl;
3093 long int pt1,
long int pt2,
long int &cpt1,
long int &cpt2)
3095 int verbose_level = 0;
3102 cout <<
"parabolic_canonical_points_L7 "
3103 "ending of v2 is not zero" << endl;
3108 for (i = 0; i <
n - 2; i++) {
3112 cout <<
"parabolic_canonical_points_L7 "
3122 cout <<
"parabolic_canonical_points_L7 "
3123 "cpt1 != pt_Q" << endl;
3130 long int pt1,
long int pt2,
long int &cpt1,
long int &cpt2)
3132 int verbose_level = 0;
3139 cout <<
"parabolic_canonical_points_L8 "
3140 "ending of v2 is not zero" << endl;
3145 for (i = 0; i <
n - 2; i++) {
3149 cout <<
"parabolic_canonical_points_L8 "
3159 cout <<
"parabolic_canonical_points_L8 "
3160 "cpt1 != pt_P" << endl;
3167 int *u,
int *v,
int stride,
int m)
3172 u + stride, v + stride, stride,
m);
3176 b =
F->
mult(2, u[0]);
3177 b =
F->
mult(b, v[0]);
3184 int *v,
int stride,
int n)
3205 for (i =
n - 3; i >= 0; i--) {
3210 cout <<
"parabolic_normalize_point_wrt_subspace i < 0" << endl;
3217 for (i = 0; i <
n; i++) {
3218 v[i * stride] =
F->
mult(av, v[i * stride]);
3223 int &f_start_with_one,
int &middle_value,
int &end_value,
3226 int f_v = (verbose_level >= 1);
3230 cout <<
"orthogonal::parabolic_point_properties ";
3237 cout <<
"error in parabolic_point_properties: "
3238 "v[0] != 1" << endl;
3241 f_start_with_one =
TRUE;
3244 f_start_with_one =
FALSE;
3247 cout <<
"orthogonal::parabolic_point_properties "
3248 "after normalization: ";
3254 v + 1 * stride, stride,
m - 1);
3256 v + (1 + 2 * (
m - 1)) * stride, stride, 1);
3261 int i, j, *V1, *V2, a, b;
3265 for (i = 1; i <
n - 2; i++) {
3266 if (vec1[i] == 0 && vec2[i] == 0)
3277 for (j = i; j <
n - 2; j++) {
void PG_element_normalize_from_front(int *v, int stride, int len)
void PG_element_normalize(int *v, int stride, int len)
void parabolic_neighbor54_unrank(long int index, int *v, int verbose_level)
int parabolic_decide_P11_odd(long int pt1, long int pt2)
long int parabolic_neighbor51_odd_rank(int *v, 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)
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 parabolic_unrank_line(long int &p1, long int &p2, long int rk, int verbose_level)
void parabolic_canonical_points_L8(long int pt1, long int pt2, long int &cpt1, long int &cpt2)
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)
field_theory::finite_field * F
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)
long int parabolic_odd_type_and_index_to_point_rk(long int type, long int index, int verbose_level)
void find_root_parabolic_xyz(long int rk2, int *x, int *y, int *z, int verbose_level)
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)
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 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)
int parabolic_type_and_index_to_point_rk(int type, int index, int verbose_level)
void Gauss_step(int *v1, int *v2, int len, int idx)
long int parabolic_neighbor53_rank(int *v, 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 parabolic_rank_line_L6(long int p1, long int p2, 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 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)
long int parabolic_rank_line_L4(long int p1, long int p2, int verbose_level)
void parabolic_neighbor34_unrank(long int index, int *v, int verbose_level)
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 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)
int parabolic_is_middle_dependent(int *vec1, int *vec2)
void Siegel_move_backward(int *v1, int *v2, int *v3, int *v4, 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 scalar_multiply_vector(int *u, int stride, int len, int multiplier)
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
int last_non_zero_entry(int *u, int stride, int len)
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)
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)
int evaluate_bilinear_form(int *u, int *v, int stride)
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)
void parabolic_canonical_points_of_line(int line_type, long int pt1, long int pt2, long int &cpt1, long int &cpt2, int verbose_level)
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 parabolic_point_normalize(int *v, int stride, int n)
int parabolic_decide_P45(long int pt1, long int pt2)
void parabolic_neighbor53_unrank(long int index, int *v, int verbose_level)
void unrank_S(int *v, int stride, int m, int rk)
long int rank_N1(int *v, int stride, int m)
int triple_is_collinear(long int pt1, long int pt2, long int pt3)
void parabolic_unrank_line_L8(long int &p1, long int &p2, long int index, 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)
void parabolic_canonical_points_L1_even(long int pt1, long int pt2, long int &cpt1, long int &cpt2)
long int parabolic_neighbor52_even_rank(int *v, int verbose_level)
long int rank_Sbar(int *v, int stride, int m)
int parabolic_decide_P33(long int pt1, long int pt2)
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 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 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)
void Siegel_move_forward(int *v1, int *v2, int *v3, int *v4, int verbose_level)
void normalize_point(int *v, int stride)
void parabolic_unrank_line_L6(long int &p1, long int &p2, long int index, 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)
int * minus_squares_without
#define Int_vec_print(A, B, C)
the orbiter library for the classification of combinatorial objects