Orbiter 2022
Combinatorial Objects
geometric_object_description.cpp
Go to the documentation of this file.
1/*
2 * geometric_object_description.cpp
3 *
4 * Created on: Nov 9, 2019
5 * Author: anton
6 */
7
8
9
10
11
12
13#include "foundations.h"
14
15using namespace std;
16
17
18namespace orbiter {
19namespace layer1_foundations {
20namespace geometry {
21
22
23
24
26{
27 P = NULL;
28
30 f_short = FALSE;
33
37 f_Segre = FALSE;
38 f_Payne = FALSE;
41
43 BLT_k = 0;
45
46#if 0
47 f_BLT_Linear = FALSE;
48 f_BLT_Fisher = FALSE;
49 f_BLT_Mondello = FALSE;
50 f_BLT_FTWKB = FALSE;
51#endif
52
53 f_ovoid = FALSE;
55
56 f_Baer = FALSE;
57
60
62
63 f_cuspidal_cubic = FALSE; // cuspidal cubic in PG(2,q)
64 f_twisted_cubic = FALSE; // twisted cubic in PG(3,q)
65
69
70 //f_Hill_cap_56 = FALSE;
71
76
78
81
84 f_Uab = FALSE;
85 parameter_a = 0;
86 parameter_b = 0;
87
90 pt = 0;
91
95
97
99 //variety_label;
100 //variety_label_txt
101 variety_degree = 0;
102 variety_n = 0;
103 //variety_coeffs;
105
107 //Variety_coeffs
108
110 //std::string number_of_conditions_satisfied_fname;
111
112
114 //curve_label_txt;
115 //curve_label_tex;
116 curve_nb_vars = 0;
117 curve_degree = 0;
118 //curve_coeffs = NULL;
119
120 f_set = FALSE;
121 //set_text;
122
123}
124
126{
127
128}
129
130
131int geometric_object_description::read_arguments(int argc, std::string *argv,
132 int verbose_level)
133{
134 int i;
136
137 cout << "geometric_object_description::read_arguments" << endl;
138 for (i = 0; i < argc; i++) {
139
140 if (ST.stringcmp(argv[i], "-hyperoval") == 0) {
142 cout << "-hyperoval " << endl;
143 }
144 else if (ST.stringcmp(argv[i], "-subiaco_oval") == 0) {
146 f_short = ST.strtoi(argv[++i]);
147 cout << "-subiaco_oval " << f_short << endl;
148 }
149 else if (ST.stringcmp(argv[i], "-subiaco_hyperoval") == 0) {
151 cout << "-subiaco_hyperoval " << endl;
152 }
153 else if (ST.stringcmp(argv[i], "-adelaide_hyperoval") == 0) {
155 cout << "-adelaide_hyperoval " << endl;
156 }
157 else if (ST.stringcmp(argv[i], "-translation") == 0) {
159 translation_exponent = ST.strtoi(argv[++i]);
160 cout << "-translation " << translation_exponent << endl;
161 }
162 else if (ST.stringcmp(argv[i], "-Segre") == 0) {
163 f_Segre = TRUE;
164 cout << "-segre" << endl;
165 }
166 else if (ST.stringcmp(argv[i], "-Payne") == 0) {
167 f_Payne = TRUE;
168 cout << "-Payne" << endl;
169 }
170 else if (ST.stringcmp(argv[i], "-Cherowitzo") == 0) {
172 cout << "-Cherowitzo" << endl;
173 }
174 else if (ST.stringcmp(argv[i], "-OKeefe_Penttila") == 0) {
176 cout << "-OKeefe_Penttila" << endl;
177 }
178
179
180 else if (ST.stringcmp(argv[i], "-BLT_database") == 0) {
182 BLT_k = ST.strtoi(argv[++i]);
183 cout << "-BLT_database " << BLT_k << endl;
184 }
185 else if (ST.stringcmp(argv[i], "-BLT_in_PG") == 0) {
187 cout << "-BLT_in_PG " << endl;
188 }
189
190#if 0
191 else if (stringcmp(argv[i], "-BLT_Linear") == 0) {
192 f_BLT_Linear = TRUE;
193 cout << "-BLT_Linear " << endl;
194 }
195 else if (stringcmp(argv[i], "-BLT_Fisher") == 0) {
196 f_BLT_Fisher = TRUE;
197 cout << "-BLT_Fisher " << endl;
198 }
199 else if (stringcmp(argv[i], "-BLT_Mondello") == 0) {
200 f_BLT_Mondello = TRUE;
201 cout << "-BLT_Mondello " << endl;
202 }
203 else if (stringcmp(argv[i], "-BLT_FTWKB") == 0) {
204 f_BLT_FTWKB = TRUE;
205 cout << "-BLT_FTWKB " << endl;
206 }
207#endif
208
209 else if (ST.stringcmp(argv[i], "-ovoid") == 0) {
210 f_ovoid = TRUE;
211 cout << "-ovoid " << endl;
212 }
213 else if (ST.stringcmp(argv[i], "-ovoid_ST") == 0) {
215 cout << "-ovoid_ST " << endl;
216 }
217 else if (ST.stringcmp(argv[i], "-Baer") == 0) {
218 f_Baer = TRUE;
219 cout << "-Baer " << endl;
220 }
221 else if (ST.stringcmp(argv[i], "-orthogonal") == 0) {
223 orthogonal_epsilon = ST.strtoi(argv[++i]);
224 cout << "-orthogonal " << orthogonal_epsilon << endl;
225 }
226 else if (ST.stringcmp(argv[i], "-hermitian") == 0) {
228 cout << "-hermitian" << endl;
229 }
230 else if (ST.stringcmp(argv[i], "-cuspidal_cubic") == 0) {
232 cout << "-cuspidal_cubic " << endl;
233 }
234 else if (ST.stringcmp(argv[i], "-twisted_cubic") == 0) {
236 cout << "-twisted_cubic " << endl;
237 }
238 else if (ST.stringcmp(argv[i], "-elliptic_curve") == 0) {
240 elliptic_curve_b = ST.strtoi(argv[++i]);
241 elliptic_curve_c = ST.strtoi(argv[++i]);
242 cout << "-elliptic_curve " << elliptic_curve_b
243 << " " << elliptic_curve_c << endl;
244 }
245#if 0
246 else if (stringcmp(argv[i], "-Hill_cap_56") == 0) {
247 f_Hill_cap_56 = TRUE;
248 cout << "-Hill_cap_56 " << endl;
249 }
250#endif
251 else if (ST.stringcmp(argv[i], "-ttp_construction_A") == 0) {
254 cout << "-ttp_construction_A" << endl;
255 }
256 else if (ST.stringcmp(argv[i], "-ttp_construction_A_hyperoval") == 0) {
260 cout << "-ttp_construction_A_hyperoval" << endl;
261 }
262 else if (ST.stringcmp(argv[i], "-ttp_construction_B") == 0) {
265 cout << "-ttp_construction_B" << endl;
266 }
267 else if (ST.stringcmp(argv[i], "-unital_XXq_YZq_ZYq") == 0) {
269 cout << "-unital_XXq_YZq_ZYq" << endl;
270 }
271 else if (ST.stringcmp(argv[i], "-desarguesian_line_spread_in_PG_3_q") == 0) {
273 cout << "-desarguesian_line_spread_in_PG_3_q" << endl;
274 }
275 else if (ST.stringcmp(argv[i], "-embedded_in_PG_4_q") == 0) {
277 cout << "-embedded_in_PG_4_q" << endl;
278 }
279 else if (ST.stringcmp(argv[i], "-Buekenhout_Metz") == 0) {
281 cout << "-Buekenhout_Metz " << endl;
282 }
283 else if (ST.stringcmp(argv[i], "-classical") == 0) {
285 cout << "-classical " << endl;
286 }
287 else if (ST.stringcmp(argv[i], "-Uab") == 0) {
288 f_Uab = TRUE;
289 parameter_a = ST.strtoi(argv[++i]);
290 parameter_b = ST.strtoi(argv[++i]);
291 cout << "-Uab " << parameter_a << " " << parameter_b << endl;
292 }
293 else if (ST.stringcmp(argv[i], "-whole_space") == 0) {
295 cout << "-whole_space " << endl;
296 }
297 else if (ST.stringcmp(argv[i], "-hyperplane") == 0) {
299 pt = ST.strtoi(argv[++i]);
300 cout << "-hyperplane " << pt << endl;
301 }
302 else if (ST.stringcmp(argv[i], "-segre_variety") == 0) {
304 segre_variety_a = ST.strtoi(argv[++i]);
305 segre_variety_b = ST.strtoi(argv[++i]);
306 cout << "-segre_variety " << segre_variety_a
307 << " " << segre_variety_b << endl;
308 }
309 else if (ST.stringcmp(argv[i], "-Maruta_Hamada_arc") == 0) {
311 cout << "-Maruta_Hamada_arc " << endl;
312 }
313 else if (ST.stringcmp(argv[i], "-projective_variety") == 0) {
315 variety_label_txt.assign(argv[++i]);
316 variety_label_tex.assign(argv[++i]);
317 variety_degree = ST.strtoi(argv[++i]);
318
319
321
322 i++;
323 Os.get_string_from_command_line(variety_coeffs, argc, argv, i, verbose_level);
324 i--;
325
326 cout << "-projective_variety "
327 << variety_label_txt << " "
328 << variety_label_tex << " "
329 << variety_degree << " "
330 << variety_coeffs << endl;
331 }
332 else if (ST.stringcmp(argv[i], "-intersection_of_zariski_open_sets") == 0) {
334 variety_label_txt.assign(argv[++i]);
335 variety_label_tex.assign(argv[++i]);
336 variety_degree = ST.strtoi(argv[++i]);
337 variety_n = ST.strtoi(argv[++i]);
338
339 int j;
340
341
343
344 i++;
345
346 for (j = 0; j < variety_n; j++) {
347 string s;
348
349 cout << "reading argument " << j << " / " << variety_n << " : " << argv[i] << endl;
350
351 Os.get_string_from_command_line(s, argc, argv, i, verbose_level);
352 Variety_coeffs.push_back(s);
353 }
354
355 i--;
356
357
358 cout << "-intersection_of_zariski_open_sets "
359 << variety_label_txt << " "
360 << variety_label_tex << " "
361 << variety_degree << " "
362 << variety_n << endl;
363 for (j = 0; j < variety_n; j++) {
364 cout << j << " : " << Variety_coeffs[j] << endl;
365 }
366 }
367
368
369 else if (ST.stringcmp(argv[i], "-number_of_conditions_satisfied") == 0) {
371 variety_label_txt.assign(argv[++i]);
372 variety_label_tex.assign(argv[++i]);
373 variety_degree = ST.strtoi(argv[++i]);
374 variety_n = ST.strtoi(argv[++i]);
375
376 number_of_conditions_satisfied_fname.assign(argv[++i]);
377
378
379 int j;
380
382
383 i++;
384
385 for (j = 0; j < variety_n; j++) {
386 string s;
387
388 cout << "reading argument " << j << " / " << variety_n << " : " << argv[i] << endl;
389
390 Os.get_string_from_command_line(s, argc, argv, i, verbose_level);
391 Variety_coeffs.push_back(s);
392 }
393
394 i--;
395
396
397 cout << "-number_of_conditions_satisfied "
398 << variety_label_txt << " "
399 << variety_label_tex << " "
400 << variety_degree << " "
401 << variety_n << endl;
402 for (j = 0; j < variety_n; j++) {
403 cout << j << " : " << Variety_coeffs[j] << endl;
404 }
405 }
406
407
408
409 else if (ST.stringcmp(argv[i], "-projective_curve") == 0) {
411 curve_label_txt.assign(argv[++i]);
412 curve_label_tex.assign(argv[++i]);
413 curve_nb_vars = ST.strtoi(argv[++i]);
414 curve_degree = ST.strtoi(argv[++i]);
415 curve_coeffs.assign(argv[++i]);
416 cout << "-projective_curve "
417 << curve_label_txt << " "
418 << curve_label_tex << " "
419 << curve_nb_vars << " "
420 << curve_degree << " "
421 << curve_coeffs << endl;
422 }
423 else if (ST.stringcmp(argv[i], "-monomial_type_LEX") == 0) {
425 cout << "-monomial_type_LEX " << endl;
426 }
427 else if (ST.stringcmp(argv[i], "-monomial_type_PART") == 0) {
429 cout << "-monomial_type_PART " << endl;
430 }
431 else if (ST.stringcmp(argv[i], "-set") == 0) {
432 f_set = TRUE;
433 set_text.assign(argv[++i]);
434 cout << "-set " << set_text << endl;
435 }
436 else if (ST.stringcmp(argv[i], "-end") == 0) {
437 break;
438 }
439 else {
440 cout << "geometric_object_description::read_arguments unknown command " << argv[i] << endl;
441 exit(1);
442 }
443 } // next i
444 cout << "geometric_object_description::read_arguments done" << endl;
445 return i + 1;
446}
447
449{
450 if (f_hyperoval) {
451 cout << "-hyperoval " << endl;
452 }
453 if (f_subiaco_oval) {
454 cout << "-subiaco_oval " << f_short << endl;
455 }
457 cout << "-subiaco_hyperoval " << endl;
458 }
460 cout << "-adelaide_hyperoval " << endl;
461 }
462 if (f_translation) {
463 cout << "-translation " << translation_exponent << endl;
464 }
465 if (f_Segre) {
466 cout << "-segre" << endl;
467 }
468 if (f_Payne) {
469 cout << "-Payne" << endl;
470 }
471 if (f_Cherowitzo) {
472 cout << "-Cherowitzo" << endl;
473 }
474 if (f_OKeefe_Penttila) {
475 cout << "-OKeefe_Penttila" << endl;
476 }
477
478
479 if (f_BLT_database) {
480 cout << "-BLT_database " << BLT_k << endl;
481 }
482 if (f_BLT_in_PG) {
483 cout << "-BLT_in_PG " << endl;
484 }
485
486 if (f_ovoid) {
487 cout << "-ovoid " << endl;
488 }
489 if (f_ovoid_ST) {
490 cout << "-ovoid_ST " << endl;
491 }
492 if (f_Baer) {
493 cout << "-Baer " << endl;
494 }
495 if (f_orthogonal) {
496 cout << "-orthogonal " << orthogonal_epsilon << endl;
497 }
498 if (f_hermitian) {
499 cout << "-hermitian" << endl;
500 }
501 if (f_cuspidal_cubic) {
502 cout << "-cuspidal_cubic " << endl;
503 }
504 if (f_twisted_cubic) {
506 cout << "-twisted_cubic " << endl;
507 }
508 if (f_elliptic_curve) {
509 cout << "-elliptic_curve " << elliptic_curve_b
510 << " " << elliptic_curve_c << endl;
511 }
513 cout << "-ttp_construction_A" << endl;
514 }
516 cout << "-ttp_construction_A_hyperoval" << endl;
517 }
519 cout << "-ttp_construction_B" << endl;
520 }
522 cout << "-unital_XXq_YZq_ZYq" << endl;
523 }
525 cout << "-desarguesian_line_spread_in_PG_3_q" << endl;
526 }
528 cout << "-embedded_in_PG_4_q" << endl;
529 }
530 if (f_Buekenhout_Metz) {
531 cout << "-Buekenhout_Metz " << endl;
532 }
533 if (f_classical) {
534 cout << "-classical " << endl;
535 }
536 if (f_Uab) {
537 cout << "-Uab " << parameter_a << " " << parameter_b << endl;
538 }
539 if (f_whole_space) {
540 cout << "-whole_space " << endl;
541 }
542 if (f_hyperplane) {
543 cout << "-hyperplane " << pt << endl;
544 }
545 if (f_segre_variety) {
546 cout << "-segre_variety " << segre_variety_a
547 << " " << segre_variety_b << endl;
548 }
550 cout << "-Maruta_Hamada_arc " << endl;
551 }
553 cout << "-projective_variety "
554 << variety_label_txt << " "
555 << variety_label_tex << " "
556 << variety_degree << " "
557 << variety_coeffs << endl;
558 }
560 cout << "-intersection_of_zariski_open_sets "
561 << variety_label_txt << " "
562 << variety_label_tex << " "
563 << variety_degree << " "
564 << variety_n << endl;
565 int j;
566 for (j = 0; j < variety_n; j++) {
567 cout << j << " : " << Variety_coeffs[j] << endl;
568 }
569 }
570
571
573 cout << "-number_of_conditions_satisfied "
574 << variety_label_txt << " "
575 << variety_label_tex << " "
576 << variety_degree << " "
577 << variety_n << endl;
578 int j;
579 for (j = 0; j < variety_n; j++) {
580 cout << j << " : " << Variety_coeffs[j] << endl;
581 }
582 }
583
584
585
586 if (f_projective_curve) {
587 cout << "-projective_curve "
588 << curve_label_txt << " "
589 << curve_label_tex << " "
590 << curve_nb_vars << " "
591 << curve_degree << " "
592 << curve_coeffs << endl;
593 }
594 if (f_set) {
595 cout << "-set " << set_text << endl;
596 }
597}
598
599
600
601
602}}}
603
604
functions related to strings and character arrays
void get_string_from_command_line(std::string &p, int argc, std::string *argv, int &i, int verbose_level)
#define TRUE
Definition: foundations.h:231
#define FALSE
Definition: foundations.h:234
the orbiter library for the classification of combinatorial objects