Skip to content

Commit 301f388

Browse files
committed
takes care of variable permutation for solutions
1 parent 4ef3f04 commit 301f388

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

src/algorithms/solvers.jl

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,9 @@ function _core_msolve(
141141
jl_cf_lf = reinterpret(Ptr{BigInt}, res_cf_lf[])
142142

143143
jl_vnames = Base.unsafe_wrap(Array, res_vnames[], jl_rp_nr_vars)
144-
145-
vsymbols = [Symbol(unsafe_string(jl_vnames[i])) for i in 1:jl_rp_nr_vars]
144+
vsymbols = [Symbol(unsafe_string(jl_vnames[i])) for i in 1:jl_rp_nr_vars]
145+
#= get possible variable permutation =#
146+
perm = sortperm(vsymbols)
146147

147148
rat_param = _get_rational_parametrization(jl_ld, jl_len,
148149
jl_cf, jl_cf_lf, jl_rp_nr_vars)
@@ -173,9 +174,9 @@ function _core_msolve(
173174
j = 1
174175
tmp = Vector{QQFieldElem}(undef, nr_vars)
175176
while j <= nr_vars
176-
tmp[j] = QQFieldElem(unsafe_load(jl_sols_num, i)) >> Int64(unsafe_load(jl_sols_den, i))
177-
tmp[j] += QQFieldElem(unsafe_load(jl_sols_num, i+1)) >> Int64(unsafe_load(jl_sols_den, i+1))
178-
tmp[j] = tmp[j] >> 1
177+
tmp[perm[j]] = QQFieldElem(unsafe_load(jl_sols_num, i)) >> Int64(unsafe_load(jl_sols_den, i))
178+
tmp[perm[j]] += QQFieldElem(unsafe_load(jl_sols_num, i+1)) >> Int64(unsafe_load(jl_sols_den, i+1))
179+
tmp[perm[j]] = tmp[perm[j]] >> 1
179180
i += 2
180181
j += 1
181182
end

0 commit comments

Comments
 (0)