You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
New documentation site at libqif.chatzi.org, with one page per module.
qif.lp: HiGHS solver.
method argument in channel.factorize, channel.left_factorize ("lp", "subgrad") and metric.kantorovich ("lp", "fastemd").
bayes_vuln.mult_capacity_bound_cap in python.
metric.manhattan in python, rat support in metric.l1, total_variation, convex_separation(_quasi), kantorovich, from_distance_matrix and to_distance_matrix.
Changed
metric.euclidean(uint) and metric.discrete(uint) return distances of the default type (rat after set_default_type(rat), previously always double).
qif.lp: the default solver is CLP (instead of GLOP), and HiGHS for interior point.
qif.metric: the combinators work for metrics on any domain.
channel.hyper removes zero-probability columns, bayes_risk.mult_leakage returns inf for zero posterior risk.
Python: more consistent argument names.
Upgraded Armadillo to 15.6.2 and OSQP to 1.0.0. CMake 4 works without extra flags.
Tests are in python (tests/, pytest), tests_cpp only covers C++ internals (LP/QP solvers, equal).
Removed
C++: refinement::refined_by(A, B, G), use refined_by(A, B, G, R) instead.
C++: metric::threshold_bin.
Fixed
mechanism.l_risk ignored n_guesses.
Windows: functions using linear system solving (channel.factorize with the subgradient method, left_factorize for large channels, mechanism.d_privacy.tight_constraints) failed, the wheels were built without LAPACK.
rat infinity (e.g. bayes_risk.mult_capacity of channels with zero risk) was 2^31-1 on Windows, 2^63-1 elsewhere.
channel.left_factorize failed for matrices with 1000 or more elements (and channel.factorize with col_stoch using the subgradient method).
channel.iterative_bayesian_update and channel.posteriors silently computed in double for rat arguments, unless all optional arguments were given.