Conversation
sigilante
force-pushed
the
sigilante/nockapp-float-jets
branch
from
September 13, 2026 06:56
5b7be55 to
c6112e3
Compare
sigilante
force-pushed
the
sigilante/nockapp-lagoon-jets
branch
from
September 13, 2026 07:54
691ab72 to
b5ab2b4
Compare
sigilante
force-pushed
the
sigilante/nockapp-float-jets
branch
from
September 13, 2026 07:54
c6112e3 to
3309f96
Compare
…loat-jets) Phase 6 of doc/nockapp-softfloat-rs-spec.md. New crate lagoon/nockapp/crates/hoon-float-jets: NockVM jets for the ten hinted arms (add sub mul div sqt lth lte equ gte gth) of hoon-138's own float doors, registered at k.138/one/two/tri/<door>/<arm>; the doors already carry the ~% / ~/ hints, so no Hoon changes. fma stays Nock (sdfloat has no fused multiply-add). lagoon_jets::hot_state() now composes URBIT_HOT_STATE, these, and LAGOON_HOT. Semantics follow ++ff/++fl: correctly rounded in the door's mode, canonical NaN, IEEE comparisons (-0 == +0, NaN compares false), sqt of -0 is -0, operands read as the low `width` bits like sea:ff. Verification: - lagoon suite under all 68 hints: unchanged, 153 tests, the same two non-jet failures. - hoon/float-tests.hoon (scripts/gen-float-tests.py): 320 rows, one per (door, arm, value set, mode), under the 40 float hints: the only mismatches are add/sub/mul/div on the overflow-capable set in %u/%d/%z, where ++fl overflows to infinity and IEEE 754 saturates (urbit/urbit#7426). - hoon/float-diff.hoon + scripts/float-diff-report.py: the same 6400 input pairs with and without the jets differ 592 times, every one +-MAX against +-inf, never otherwise. Also: lagoon-kick --raw now prints the whole product noun, and HOON_FLOAT_JET_DISABLE / HOON_FLOAT_JET_TRACE diagnostics. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TgBnKsUPYzkoPZonjePnaq
sigilante
force-pushed
the
sigilante/nockapp-float-jets
branch
from
September 13, 2026 07:56
3309f96 to
8afdeb5
Compare
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #83. Phase 6 of
doc/nockapp-softfloat-rs-spec.md.What
New crate
lagoon/nockapp/crates/hoon-float-jets: NockVM jets for the ten hinted arms (add sub mul div sqt lth lte equ gte gth) of hoon-138's++rh/++rs/++rd/++rq, computing withsdfloat. The doors already carry~%/~/hints, so they register atk.138/one/two/tri/<door>/<arm>with no Hoon change; every float operation on NockVM becomes bit-exact and fast, not just lagoon's.fmastays Nock (no fused multiply-add in sdfloat).lagoon_jets::hot_state()now composes the hoon-138 built-ins, these, and the lagoon jets.Semantics follow
++ff/++fl: correctly rounded in the door's mode, canonical NaN, IEEE comparisons (-0 == +0, anything with NaN is false),sqtof-0is-0, operands read as the lowwidthbits assea:ffdoes.Verification
NOCK_TEST_JETSfloat-tests.hoon, 320 rows, 40 float hints%u/%d/%zmismatch (48 rows)float-diff.hoon, 6400 pairs, jets vs pure HoonThe one divergence is the known Hoon bug:
++floverflows to infinity in every rounding mode where IEEE 754 saturates to the largest finite value under%z,%d(positive),%u(negative). Tracked in urbit/urbit#7426; the jets implement IEEE and those rows pass unchanged once the Hoon is fixed.scripts/float-diff-report.pyis the check that nothing else differs.The
test-argmaxcrash in the suite is nockchain/nockchain#184 (thefindjet compares withraw_equals).🤖 Generated with Claude Code
https://claude.ai/code/session_01TgBnKsUPYzkoPZonjePnaq