Skip to content

Commit 43a03a3

Browse files
committed
src/sage/geometry/cone.py: faster Hilbert_basis() tests
We have one Hilbert_basis() test that is raising "slow test!" warnings at around 40s. Here we replace it with three tests, each of which runs relatively quickly. The trio completes in about 15s. Since I know very little about Hilbert bases, I have checked the results using Normaliz. For example, $ cat cone.in amb_space 4 cone 4 1 0 1 0 -1 0 1 0 0 1 1 0 0 -1 1 0 $ normaliz --HilbertBasis cone $ cat cone.out ... (the resulting basis is written to cone.out).
1 parent d8f890a commit 43a03a3

File tree

1 file changed

+46
-33
lines changed

1 file changed

+46
-33
lines changed

src/sage/geometry/cone.py

Lines changed: 46 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4369,7 +4369,7 @@ def Hilbert_basis(self):
43694369
N(1, 1)
43704370
in 2-d lattice N
43714371
4372-
Two more complicated example from GAP/toric::
4372+
A more complicated example from GAP/toric::
43734373
43744374
sage: Cone([[1,0], [3,4]]).dual().Hilbert_basis()
43754375
M(0, 1),
@@ -4378,38 +4378,51 @@ def Hilbert_basis(self):
43784378
M(2, -1),
43794379
M(3, -2)
43804380
in 2-d lattice M
4381-
sage: cone = Cone([[1,2,3,4], [0,1,0,7], [3,1,0,2], [0,0,1,0]]).dual()
4382-
sage: cone.Hilbert_basis() # long time
4383-
M(10, -7, 0, 1),
4384-
M(-5, 21, 0, -3),
4385-
M( 0, -2, 0, 1),
4386-
M(15, -63, 25, 9),
4387-
M( 2, -3, 0, 1),
4388-
M( 1, -4, 1, 1),
4389-
M( 4, -4, 0, 1),
4390-
M(-1, 3, 0, 0),
4391-
M( 1, -5, 2, 1),
4392-
M( 3, -5, 1, 1),
4393-
M( 6, -5, 0, 1),
4394-
M( 3, -13, 5, 2),
4395-
M( 2, -6, 2, 1),
4396-
M( 5, -6, 1, 1),
4397-
M( 8, -6, 0, 1),
4398-
M( 0, 1, 0, 0),
4399-
M(-2, 8, 0, -1),
4400-
M(10, -42, 17, 6),
4401-
M( 7, -28, 11, 4),
4402-
M( 5, -21, 9, 3),
4403-
M( 6, -21, 8, 3),
4404-
M( 5, -14, 5, 2),
4405-
M( 2, -7, 3, 1),
4406-
M( 4, -7, 2, 1),
4407-
M( 7, -7, 1, 1),
4408-
M( 0, 0, 1, 0),
4409-
M( 1, 0, 0, 0),
4410-
M(-1, 7, 0, -1),
4411-
M(-3, 14, 0, -2)
4412-
in 4-d lattice M
4381+
4382+
Examples verified independently using [Normaliz]_::
4383+
4384+
sage: cones.rearrangement(3,4).Hilbert_basis()
4385+
N(-2, 1, 1, 1),
4386+
N( 1, 1, 1, -2),
4387+
N( 1, 1, -2, 1),
4388+
N( 1, -2, 1, 1),
4389+
N( 1, 0, 0, 0),
4390+
N(-1, 1, 1, 0),
4391+
N(-1, 1, 0, 1),
4392+
N( 0, -1, 1, 1),
4393+
N( 1, 0, -1, 1),
4394+
N( 1, 0, 1, -1),
4395+
N(-1, 0, 1, 1),
4396+
N( 0, 1, -1, 1),
4397+
N( 1, -1, 0, 1),
4398+
N( 0, 1, 1, -1),
4399+
N( 1, -1, 1, 0),
4400+
N( 0, 1, 0, 0),
4401+
N( 1, 1, 0, -1),
4402+
N( 1, 1, -1, 0),
4403+
N( 0, 0, 1, 0),
4404+
N( 0, 0, 0, 1)
4405+
in 4-d lattice N
4406+
4407+
sage: # long time
4408+
sage: K = Cone([(1,0,1), (-1,0,1), (0,1,1), (0,-1,1)])
4409+
sage: K.Hilbert_basis()
4410+
N( 1, 0, 1),
4411+
N(-1, 0, 1),
4412+
N( 0, 1, 1),
4413+
N( 0, -1, 1),
4414+
N( 0, 0, 1)
4415+
in 3-d lattice N
4416+
4417+
sage: # long time
4418+
sage: K = Cone([(1,0,1,0), (-1,0,1,0), (0,1,1,0), (0,-1,1,0)])
4419+
sage: K.Hilbert_basis()
4420+
N( 1, 0, 1, 0),
4421+
N(-1, 0, 1, 0),
4422+
N( 0, 1, 1, 0),
4423+
N( 0, -1, 1, 0),
4424+
N( 0, 0, 1, 0)
4425+
in 4-d lattice N
44134426
44144427
Not a strictly convex cone::
44154428

0 commit comments

Comments
 (0)