Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enh/bb direct call #312

Draft
wants to merge 12 commits into
base: master
Choose a base branch
from
Draft

Enh/bb direct call #312

wants to merge 12 commits into from

Conversation

kalmarek
Copy link
Contributor

No description provided.

@kalmarek
Copy link
Contributor Author

kalmarek commented Aug 2, 2020

using Polymake

function BB_iterator(c)
    N = polytope.dim(c)
    @info "running bb using iterator over $N-dimensional polytope"
    bb = Polymake.BeneathBeyond(c.POINTS, c.LINEALITY_SPACE, redundant=true, triangulation=true, iscone=true)
    tr = GC.@preserve bb begin
        for x in bb
            @show length(Polymake.getTriangulation(bb.algo))
        end
        tr = Polymake.getTriangulation(bb.algo)
        @show last(tr)
        tr
    end
    @info "bb is done!"
    return tr
end


function BB_direct_call(c)
    N = polytope.dim(c)
    @info "running bb using direct calls over $N-dimensional polytope"
    bb = Polymake.BeneathBeyondAlgo{Polymake.Rational}()
    Polymake.bb_initialize!(bb, c.POINTS, c.LINEALITY_SPACE)
    
    for p in 0:6
        @time Polymake.bb_add_point!(bb, p)
    end
    
    @show Polymake.getTriangulation(bb)
    
    @time for p in 2:size(c.POINTS, 1)-1
        Polymake.bb_add_point!(bb, p)
    end
    tr = Polymake.getTriangulation(bb)
    @show last(tr)
    @info "bb is done!"
    return tr
end;



const rs = polytope.rand_sphere(4,30);

@info "running placing_triangulation"
t1 = polytope.placing_triangulation(rs.POINTS)
t2 = let rs = rs
    @info "running bb using bb_compute! over $N-dimensional polytope"
    bbalgo = Polymake.BeneathBeyondAlgo{Polymake.Rational}()
    GC.@preserve bbalgo begin
        Polymake.bb_compute!(bbalgo, rs.POINTS, rs.LINEALITY_SPACE)
        Polymake.getTriangulation(bbalgo)
    end
end

@assert t1 == t2

t3 = BB_direct_call(rs)
@assert t1 == t3
t4 = BB_iterator(rs)
@assert t1 == t4

occasionally (rather often?) crashes in different places (once I've seen this even in polytope.placing_triangulation).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants