test_fixed_point_ln

The ln datapath’s accuracy is a measured fact, like exp’s.

ln’s domain is 2,147,483,647 inputs – exhaustive in this model but not in simulation, so the default sweep is strided and DAU_EXHAUSTIVE=1 runs the whole thing. The strided sweep always includes every power-of-two boundary, because those are the exponent transitions where a normalizing datapath fails if it fails anywhere.

Attributes

_EXHAUSTIVE

LN_EXACT

LN_MEASURED_ULP

Functions

_boundary_inputs() → list[int]

Every 2**k and its neighbours: the exponent transitions.

_sweep(point, values) → tuple[int, int, int]

test_the_reference_is_the_mathematics_not_an_algorithm() → None

Values a human can check, so the reference cannot drift into being a

test_ln_of_a_non_positive_value_is_refused() → None

Same position the sqrt tile takes: no value exists, and substituting

test_ln_is_faithful_not_correctly_rounded() → None

Records the class honestly. exp-light and the normal CDF reach their

test_the_exponent_boundaries_are_exact() → None

Normalisation is the part that can be off by one power of two, and it

test_the_operating_point_meets_its_recorded_bound() → None

test_the_two_tier_sweep_agrees_with_the_exact_reference() → None

The affordable sweep must answer what the expensive one answers.

test_the_light_point_is_faithful_at_the_full_points_known_deviation() → None

The registered light point carries the SAME 1-ULP contract, measured

Module Contents

test_fixed_point_ln._EXHAUSTIVE
test_fixed_point_ln.LN_EXACT
test_fixed_point_ln.LN_MEASURED_ULP = 1
test_fixed_point_ln._boundary_inputs() → list[int]

Every 2**k and its neighbours: the exponent transitions.

test_fixed_point_ln._sweep(point: dau_core.fixed_point.LnDatapath, values) → tuple[int, int, int]
test_fixed_point_ln.test_the_reference_is_the_mathematics_not_an_algorithm() → None

Values a human can check, so the reference cannot drift into being a description of whatever the datapath does.

test_fixed_point_ln.test_ln_of_a_non_positive_value_is_refused() → None

Same position the sqrt tile takes: no value exists, and substituting one would be a wrong number that looks right.

test_fixed_point_ln.test_ln_is_faithful_not_correctly_rounded() → None

Records the class honestly. exp-light and the normal CDF reach their registered contracts; ln does not at this operating point, and a caller choosing between them should see that rather than infer it.

Whether a correctly-rounded ln is worth having is a separate question: the exp arc showed the fix is either more internal precision or more polynomial degree, and which one binds is not predictable without measuring both.

test_fixed_point_ln.test_the_exponent_boundaries_are_exact() → None

Normalisation is the part that can be off by one power of two, and it shows up here or nowhere.

test_fixed_point_ln.test_the_operating_point_meets_its_recorded_bound() → None
test_fixed_point_ln.test_the_two_tier_sweep_agrees_with_the_exact_reference() → None

The affordable sweep must answer what the expensive one answers.

The harness decides in double and re-decides only near-boundary inputs against the 80-digit reference. That is only sound if it never differs from an all-exact sweep, so this checks both over a window containing a KNOWN deviation – a harness that agreed everywhere except where the datapath is wrong would be worse than useless.

test_fixed_point_ln.test_the_light_point_is_faithful_at_the_full_points_known_deviation() → None

The registered light point carries the SAME 1-ULP contract, measured by an exhaustive sweep (3,544 of 2,147,483,647 off by one, against the full point’s 459). Pin the shared boundary case here; the full-domain number lives in the registry entry and BENCHMARKS.