polyhedron
LattE software

Exact Integration Experiments

The following contains all the polytopes and polynomials used in the integration (and volume) experiments described in the LattE integrale paper "Software for Exact Integration of Polynomials over Polyhedra" except the cyclic polytopes and simplices. The database files containing the integral and times are also available here.

  1. Random polytopes of dimension 2-7 (41 MB); dimension 8 (48 MB); dimension 10 (360 MB)
  2. Ziegler's database of polytopes with random polynomials (1.1 MB)
  3. Random polynomials (402 KB)
  4. Random SQL database (sql)(92 MB)
  5. Ziegler's SQL database (sql)(1 MB)

Because the number of volume calculations is "small," they are also viewable online here.

Additional tables and figures from the LattE integrale paper

The online supplement for the paper Software for Exact Integration of Polynomials over Polyhedra is available here.

How to read the integration database files

We performed over 100,000 integration and 10,000 volume calculations and stored them using SQLite, a relational database management system. Any relational database should be able to input the above sql files, and you are free to analyze the results using any tool you want, but for the rest of this webpage we will assume you are using SQLite. If SQL sounds unfamiliar to you, please do a quick Internet search for "sql tutorial" and read the sections on the "select," "join," and "where" clause.

As you read the following SQL statements, keep in mind the following facts about SQLite:

  1. Every table as a unique rowid by default
  2. The alter table command allows the user to rename a table or to add a new column but it cannot rename a column, remove a column, or add or remove constraints from a table. Hence, some names are badly named and some columns are not used anymore.

The command to recreate the database from the SQL files above is different for each system, but in SQLite it is ".read fileName." All other SQL commands should work in any relational database management system.

Table Schema

  1. CREATE TABLE polynomial (
  2. degree NUMERIC NOT NULL,
  3. dim NUMERIC NOT NULL,
  4. filePath text NOT NULL
  5. );
  6. CREATE TABLE polytope (
  7. dim NUMERIC NOT NULL,
  8. vertexCount NUMERIC NOT NULL,
  9. simple NUMERIC NOT NULL,
  10. dual NUMERIC,
  11. latteFilePath text NOT NULL,
  12. polymakeFilePath text,
  13. FOREIGN KEY(dual) REFERENCES polytope(rowid)
  14.  
  15. );

The polynomial table has four columns:

  • The default rowid column.
  • degree: the degree of the polynomial.
  • dim: dimension of the polynomial is equal to the number of variables.
  • filePath: file path to the polynomial file.

Likewise the polytope table's columns are:

  • The default rowid column.
  • dim: (full) dimension of the polytope.
  • dual: if NULL, the polytope is in the primal space, else this row corresponds to the dual polytope and the primal polytope's rowid is given by the value in dual.
  • If dual is NULL
    • vertexCount: vertex count of the primal polytope.
    • simple: true if the primal polytope is simplicial. If equal to -1, we didn't check this property.
    • latteFilePath: file path of the primal polytope.
    • polymakeFilePath: the main Polymake file.
  • Else dual is not null and links to the primal polytope
    • vertexCount: vertex count of the dual polytope.
    • simple: true if the dual polytope is simplicial. If equal to -1, we did not check this property.
    • latteFilePath: file path of the dual polytope.
    • polymakeFilePath: the dual polytope can be read from the primal polytope's Polymake file and so this column has no meaning.
  1. CREATE TABLE integrate (
  2. polynomialID NUMERIC NOT NULL,
  3. polytopeID NUMERIC NOT NULL,
  4. timeLawrence NUMERIC NOT NULL,
  5. timeTriangulate NUMERIC NOT NULL,
  6. integral text NOT NULL,
  7. flagValue text NOT NULL DEFAULT '-1',
  8. flagType NUMERIC NOT NULL DEFAULT '-1',
  9. FOREIGN KEY(polynomialID) REFERENCES polynomial(rowid),
  10. FOREIGN KEY(polytopeID) REFERENCES polytope(rowid)
  11. );
  12.  
  13. CREATE TABLE volume (
  14. polytopeID NUMERIC NOT NULL,
  15. timeLawrence NUMERIC NOT NULL,
  16. timeTriangulate NUMERIC NOT NULL,
  17. theVolume text NOT NULL,
  18. flagType NUMERIC NOT NULL DEFAULT '-1',
  19. flagValue text NOT NULL DEFAULT '-1',
  20. FOREIGN KEY(polytopeID) REFERENCES polytope(rowid)
  21. );

