# Space conics

Jonathan Hauenstein and Frank Sottile
We consider the enumerative geometry problem of counting the number of real space conics that meet k points and 8-2k lines for k = 0, 1, 2. First, for each k, we solved a random complex instance using Bertini. We then solved many real instances with Bertini using a parameter homotopy and certifed the number of real solutions using alphaCertified.
The remainder of this page documents how to perform these calculations and the files we used and created in the course of this test.
Directions
Before you begin, you will need to have a working binary of Bertini and alphaCertified on your machine along with the GMP library.
Note that we describe this computation for k = 2 and provide the necessary files for k = 0 and k = 1 at the bottom of the page.
• Solve for a random complex instance by running Bertini with input file Conic2orig.bertini.
>: bertini Conic2orig.bertini
For k = 2, this takes a few seconds, but, using a single processor, it takes close to an hour for k = 0.
The output file of interest is nonsingular_solutions, which will be the start points for the parameter homotopy.
• Rename nonsingular_solutions as start. These will be the start points for the parameter homotopy used to solve the real instances.
>: mv nonsingular_solutions start
• Create the executable Instances2.out by compiling Instances2.c. This executable creates the input files needed to solve for a random real instance.
>: gcc -o Instances2.out Instances2.c -lgmp
• Run Instances2.out. This creates Conic2.bertini, which is a parameter homotopy to compute numerical solutions for a random real instance, and Conic2.poly, which is the polynomial system used to certify the solutions. For example, Conic2.bertini and Conic2.poly.
>: ./Instances2.out
• Use the parameter homotopy described in Conic2.bertini to compute the numerical solutions.
>: bertini Conic2.bertini
The output file of interest is nonsingular_solutions, which is part of the input for alphaCertified. Here is nonsingular_solutions for the running example.
• We now use alphaCertified to certify the number of real solutions. This is accomplished by running alphaCertified with the polynomial system described in Conic2.poly using the points contained in nonsingular_solutions created by Bertini in the last step. The configurations in settings tell alphaCertified to utilize 256-bit precision. We recommend capturing the output for perusal.
>: alphaCertified Conic2.poly nonsingular_solutions settings > output
• Here is output for the running example. Perusing it, we see that alphaCertified certified that all 4 of the solutions are real.
• Bertini and alphaCertified both create a halo of small files, which may be removed using the short shell script scour.sh.
>: sh scour.sh
Assuming that we have the start points and created Instances2.out, the following bash session computes and certifies the solutions for a random real instance.
```>: ./Instances2.out
>: bertini Conic2.bertini
>: alphaCertified Conic2.poly nonsingular_solutions settings > output
>: sh scour.sh
```
Frequency table for 500 instances verified with alphaCertified.
 # real 0 2 4 total frequency 12 221 267 500

Files for other values of k
For k = 1:
Random complex instance: Conic1orig.bertini.
Start points for parameter homotopy: start.
Code to create files for a random real instance: Instances1.c.
Frequency table for 1,000,000 instances verified with alphaCertified.
 # real 0 2 4 6 8 10 12 14 16 18 total frequency 0 3,295 21,764 89,350 193,172 261,046 227,018 137,990 52,865 13,500 1,000,000
40,000 instances were also tested symbolically, with a perl script that ran Singular to compute an eliminant and ran Maple to determine the number of real roots of that eliminant. We display the frequency table. Here is a .tar.gz file that creates the files used in this computation.
 # real 0 2 4 6 8 10 12 14 16 18 total frequency 0 146 892 3558 7739 10575 8965 5488 2089 548 40000
For k = 0:
Random complex instance: Conic0orig.bertini.
Start points for parameter homotopy: start.
Code to create files for a random real instance: Instances0.c.
Frequency table for 15,662,000 instances verified with alphaCertified.
 # real 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 total frequency 1 8 26 65 466 1,548 4,765 11,928 26,439 52,875 98,129 167,932 270,267 404,918 569,891,316 756,527 942,674 1,114,033 1,246,533 1,332,289 1,355,320 1,319,699 1,226,667 1,091,019 932,838 762,463 596,174 449,021 323,927 223,455 149,629 95,740 59,141 34,834 19,516 10,672 5,671 2,744 1,290 530 204 90 26 11 3 2 0 15,662,000