1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Float-specialised helpers used by the native engine.
/// Less-than-or-equal that orders `-0.0` strictly below `0.0`.
///
/// Mirrors Hypothesis's `sign_aware_lte` from `internal/floats.py`.
/// The native float draw uses this to honour user-supplied bounds that
/// straddle `-0.0`/`0.0`: with the standard `<=` the two compare equal,
/// so a bound of `0.0` would silently admit `-0.0`.
/// The first float strictly larger than `value` — IEEE 754's `nextUp`, with
/// Hypothesis's signed-zero convention.
///
/// Mirrors `next_up` from `internal/floats.py`: NaN and `+inf` are fixed
/// points, and `next_up(-0.0)` is `+0.0` (Hypothesis orders `-0.0` strictly
/// below `+0.0`, so they are adjacent distinct values; std `f64::next_up`
/// instead skips from `-0.0` straight to the smallest positive subnormal).
/// Used for the boundary-neighbour candidates in the float sampler, matching
/// `HypothesisProvider.draw_float`'s `weird_floats`. Note that *exclusive
/// bound* adjustment intentionally does not use this: Hypothesis's `floats()`
/// strategy treats the two zeros as one value when excluding a bound, which
/// is std's `next_up` semantics.
/// The first float strictly smaller than `value`; see [`next_up`].