Skip to content

Commit a0b3bad

Browse files
authored
Refactor tricky indexing with common function (#55)
* Refactor tricky indexing with common function * Make it internal * Fix
1 parent 9e58f0d commit a0b3bad

File tree

4 files changed

+11
-7
lines changed

4 files changed

+11
-7
lines changed

src/lp.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ function print_lpoutput(m::HMatrix, print_solution::Bool=false)
172172
for i in 0:P.d-1
173173
C_i = unsafe_load(P.C, i+1)
174174
Col_i = unsafe_load(P.Col, i+1)
175-
idx = unsafe_load(Q.inequality, C_i-Q.lastdv+1)
175+
idx = _unsafe_load_inequality(m, C_i)
176176
print(" y_$(idx)=")
177177
temp1 = extractbigint(unsafe_load(Q.Lcm, Col_i+1)) * (-1)
178178
temp1 *= extractbigint(unsafe_load(unsafe_load(P.A, 1), Col_i+1))

src/matrix.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ function initmatrix(M::Matrix{Rational{BigInt}}, linset, Hrep::Bool)
5555
(P, Q)
5656
end
5757

58-
5958
function fillmatrix(inequality::Bool, P::Ptr{Clrs_dic}, Q::Ptr{Clrs_dat}, itr::Polyhedra.ElemIt, offset::Int)
6059
for (i, item) in enumerate(itr)
6160
a = convert(Vector{Rational{BigInt}}, vec(coord(lift(item))))
@@ -176,6 +175,11 @@ Polyhedra.islin(vrep::VMatrix, idx::Polyhedra.VIndex{Rational{BigInt}}) = !(vrep
176175
Polyhedra.done(idxs::Polyhedra.Indices{Rational{BigInt}, ElemT, <:RepMatrix}, idx::Polyhedra.Index{Rational{BigInt}, ElemT}) where {ElemT} = idx.value > length(idxs.rep)
177176
Base.get(rep::RepMatrix, idx::Polyhedra.Index{Rational{BigInt}}) = Polyhedra.valuetype(idx)(extractrow(rep, idx.value)...)
178177

178+
function _unsafe_load_inequality(m::RepMatrix, idx)
179+
Q = unsafe_load(m.Q)
180+
return unsafe_load(Q.inequality, idx - Q.lastdv + 1)
181+
end
182+
179183
# H-representation
180184

181185
#HMatrix{T}(rep::Rep{T}) = HMatrix{polytypefor(T), mytypefor(T)}(rep) # TODO finish this line

src/nash.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,9 @@ function nash2_main(hr1::HMatrix, hr2::HMatrix, linindex::Vector{Clong})
120120
for i in (unsafe_load(Q1).lastdv+1):(unsafe_load(P1).m)
121121
Row_i = unsafe_load(unsafe_load(P1).Row, i+1)
122122
if !iszero(extractbigintat(unsafe_load(A1, Row_i+1), 1))
123-
j = unsafe_load(
124-
unsafe_load(Q1).inequality,
125-
unsafe_load(unsafe_load(P1).B, i+1)-unsafe_load(Q1).lastdv+1
123+
j = _unsafe_load_inequality(
124+
hr1,
125+
unsafe_load(unsafe_load(P1).B, i+1),
126126
)
127127
if ((unsafe_load(Q1).nlinearity == 0) ||
128128
(j < unsafe_load(unsafe_load(Q1).linearity, 1)))

src/redund.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ function redund(m::RepMatrix)
2727

2828
redset = BitSet()
2929
for index in (lastdv + 1):(m_A + d)
30-
ineq = unsafe_load(unsafe_load(m.Q).inequality, index - lastdv + 1) # the input inequality number corr. to this index
30+
ineq = _unsafe_load_inequality(m, index) # the input inequality number corr. to this index
3131

3232
status = checkindex(m, index)
3333
if :redundant == checkindex(m, index)
@@ -46,7 +46,7 @@ function redundi(m::RepMatrix, ineq::Int)
4646
d = unsafe_load(m.P).d
4747
lastdv = unsafe_load(m.Q).lastdv
4848

49-
index = lastdv + findfirst(i -> ineq == unsafe_load(unsafe_load(m.Q).inequality, i - lastdv + 1), (lastdv + 1):(m_A + d))
49+
index = lastdv + findfirst(i -> ineq == _unsafe_load_inequality(m, i), (lastdv + 1):(m_A + d))
5050

5151
:redundant == checkindex(m, index)
5252
end

0 commit comments

Comments
 (0)