Skip to content
This repository has been archived by the owner on Jan 30, 2023. It is now read-only.

Commit

Permalink
Trac 18211: fix arguments + doctests + cwd=SAGE_TMP
Browse files Browse the repository at this point in the history
  • Loading branch information
videlec committed Apr 16, 2015
1 parent 0f5122b commit b877932
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 11 deletions.
25 changes: 14 additions & 11 deletions src/sage/geometry/polyhedron/base_ZZ.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ def ehrhart_polynomial(self, dual=None, irrational_primal=None,
sage: P = Polyhedron(ambient_dim=3, vertices=[])
sage: P.ehrhart_polynomial() # optional - latte_int
0
sage: parent(_)
sage: parent(_) # optional - latte_int
Univariate Polynomial Ring in t over Rational Field
Test options::
Expand Down Expand Up @@ -229,16 +229,13 @@ def ehrhart_polynomial(self, dual=None, irrational_primal=None,
if not self.is_lattice_polytope():
raise ValueError("this must be a lattice polytope")

from sage.misc.package import is_package_installed, package_mesg
if not is_package_installed('latte_int'):
raise ValueError("The package latte_int must be installed!\n" + package_mesg())

from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
R = PolynomialRing(QQ, 't')
if self.is_empty():
return R.zero()

from sage.misc.temporary_file import tmp_filename
from sage.misc.misc import SAGE_TMP
from subprocess import Popen, PIPE

in_str = self.cdd_Hrepresentation()
Expand All @@ -254,9 +251,9 @@ def ehrhart_polynomial(self, dual=None, irrational_primal=None,
args.append('--irrational-primal')
if irrational_all_primal:
args.append('--irrational-all-primal')
if maxdet:
if maxdet is not None:
maxdet = int(maxdet)
if maxdet < 0:
if maxdet < 1:
raise ValueError("maxdet must be a positive integer")
args.append('--maxdet={}'.format(maxdet))
if no_decomposition:
Expand All @@ -265,16 +262,22 @@ def ehrhart_polynomial(self, dual=None, irrational_primal=None,
args.append('--cdd')
args.append(in_filename)

latte_proc = Popen(args, stdin = PIPE, stdout=PIPE, stderr=PIPE)
try:
latte_proc = Popen(args, stdin=PIPE, stdout=PIPE, stderr=PIPE, cwd=str(SAGE_TMP))
except OSError:
raise ValueError("The package latte_int must be installed (type "
"'sage -i latte_int') in a console or "
"'install_package('latte_int') at a Sage prompt)!\n")

ans, err = latte_proc.communicate()
if verbose:
print err

ret_code = latte_proc.poll()
if ret_code:
raise ValueError("LattE program 'count' ended with a nonzero value"
"(={}). Here is the content of stderr:\n{}".format(
ret_code, err))
if verbose:
print err

return R(ans.splitlines()[-2])

@cached_method
Expand Down
1 change: 1 addition & 0 deletions src/sage/geometry/polyhedron/library.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ def Birkhoff_polytope(self, n):
sage: b3.is_lattice_polytope()
True
sage: p3 = b3.ehrhart_polynomial() # optional - latte_int
sage: p3 # optional - latte_int
1/8*t^4 + 3/4*t^3 + 15/8*t^2 + 9/4*t + 1
sage: [p3(i) for i in [1,2,3,4]] # optional - latte_int
[6, 21, 55, 120]
Expand Down

0 comments on commit b877932

Please sign in to comment.