From aa0ac8ca834603fd2d94418b573176f551d66fd5 Mon Sep 17 00:00:00 2001 From: ~dozreg-toplud Date: Fri, 9 Aug 2024 10:02:16 +0200 Subject: [PATCH 01/11] cue xtract atom --- pkg/noun/jets/e/cue.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/noun/jets/e/cue.c b/pkg/noun/jets/e/cue.c index 4ab89ba552..643b4082c9 100644 --- a/pkg/noun/jets/e/cue.c +++ b/pkg/noun/jets/e/cue.c @@ -15,7 +15,7 @@ u3qe_cue(u3_atom a) u3_noun u3we_cue(u3_noun cor) { - return u3qe_cue(u3x_at(u3x_sam, cor)); + return u3qe_cue(u3x_atom(u3x_at(u3x_sam, cor))); } u3_noun From 4a74cc5cd67df5f4ed5d3d3b1aaa3738aafb8269 Mon Sep 17 00:00:00 2001 From: ~dozreg-toplud Date: Fri, 9 Aug 2024 10:05:45 +0200 Subject: [PATCH 02/11] min fix --- pkg/noun/jets/a/min.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/noun/jets/a/min.c b/pkg/noun/jets/a/min.c index 243c50bb6e..4c7c0e421a 100644 --- a/pkg/noun/jets/a/min.c +++ b/pkg/noun/jets/a/min.c @@ -13,6 +13,9 @@ u3qa_min(u3_atom a, u3_atom b) return u3k(c3_min(a, b)); } else { + if ( (a == 0) || (b == 0) ) { + return 0; + } c3_w a_w = u3r_met(0, a); c3_w b_w = u3r_met(0, b); From 17baecfdacb1b4f3526bf05cf4007f9226095ebc Mon Sep 17 00:00:00 2001 From: ~dozreg-toplud Date: Fri, 9 Aug 2024 10:07:21 +0200 Subject: [PATCH 03/11] max fix --- pkg/noun/jets/a/max.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/noun/jets/a/max.c b/pkg/noun/jets/a/max.c index 929ee501d4..a9f9f27629 100644 --- a/pkg/noun/jets/a/max.c +++ b/pkg/noun/jets/a/max.c @@ -13,6 +13,8 @@ u3qa_max(u3_atom a, u3_atom b) return u3k(c3_max(a, b)); } else { + if ( a == 0 ) return b; + if ( b == 0 ) return a; c3_w a_w = u3r_met(0, a); c3_w b_w = u3r_met(0, b); From 493e71807583b81367ca37371690e9862b663db4 Mon Sep 17 00:00:00 2001 From: Quodss Date: Fri, 9 Aug 2024 16:56:37 +0200 Subject: [PATCH 04/11] max shortcut gain, swp a_g assert --- pkg/noun/jets/a/max.c | 4 ++-- pkg/noun/jets/c/swp.c | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/pkg/noun/jets/a/max.c b/pkg/noun/jets/a/max.c index a9f9f27629..5a9348643d 100644 --- a/pkg/noun/jets/a/max.c +++ b/pkg/noun/jets/a/max.c @@ -13,8 +13,8 @@ u3qa_max(u3_atom a, u3_atom b) return u3k(c3_max(a, b)); } else { - if ( a == 0 ) return b; - if ( b == 0 ) return a; + if ( a == 0 ) return u3k(b); + if ( b == 0 ) return u3k(a); c3_w a_w = u3r_met(0, a); c3_w b_w = u3r_met(0, b); diff --git a/pkg/noun/jets/c/swp.c b/pkg/noun/jets/c/swp.c index 1d0a11b434..4f503e7412 100644 --- a/pkg/noun/jets/c/swp.c +++ b/pkg/noun/jets/c/swp.c @@ -10,12 +10,16 @@ u3_noun u3qc_swp(u3_atom a, u3_atom b) { - c3_w len_w = u3r_met(a, b); + if ( !_(u3a_is_cat(a)) || (a >= 32) ) { + return u3m_bail(c3__fail); + } + c3_g a_g = a; + c3_w len_w = u3r_met(a_g, b); u3i_slab sab_u; - u3i_slab_init(&sab_u, a, len_w); + u3i_slab_init(&sab_u, a_g, len_w); for (c3_w i = 0; i < len_w; i++) { - u3r_chop(a, i, 1, len_w - i - 1, sab_u.buf_w, b); + u3r_chop(a_g, i, 1, len_w - i - 1, sab_u.buf_w, b); } return u3i_slab_mint(&sab_u); From c89aa062938e81bb2992ea265211114672e93071 Mon Sep 17 00:00:00 2001 From: Quodss Date: Fri, 9 Aug 2024 18:12:10 +0200 Subject: [PATCH 05/11] comparison jets handle equality of cells --- pkg/noun/jets/a/gte.c | 17 +++++++---------- pkg/noun/jets/a/gth.c | 17 +++++++---------- pkg/noun/jets/a/lte.c | 17 +++++++---------- pkg/noun/jets/a/lth.c | 17 +++++++---------- pkg/noun/jets/a/max.c | 17 +++++++---------- pkg/noun/jets/a/min.c | 17 +++++++---------- 6 files changed, 42 insertions(+), 60 deletions(-) diff --git a/pkg/noun/jets/a/gte.c b/pkg/noun/jets/a/gte.c index 8934ec5c5b..4143304cc1 100644 --- a/pkg/noun/jets/a/gte.c +++ b/pkg/noun/jets/a/gte.c @@ -6,7 +6,7 @@ #include "noun.h" u3_noun -u3qa_gte(u3_atom a, u3_atom b) +u3qa_gte(u3_noun a, u3_noun b) { if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { return __(a >= b); @@ -17,6 +17,10 @@ u3qa_gte(u3_atom a, u3_atom b) else if ( 0 == b ) { return c3y; } + else if ( !_(u3ud(a)) || !_(u3ud(b)) ) { + if ( _(u3r_sing(a, b)) ) return c3y; + else return u3m_bail(c3__fail); + } else { c3_w a_w = u3r_met(0, a); c3_w b_w = u3r_met(0, b); @@ -46,13 +50,6 @@ u3wa_gte(u3_noun cor) { u3_noun a, b; - if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) - || (c3n == u3ud(b) && 0 != a) - || (c3n == u3ud(a) && 0 != b) ) - { - return u3m_bail(c3__exit); - } - else { - return u3qa_gte(a, b); - } + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + return u3qa_gte(a, b); } diff --git a/pkg/noun/jets/a/gth.c b/pkg/noun/jets/a/gth.c index 5b059e54aa..8a8bac1f23 100644 --- a/pkg/noun/jets/a/gth.c +++ b/pkg/noun/jets/a/gth.c @@ -7,7 +7,7 @@ #include "noun.h" u3_noun -u3qa_gth(u3_atom a, u3_atom b) +u3qa_gth(u3_noun a, u3_noun b) { if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { return __(a > b); @@ -18,6 +18,10 @@ u3qa_gth(u3_atom a, u3_atom b) else if ( 0 == b ) { return c3y; } + else if ( !_(u3ud(a)) || !_(u3ud(b)) ) { + if ( _(u3r_sing(a, b)) ) return c3n; + else return u3m_bail(c3__fail); + } else { c3_w a_w = u3r_met(0, a); c3_w b_w = u3r_met(0, b); @@ -47,15 +51,8 @@ u3wa_gth(u3_noun cor) { u3_noun a, b; - if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) - || (c3n == u3ud(b) && 0 != a) - || (c3n == u3ud(a) && 0 != b) ) - { - return u3m_bail(c3__exit); - } - else { - return u3qa_gth(a, b); - } + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + return u3qa_gth(a, b); } u3_noun diff --git a/pkg/noun/jets/a/lte.c b/pkg/noun/jets/a/lte.c index 4def610c01..284d3e5617 100644 --- a/pkg/noun/jets/a/lte.c +++ b/pkg/noun/jets/a/lte.c @@ -7,7 +7,7 @@ #include "noun.h" u3_noun -u3qa_lte(u3_atom a, u3_atom b) +u3qa_lte(u3_noun a, u3_noun b) { if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { return __(a <= b); @@ -18,6 +18,10 @@ u3qa_lte(u3_atom a, u3_atom b) else if ( 0 == b ) { return c3n; } + else if ( !_(u3ud(a)) || !_(u3ud(b)) ) { + if ( _(u3r_sing(a, b)) ) return c3y; + else return u3m_bail(c3__fail); + } else { c3_w a_w = u3r_met(0, a); c3_w b_w = u3r_met(0, b); @@ -47,15 +51,8 @@ u3wa_lte(u3_noun cor) { u3_noun a, b; - if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) - || (c3n == u3ud(b) && 0 != a) - || (c3n == u3ud(a) && 0 != b) ) - { - return u3m_bail(c3__exit); - } - else { - return u3qa_lte(a, b); - } + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + return u3qa_lte(a, b); } u3_noun diff --git a/pkg/noun/jets/a/lth.c b/pkg/noun/jets/a/lth.c index 0e74a797d2..7a110326d6 100644 --- a/pkg/noun/jets/a/lth.c +++ b/pkg/noun/jets/a/lth.c @@ -6,7 +6,7 @@ #include "noun.h" u3_noun -u3qa_lth(u3_atom a, u3_atom b) +u3qa_lth(u3_noun a, u3_noun b) { if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { return __(a < b); @@ -17,6 +17,10 @@ u3qa_lth(u3_atom a, u3_atom b) else if ( 0 == b ) { return c3n; } + else if ( !_(u3ud(a)) || !_(u3ud(b)) ) { + if ( _(u3r_sing(a, b)) ) return c3n; + else return u3m_bail(c3__fail); + } else { c3_w a_w = u3r_met(0, a); c3_w b_w = u3r_met(0, b); @@ -46,13 +50,6 @@ u3wa_lth(u3_noun cor) { u3_noun a, b; - if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) - || (c3n == u3ud(b) && 0 != a) - || (c3n == u3ud(a) && 0 != b) ) - { - return u3m_bail(c3__exit); - } - else { - return u3qa_lth(a, b); - } + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + return u3qa_lth(a, b); } diff --git a/pkg/noun/jets/a/max.c b/pkg/noun/jets/a/max.c index 5a9348643d..472945bce0 100644 --- a/pkg/noun/jets/a/max.c +++ b/pkg/noun/jets/a/max.c @@ -7,7 +7,7 @@ #include "noun.h" u3_noun -u3qa_max(u3_atom a, u3_atom b) +u3qa_max(u3_noun a, u3_noun b) { if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { return u3k(c3_max(a, b)); @@ -15,6 +15,10 @@ u3qa_max(u3_atom a, u3_atom b) else { if ( a == 0 ) return u3k(b); if ( b == 0 ) return u3k(a); + if ( !_(u3ud(a)) || !_(u3ud(b)) ) { + if ( _(u3r_sing(a, b)) ) return u3k(a); + else return u3m_bail(c3__fail); + } c3_w a_w = u3r_met(0, a); c3_w b_w = u3r_met(0, b); @@ -43,15 +47,8 @@ u3wa_max(u3_noun cor) { u3_noun a, b; - if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) - || (c3n == u3ud(b) && 0 != a) - || (c3n == u3ud(a) && 0 != b) ) - { - return u3m_bail(c3__exit); - } - else { - return u3qa_max(a, b); - } + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + return u3qa_max(a, b); } u3_noun diff --git a/pkg/noun/jets/a/min.c b/pkg/noun/jets/a/min.c index 4c7c0e421a..bfdff6a9e7 100644 --- a/pkg/noun/jets/a/min.c +++ b/pkg/noun/jets/a/min.c @@ -7,7 +7,7 @@ #include "noun.h" u3_noun -u3qa_min(u3_atom a, u3_atom b) +u3qa_min(u3_noun a, u3_noun b) { if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { return u3k(c3_min(a, b)); @@ -16,6 +16,10 @@ u3qa_min(u3_atom a, u3_atom b) if ( (a == 0) || (b == 0) ) { return 0; } + if ( !_(u3ud(a)) || !_(u3ud(b)) ) { + if ( _(u3r_sing(a, b)) ) return u3k(a); + else return u3m_bail(c3__exit); + } c3_w a_w = u3r_met(0, a); c3_w b_w = u3r_met(0, b); @@ -44,15 +48,8 @@ u3wa_min(u3_noun cor) { u3_noun a, b; - if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) - || (c3n == u3ud(b) && 0 != a) - || (c3n == u3ud(a) && 0 != b) ) - { - return u3m_bail(c3__exit); - } - else { - return u3qa_min(a, b); - } + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + return u3qa_min(a, b); } u3_noun From 2cf0e07e8e2e747acfe9eb8d41f3b90d92cb2e7d Mon Sep 17 00:00:00 2001 From: Quodss Date: Fri, 9 Aug 2024 18:16:30 +0200 Subject: [PATCH 06/11] exit, not fail --- pkg/noun/jets/a/gte.c | 2 +- pkg/noun/jets/a/gth.c | 2 +- pkg/noun/jets/a/lte.c | 2 +- pkg/noun/jets/a/lth.c | 2 +- pkg/noun/jets/a/max.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/noun/jets/a/gte.c b/pkg/noun/jets/a/gte.c index 4143304cc1..888ed84d52 100644 --- a/pkg/noun/jets/a/gte.c +++ b/pkg/noun/jets/a/gte.c @@ -19,7 +19,7 @@ u3qa_gte(u3_noun a, u3_noun b) } else if ( !_(u3ud(a)) || !_(u3ud(b)) ) { if ( _(u3r_sing(a, b)) ) return c3y; - else return u3m_bail(c3__fail); + else return u3m_bail(c3__exit); } else { c3_w a_w = u3r_met(0, a); diff --git a/pkg/noun/jets/a/gth.c b/pkg/noun/jets/a/gth.c index 8a8bac1f23..02e5cfe5a2 100644 --- a/pkg/noun/jets/a/gth.c +++ b/pkg/noun/jets/a/gth.c @@ -20,7 +20,7 @@ u3qa_gth(u3_noun a, u3_noun b) } else if ( !_(u3ud(a)) || !_(u3ud(b)) ) { if ( _(u3r_sing(a, b)) ) return c3n; - else return u3m_bail(c3__fail); + else return u3m_bail(c3__exit); } else { c3_w a_w = u3r_met(0, a); diff --git a/pkg/noun/jets/a/lte.c b/pkg/noun/jets/a/lte.c index 284d3e5617..7431d44d32 100644 --- a/pkg/noun/jets/a/lte.c +++ b/pkg/noun/jets/a/lte.c @@ -20,7 +20,7 @@ u3qa_lte(u3_noun a, u3_noun b) } else if ( !_(u3ud(a)) || !_(u3ud(b)) ) { if ( _(u3r_sing(a, b)) ) return c3y; - else return u3m_bail(c3__fail); + else return u3m_bail(c3__exit); } else { c3_w a_w = u3r_met(0, a); diff --git a/pkg/noun/jets/a/lth.c b/pkg/noun/jets/a/lth.c index 7a110326d6..c32613313d 100644 --- a/pkg/noun/jets/a/lth.c +++ b/pkg/noun/jets/a/lth.c @@ -19,7 +19,7 @@ u3qa_lth(u3_noun a, u3_noun b) } else if ( !_(u3ud(a)) || !_(u3ud(b)) ) { if ( _(u3r_sing(a, b)) ) return c3n; - else return u3m_bail(c3__fail); + else return u3m_bail(c3__exit); } else { c3_w a_w = u3r_met(0, a); diff --git a/pkg/noun/jets/a/max.c b/pkg/noun/jets/a/max.c index 472945bce0..d4d3cc5e73 100644 --- a/pkg/noun/jets/a/max.c +++ b/pkg/noun/jets/a/max.c @@ -17,7 +17,7 @@ u3qa_max(u3_noun a, u3_noun b) if ( b == 0 ) return u3k(a); if ( !_(u3ud(a)) || !_(u3ud(b)) ) { if ( _(u3r_sing(a, b)) ) return u3k(a); - else return u3m_bail(c3__fail); + else return u3m_bail(c3__exit); } c3_w a_w = u3r_met(0, a); c3_w b_w = u3r_met(0, b); From c7ed8c40e98d84edd64a4318ae3d60a5bf65992e Mon Sep 17 00:00:00 2001 From: Quodss Date: Fri, 9 Aug 2024 18:22:16 +0200 Subject: [PATCH 07/11] remove noop gain --- pkg/noun/jets/a/max.c | 2 +- pkg/noun/jets/a/min.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/noun/jets/a/max.c b/pkg/noun/jets/a/max.c index d4d3cc5e73..05f3b36ea7 100644 --- a/pkg/noun/jets/a/max.c +++ b/pkg/noun/jets/a/max.c @@ -10,7 +10,7 @@ u3_noun u3qa_max(u3_noun a, u3_noun b) { if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { - return u3k(c3_max(a, b)); + return c3_max(a, b); } else { if ( a == 0 ) return u3k(b); diff --git a/pkg/noun/jets/a/min.c b/pkg/noun/jets/a/min.c index bfdff6a9e7..f4f39a9328 100644 --- a/pkg/noun/jets/a/min.c +++ b/pkg/noun/jets/a/min.c @@ -10,7 +10,7 @@ u3_noun u3qa_min(u3_noun a, u3_noun b) { if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { - return u3k(c3_min(a, b)); + return c3_min(a, b); } else { if ( (a == 0) || (b == 0) ) { From 3b7108dc033a02de134efbb5a22adbfc8c27d88d Mon Sep 17 00:00:00 2001 From: Quodss Date: Sat, 10 Aug 2024 10:31:23 +0200 Subject: [PATCH 08/11] punt on wrong types, stricter helping functions --- pkg/noun/jets/a/gte.c | 17 ++++++++--------- pkg/noun/jets/a/gth.c | 23 +++++++++++------------ pkg/noun/jets/a/lte.c | 21 ++++++++++----------- pkg/noun/jets/a/lth.c | 15 +++++++-------- pkg/noun/jets/a/max.c | 23 +++++++++++------------ pkg/noun/jets/a/min.c | 21 ++++++++++----------- 6 files changed, 57 insertions(+), 63 deletions(-) diff --git a/pkg/noun/jets/a/gte.c b/pkg/noun/jets/a/gte.c index 888ed84d52..c01a7a1957 100644 --- a/pkg/noun/jets/a/gte.c +++ b/pkg/noun/jets/a/gte.c @@ -5,8 +5,8 @@ #include "noun.h" -u3_noun -u3qa_gte(u3_noun a, u3_noun b) +u3_atom +u3qa_gte(u3_atom a, u3_atom b) { if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { return __(a >= b); @@ -17,10 +17,6 @@ u3qa_gte(u3_noun a, u3_noun b) else if ( 0 == b ) { return c3y; } - else if ( !_(u3ud(a)) || !_(u3ud(b)) ) { - if ( _(u3r_sing(a, b)) ) return c3y; - else return u3m_bail(c3__exit); - } else { c3_w a_w = u3r_met(0, a); c3_w b_w = u3r_met(0, b); @@ -30,7 +26,7 @@ u3qa_gte(u3_noun a, u3_noun b) } else { mpz_t a_mp, b_mp; - u3_noun cmp; + u3_atom cmp; u3r_mp(a_mp, a); u3r_mp(b_mp, b); @@ -45,11 +41,14 @@ u3qa_gte(u3_noun a, u3_noun b) } } -u3_noun +u3_weak u3wa_gte(u3_noun cor) { - u3_noun a, b; + u3_atom a, b; u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + if ( !_(u3ud(a)) || !_(u3ud(b)) ) { + return u3_none; + } return u3qa_gte(a, b); } diff --git a/pkg/noun/jets/a/gth.c b/pkg/noun/jets/a/gth.c index 02e5cfe5a2..ad5b4e6212 100644 --- a/pkg/noun/jets/a/gth.c +++ b/pkg/noun/jets/a/gth.c @@ -6,8 +6,8 @@ #include "noun.h" -u3_noun -u3qa_gth(u3_noun a, u3_noun b) +u3_atom +u3qa_gth(u3_atom a, u3_atom b) { if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { return __(a > b); @@ -18,10 +18,6 @@ u3qa_gth(u3_noun a, u3_noun b) else if ( 0 == b ) { return c3y; } - else if ( !_(u3ud(a)) || !_(u3ud(b)) ) { - if ( _(u3r_sing(a, b)) ) return c3n; - else return u3m_bail(c3__exit); - } else { c3_w a_w = u3r_met(0, a); c3_w b_w = u3r_met(0, b); @@ -31,7 +27,7 @@ u3qa_gth(u3_noun a, u3_noun b) } else { mpz_t a_mp, b_mp; - u3_noun cmp; + u3_atom cmp; u3r_mp(a_mp, a); u3r_mp(b_mp, b); @@ -46,19 +42,22 @@ u3qa_gth(u3_noun a, u3_noun b) } } -u3_noun +u3_weak u3wa_gth(u3_noun cor) { - u3_noun a, b; + u3_atom a, b; u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + if ( !_(u3ud(a)) || !_(u3ud(b)) ) { + return u3_none; + } return u3qa_gth(a, b); } -u3_noun -u3ka_gth(u3_noun a, u3_noun b) +u3_atom +u3ka_gth(u3_atom a, u3_atom b) { - u3_noun c = u3qa_gth(a, b); + u3_atom c = u3qa_gth(a, b); u3z(a); u3z(b); return c; } diff --git a/pkg/noun/jets/a/lte.c b/pkg/noun/jets/a/lte.c index 7431d44d32..d5a939fdfd 100644 --- a/pkg/noun/jets/a/lte.c +++ b/pkg/noun/jets/a/lte.c @@ -6,8 +6,8 @@ #include "noun.h" -u3_noun -u3qa_lte(u3_noun a, u3_noun b) +u3_atom +u3qa_lte(u3_atom a, u3_atom b) { if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { return __(a <= b); @@ -18,10 +18,6 @@ u3qa_lte(u3_noun a, u3_noun b) else if ( 0 == b ) { return c3n; } - else if ( !_(u3ud(a)) || !_(u3ud(b)) ) { - if ( _(u3r_sing(a, b)) ) return c3y; - else return u3m_bail(c3__exit); - } else { c3_w a_w = u3r_met(0, a); c3_w b_w = u3r_met(0, b); @@ -46,19 +42,22 @@ u3qa_lte(u3_noun a, u3_noun b) } } -u3_noun +u3_weak u3wa_lte(u3_noun cor) { - u3_noun a, b; + u3_atom a, b; u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + if ( !_(u3ud(a)) || !_(u3ud(b)) ) { + return u3_none; + } return u3qa_lte(a, b); } -u3_noun -u3ka_lte(u3_noun a, u3_noun b) +u3_atom +u3ka_lte(u3_atom a, u3_atom b) { - u3_noun c = u3qa_lte(a, b); + u3_atom c = u3qa_lte(a, b); u3z(a); u3z(b); return c; } diff --git a/pkg/noun/jets/a/lth.c b/pkg/noun/jets/a/lth.c index c32613313d..f991e6cf98 100644 --- a/pkg/noun/jets/a/lth.c +++ b/pkg/noun/jets/a/lth.c @@ -5,8 +5,8 @@ #include "noun.h" -u3_noun -u3qa_lth(u3_noun a, u3_noun b) +u3_atom +u3qa_lth(u3_atom a, u3_atom b) { if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { return __(a < b); @@ -17,10 +17,6 @@ u3qa_lth(u3_noun a, u3_noun b) else if ( 0 == b ) { return c3n; } - else if ( !_(u3ud(a)) || !_(u3ud(b)) ) { - if ( _(u3r_sing(a, b)) ) return c3n; - else return u3m_bail(c3__exit); - } else { c3_w a_w = u3r_met(0, a); c3_w b_w = u3r_met(0, b); @@ -45,11 +41,14 @@ u3qa_lth(u3_noun a, u3_noun b) } } -u3_noun +u3_weak u3wa_lth(u3_noun cor) { - u3_noun a, b; + u3_atom a, b; u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + if ( !_(u3ud(a)) || !_(u3ud(b)) ) { + return u3_none; + } return u3qa_lth(a, b); } diff --git a/pkg/noun/jets/a/max.c b/pkg/noun/jets/a/max.c index 05f3b36ea7..0ef3df4112 100644 --- a/pkg/noun/jets/a/max.c +++ b/pkg/noun/jets/a/max.c @@ -6,19 +6,15 @@ #include "noun.h" -u3_noun -u3qa_max(u3_noun a, u3_noun b) +u3_atom +u3qa_max(u3_atom a, u3_atom b) { if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { return c3_max(a, b); } else { if ( a == 0 ) return u3k(b); - if ( b == 0 ) return u3k(a); - if ( !_(u3ud(a)) || !_(u3ud(b)) ) { - if ( _(u3r_sing(a, b)) ) return u3k(a); - else return u3m_bail(c3__exit); - } + if ( b == 0 ) return u3k(a); c3_w a_w = u3r_met(0, a); c3_w b_w = u3r_met(0, b); @@ -42,19 +38,22 @@ u3qa_max(u3_noun a, u3_noun b) } } -u3_noun +u3_weak u3wa_max(u3_noun cor) { - u3_noun a, b; + u3_atom a, b; u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + if ( !_(u3ud(a)) || !_(u3ud(b)) ) { + return u3_none; + } return u3qa_max(a, b); } -u3_noun -u3ka_max(u3_noun a, u3_noun b) +u3_atom +u3ka_max(u3_atom a, u3_atom b) { - u3_noun c = u3qa_max(a, b); + u3_atom c = u3qa_max(a, b); u3z(a); u3z(b); return c; } diff --git a/pkg/noun/jets/a/min.c b/pkg/noun/jets/a/min.c index f4f39a9328..24d8c3a11c 100644 --- a/pkg/noun/jets/a/min.c +++ b/pkg/noun/jets/a/min.c @@ -6,8 +6,8 @@ #include "noun.h" -u3_noun -u3qa_min(u3_noun a, u3_noun b) +u3_atom +u3qa_min(u3_atom a, u3_atom b) { if ( _(u3a_is_cat(a)) && _(u3a_is_cat(b)) ) { return c3_min(a, b); @@ -16,10 +16,6 @@ u3qa_min(u3_noun a, u3_noun b) if ( (a == 0) || (b == 0) ) { return 0; } - if ( !_(u3ud(a)) || !_(u3ud(b)) ) { - if ( _(u3r_sing(a, b)) ) return u3k(a); - else return u3m_bail(c3__exit); - } c3_w a_w = u3r_met(0, a); c3_w b_w = u3r_met(0, b); @@ -43,19 +39,22 @@ u3qa_min(u3_noun a, u3_noun b) } } -u3_noun +u3_weak u3wa_min(u3_noun cor) { - u3_noun a, b; + u3_atom a, b; u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + if ( !_(u3ud(a)) || !_(u3ud(b)) ) { + return u3_none; + } return u3qa_min(a, b); } -u3_noun -u3ka_min(u3_noun a, u3_noun b) +u3_atom +u3ka_min(u3_atom a, u3_atom b) { - u3_noun c = u3qa_min(a, b); + u3_atom c = u3qa_min(a, b); u3z(a); u3z(b); return c; } From 10a836b9ec786e7f904ed4f96e8f76c1f61b1cea Mon Sep 17 00:00:00 2001 From: Quodss Date: Sat, 10 Aug 2024 16:00:33 +0200 Subject: [PATCH 09/11] types --- pkg/noun/jets/a/gte.c | 2 +- pkg/noun/jets/a/gth.c | 2 +- pkg/noun/jets/a/lte.c | 4 ++-- pkg/noun/jets/a/lth.c | 4 ++-- pkg/noun/jets/a/max.c | 4 ++-- pkg/noun/jets/a/min.c | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pkg/noun/jets/a/gte.c b/pkg/noun/jets/a/gte.c index c01a7a1957..e58b83a67a 100644 --- a/pkg/noun/jets/a/gte.c +++ b/pkg/noun/jets/a/gte.c @@ -44,7 +44,7 @@ u3qa_gte(u3_atom a, u3_atom b) u3_weak u3wa_gte(u3_noun cor) { - u3_atom a, b; + u3_noun a, b; u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); if ( !_(u3ud(a)) || !_(u3ud(b)) ) { diff --git a/pkg/noun/jets/a/gth.c b/pkg/noun/jets/a/gth.c index ad5b4e6212..ad522c9093 100644 --- a/pkg/noun/jets/a/gth.c +++ b/pkg/noun/jets/a/gth.c @@ -45,7 +45,7 @@ u3qa_gth(u3_atom a, u3_atom b) u3_weak u3wa_gth(u3_noun cor) { - u3_atom a, b; + u3_noun a, b; u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); if ( !_(u3ud(a)) || !_(u3ud(b)) ) { diff --git a/pkg/noun/jets/a/lte.c b/pkg/noun/jets/a/lte.c index d5a939fdfd..1d62b2d72f 100644 --- a/pkg/noun/jets/a/lte.c +++ b/pkg/noun/jets/a/lte.c @@ -27,7 +27,7 @@ u3qa_lte(u3_atom a, u3_atom b) } else { mpz_t a_mp, b_mp; - u3_noun cmp; + u3_atom cmp; u3r_mp(a_mp, a); u3r_mp(b_mp, b); @@ -45,7 +45,7 @@ u3qa_lte(u3_atom a, u3_atom b) u3_weak u3wa_lte(u3_noun cor) { - u3_atom a, b; + u3_noun a, b; u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); if ( !_(u3ud(a)) || !_(u3ud(b)) ) { diff --git a/pkg/noun/jets/a/lth.c b/pkg/noun/jets/a/lth.c index f991e6cf98..3da15609ff 100644 --- a/pkg/noun/jets/a/lth.c +++ b/pkg/noun/jets/a/lth.c @@ -26,7 +26,7 @@ u3qa_lth(u3_atom a, u3_atom b) } else { mpz_t a_mp, b_mp; - u3_noun cmp; + u3_atom cmp; u3r_mp(a_mp, a); u3r_mp(b_mp, b); @@ -44,7 +44,7 @@ u3qa_lth(u3_atom a, u3_atom b) u3_weak u3wa_lth(u3_noun cor) { - u3_atom a, b; + u3_noun a, b; u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); if ( !_(u3ud(a)) || !_(u3ud(b)) ) { diff --git a/pkg/noun/jets/a/max.c b/pkg/noun/jets/a/max.c index 0ef3df4112..46f255d7cb 100644 --- a/pkg/noun/jets/a/max.c +++ b/pkg/noun/jets/a/max.c @@ -23,7 +23,7 @@ u3qa_max(u3_atom a, u3_atom b) } else { mpz_t a_mp, b_mp; - u3_noun max; + u3_atom max; u3r_mp(a_mp, a); u3r_mp(b_mp, b); @@ -41,7 +41,7 @@ u3qa_max(u3_atom a, u3_atom b) u3_weak u3wa_max(u3_noun cor) { - u3_atom a, b; + u3_noun a, b; u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); if ( !_(u3ud(a)) || !_(u3ud(b)) ) { diff --git a/pkg/noun/jets/a/min.c b/pkg/noun/jets/a/min.c index 24d8c3a11c..af93e10d7e 100644 --- a/pkg/noun/jets/a/min.c +++ b/pkg/noun/jets/a/min.c @@ -24,7 +24,7 @@ u3qa_min(u3_atom a, u3_atom b) } else { mpz_t a_mp, b_mp; - u3_noun min; + u3_atom min; u3r_mp(a_mp, a); u3r_mp(b_mp, b); @@ -42,7 +42,7 @@ u3qa_min(u3_atom a, u3_atom b) u3_weak u3wa_min(u3_noun cor) { - u3_atom a, b; + u3_noun a, b; u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); if ( !_(u3ud(a)) || !_(u3ud(b)) ) { From f7d40a8b66a158c9051c4ca5c0e0615c1957ebd6 Mon Sep 17 00:00:00 2001 From: Quodss Date: Sun, 11 Aug 2024 10:45:49 +0200 Subject: [PATCH 10/11] ++add punt on wrong type --- pkg/noun/jets/a/add.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/pkg/noun/jets/a/add.c b/pkg/noun/jets/a/add.c index a84436bf04..94d262d748 100644 --- a/pkg/noun/jets/a/add.c +++ b/pkg/noun/jets/a/add.c @@ -6,7 +6,7 @@ #include "noun.h" -u3_noun +u3_atom u3qa_add(u3_atom a, u3_atom b) { @@ -31,16 +31,14 @@ u3qa_add(u3_atom a, } } -u3_noun +u3_weak u3wa_add(u3_noun cor) { u3_noun a, b; - if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || - (c3n == u3ud(a)) || - (c3n == u3ud(b) && a != 0) ) - { - return u3m_bail(c3__exit); + u3x_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0); + if ( !_(u3ud(a)) || !_(u3ud(b)) ) { + return u3_none; } else { return u3qa_add(a, b); From 86815891112df9c90401542c0ab1ed6523879c66 Mon Sep 17 00:00:00 2001 From: Quodss Date: Mon, 12 Aug 2024 19:20:52 +0200 Subject: [PATCH 11/11] ++sort must crash on non-loobean --- pkg/noun/jets/b/sort.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/noun/jets/b/sort.c b/pkg/noun/jets/b/sort.c index 9b01d5422f..711645a966 100644 --- a/pkg/noun/jets/b/sort.c +++ b/pkg/noun/jets/b/sort.c @@ -28,9 +28,12 @@ if ( c3y == hoz ) { nex = u3nc(u3nc(u3k(u3h(a)), u3k(u3h(acc))), u3k(u3t(acc))); } - else { + else if ( c3n == hoz ) { nex = u3nc(u3k(u3h(acc)), u3nc(u3k(u3h(a)), u3k(u3t(acc)))); } + else { + return u3m_bail(c3__exit); + } u3z(hoz); u3z(acc);