From 105524fe60b1434e22cd666e529710db319e3495 Mon Sep 17 00:00:00 2001 From: Minijackson Date: Wed, 4 Jan 2023 09:31:52 +0100 Subject: z3-solver: better float -> real conversion hack --- z3-solver/src/lib.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/z3-solver/src/lib.rs b/z3-solver/src/lib.rs index db907e7..6ad7ffc 100644 --- a/z3-solver/src/lib.rs +++ b/z3-solver/src/lib.rs @@ -31,7 +31,16 @@ impl Drop for Z3Context<'_> { fn value_to_num_den(value: f64) -> (i32, i32) { // TODO: FIXME: so hacky, because I'm so lazy... - ((value * 1_000_000.) as _, 1_000_000) + + const FACTOR: f64 = 524_288.; + const FACTOR_I32: i32 = FACTOR as _; + const LIMIT: f64 = i32::MAX as f64 / FACTOR; + + if value < LIMIT { + ((value * FACTOR) as _, FACTOR_I32) + } else { + (value as _, 1) + } // let fract = value.fract(); // let number_of_fract_digits = -fract.log10().floor(); -- cgit v1.2.3