In this particular case the problem can probably be resolved by being a bit 
stricter with the check in interior_contains:

Instead of checking

return self.polyhedron()._is_positive( self.eval(Vobj) )

one should have

return self.polyhedron()._is_positive( self.eval(Vobj) ) and 
not self.polyhedron()._is_zero( self.eval(Vobj) )

Am Dienstag, 13. Oktober 2015 09:20:10 UTC+2 schrieb jplab:
>
> Hi everyone,
>
> Currently, I am working on the ticket:
>
> http://trac.sagemath.org/ticket/18442
>
> which implements a barycentric subdivision of a polytope. For this I use 
> the containment check. In the tests, it works fine for a regular pentagon 
> over AA but not over RDF. The problem can be seen with the following code:
>
> sage: P = polytopes.regular_polygon(5)
> sage: a_vertex = P.vertices()[0]
> sage: for facet in P.Hrepresentation(): print facet.contains(a_vertex), 
> facet.interior_contains(a_vertex)
>
> True False
> True True
> True False
> True True
> True True
> sage: P = polytopes.regular_polygon(5, base_ring=RDF)
> sage: a_vertex = P.vertices()[0]
> sage: for facet in P.Hrepresentation(): print facet.contains(a_vertex), 
> facet.interior_contains(a_vertex) 
> True True
> True True
> True True
> True True
> True True
>
> (The first output is as expected: the vertex is not contained in the 
> interior of exactly 2 facets. This is not the case in RDF)
>
> Right now, I have the following question in mind: Does it make sense to 
> have polyhedron over RDF? By which I mean: it can not even deal with 
> containment of faces properly. Reasonably, the user knows that and will use 
> a different ring... But what if?
>
> I know that it is practical to have polyhedron defined over RDF for 
> different reasons, but there is a fundamental change in the results (and 
> pretty much any method doing computations) if the ring changes. I'm NOT 
> asking to remove RDF as a possible ring. The reason I'm asking is that I 
> have to use such containment check to implement the method barycentric 
> subdivision for polyhedron, but then it breaks for polyhedron defined on 
> RDF because of that. So there are methods that simply do not work when the 
> ring is RDF.
>
> Maybe this analogy could explain my thoughts:
>
> If we compute the eigenvalues of a matrix defined over RDF, sage warns us 
> that the results may go bad. It doesn't if the matrix is rational... Could 
> such a warning be issued when working with RDF? And then put NotImplemented 
> whenever it is known that RDF could cause trouble (and then fix it for that 
> specific ring?).
>
> I could simply set the barycentric subdivision for polyhedron over RDF not 
> to be implemented, but I feel this would not answer the problem raised 
> anyway.
>
> Thanks!
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to