Skip to content

Commit 2ae5939

Browse files
authored
Use inverse_trimap instead of redefining it (#2522)
1 parent 1bee618 commit 2ae5939

File tree

1 file changed

+1
-19
lines changed

1 file changed

+1
-19
lines changed

src/Bridges/Variable/bridges/hermitian.jl

+1-19
Original file line numberDiff line numberDiff line change
@@ -189,30 +189,12 @@ function MOI.get(
189189
return MOI.HermitianPositiveSemidefiniteConeTriangle(bridge.n)
190190
end
191191

192-
function _matrix_indices(k)
193-
# If `k` is a diagonal index, `s(k)` is odd and 1 + 8k is a perfect square.
194-
n = 1 + 8k
195-
s = isqrt(n)
196-
j = if s^2 == n
197-
div(s, 2)
198-
else
199-
# Otherwise, if it is after the diagonal index `k` but before the
200-
# diagonal index `k'` with `s(k') = s(k) + 2`, we have
201-
# `s(k) <= s < s(k) + 2`.
202-
# By shifting by `+1` before `div`, we make sure to have the right
203-
# column.
204-
div(s + 1, 2)
205-
end
206-
i = k - MOI.dimension(MOI.PositiveSemidefiniteConeTriangle(j - 1))
207-
return i, j
208-
end
209-
210192
function _variable_map(idx::MOI.Bridges.IndexInVector, n)
211193
N = MOI.dimension(MOI.PositiveSemidefiniteConeTriangle(n))
212194
if idx.value <= N
213195
return idx.value
214196
end
215-
i, j = _matrix_indices(idx.value - N)
197+
i, j = MOI.Utilities.inverse_trimap(idx.value - N)
216198
d = MOI.dimension(MOI.PositiveSemidefiniteConeTriangle(j))
217199
return N + j * n + d + i
218200
end

0 commit comments

Comments
 (0)