The integrate table records an integration test with one polytope and one polynomial, and has eight columns:

  • The default rowid column.
  • polynomialID: rowid of a row in the polynomial table.
  • polytopeID: rowid of a row in the polytope table.
  • timeLawrence: time to integrate this polynomial-polytope pair using the cone decomposition method. If negative, the integral has not been computed with this method.
  • timeTriangulate: time to integrate this polynomial-polytope pair using the triangulation method. If negative, the integral has not been computed with this method.
  • integral: a fraction. If equal to "NA," the integral has not been computed.
  • flagType: describes the flagValue. Not used anymore.
  • flagValue: the integral is a multiple of this number. Not used anymore.

Finally, the volume table has a schema very similar to the integration table.

Examples of using the database with SQL

What are the degrees of polynomials in five variables?

  1. SELECT DISTINCT p.degree
  2. FROM polynomial AS p
  3. WHERE p.dim = 5;
Result:
1
2
5
10
20
30
40
50

What are the primal vertex counts for polytopes in dimension five?

  1. SELECT DISTINCT t.vertexCount
  2. FROM polytope AS t
  3. WHERE t.dual IS NULL
  4. AND t.dim = 5
Result:
7
8
9
10
15
20
25
30

How many primal integration cases was computed using both integration methods where the dimension is five, the primal vertex count is seven, and the degree of the monomial is ten?

  1. SELECT COUNT(*) FROM integrate AS i
  2. JOIN polynomial AS p ON i.polynomialID = p.rowid
  3. JOIN polytope AS t ON i.polytopeID = t.rowid
  4. WHERE t.dim = 5
  5. AND t.vertexCount = 7
  6. AND p.degree = 10
  7. AND t.dual IS NULL
  8. AND i.timeLawrence >= 0
  9. AND i.timeTriangulate >= 0;
Result:
50

How many dual primal integration cases was computed using both integration methods where the dimension is five, the primal vertex count is seven, and the degree of the monomial is ten? Also compute the average integration times, the max integration time, and the min integration time. (Note that we need to work with two copies of the polytope table because we want to look at dual polytopes where their primal polytope has a set vertex count.)

  1. SELECT COUNT(*),
  2. avg(i.timeTriangulate), MIN(i.timeTriangulate), MAX(i.timeTriangulate),
  3. avg(i.timeLawrence), MIN(i.timeLawrence), MAX(i.timeLawrence)
  4. FROM integrate AS i
  5. JOIN polynomial AS p ON i.polynomialID = p.rowid
  6. JOIN polytope AS dualP ON i.polytopeID = dualP.rowid
  7. JOIN polytope AS primeP ON dualP.dual = primeP.rowid
  8. WHERE primeP.dim = 5
  9. AND primeP.vertexCount = 7
  10. AND p.degree = 10
  11. AND primeP.dual IS NULL
  12. AND i.timeLawrence >= 0
  13. AND i.timeTriangulate >= 0;
Result:
count | Avg Tri | Min Tri | Max Tri | Avg Cone | Min Cone | Max Cone
50    | 0.3876  | 0.12    | 0.67    | 0.1098   | 0.05     | 0.18

List the latte file, polynomial file, and integration times for primal integration tests where the dimension is five, the primal vertex count is seven, and the degree of the monomial is ten.

  1. SELECT i.rowid, i.timeTriangulate, i.timeLawrence, t.latteFilePath, p.filePath
  2. FROM integrate AS i
  3. JOIN polynomial AS p ON i.polynomialID = p.rowid
  4. JOIN polytope AS t ON i.polytopeID = t.rowid
  5. WHERE t.dim = 5
  6. AND t.vertexCount = 7
  7. AND p.degree = 10
  8. AND t.dual IS NULL
  9. AND i.timeLawrence >= 0
  10. AND i.timeTriangulate >= 0;
Result:
ID    | Tri  | Cone | Latte File Path                              | Polynomial File Path
13101 | 0.06 | 0.22 | dim5/ext7/polytope5_vertex7_num50.vrep.latte | polynomials/dim5/deg10/poly5_deg10_num50.polynomial
13102 | 0.06 | 0.11 | dim5/ext7/polytope5_vertex7_num49.vrep.latte | polynomials/dim5/deg10/poly5_deg10_num49.polynomial
...
13149 | 0.07 | 0.13 | dim5/ext7/polytope5_vertex7_num2.vrep.latte  | polynomials/dim5/deg10/poly5_deg10_num2.polynomial
13150 | 0.06 | 0.12 | dim5/ext7/polytope5_vertex7_num1.vrep.latte  | polynomials/dim5/deg10/poly5_deg10_num1.polynomial
(there are 50 rows in total)
• Mathematics • The University of California, Davis •
• One Shields Avenue • Davis, CA 95616 •