From 72c4eca6c084e7d6fcd1e7f52df16dd6310f2f91 Mon Sep 17 00:00:00 2001 From: dzaima Date: Wed, 12 Mar 2025 17:23:17 +0200 Subject: [PATCH] =?UTF-8?q?fix=20float=20=E2=8C=BE(l=E2=8A=B8=E2=8A=8F)=20?= =?UTF-8?q?doing=20wrong=20comparisons?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/builtins/select.c | 4 ++-- test/cases/under.bqn | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/builtins/select.c b/src/builtins/select.c index 10b90b6b..845ab3d8 100644 --- a/src/builtins/select.c +++ b/src/builtins/select.c @@ -508,7 +508,7 @@ B select_replace(u32 chr, B w, B x, B rep, usz wia, usz cam, usz csz) { // consu case el_c16: rep = toC16Any(rep); ra = reuse? a(REUSE(x)) : cpyC16Arr(x); goto do_u16; case el_i32: rep = toI32Any(rep); ra = reuse? a(REUSE(x)) : cpyI32Arr(x); goto do_u32; case el_c32: rep = toC32Any(rep); ra = reuse? a(REUSE(x)) : cpyC32Arr(x); goto do_u32; - case el_f64: rep = toF64Any(rep); ra = reuse? a(REUSE(x)) : cpyF64Arr(x); goto do_u64; + case el_f64: rep = toF64Any(rep); ra = reuse? a(REUSE(x)) : cpyF64Arr(x); goto do_f64; case el_bit: { ra = reuse? a(REUSE(x)) : cpyBitArr(x); TyArr* na = toBitArr(rep); rep = taga(na); u64* np = bitarrv_ptr(na); @@ -569,7 +569,7 @@ B select_replace(u32 chr, B w, B x, B rep, usz wia, usz cam, usz csz) { // consu do_u8: IMPL(u8); do_u16: IMPL(u16); do_u32: IMPL(u32); - do_u64: IMPL(u64); + do_f64: IMPL(f64); #undef IMPL do_tycell:; diff --git a/test/cases/under.bqn b/test/cases/under.bqn index 1d8f810e..fc5c428e 100644 --- a/test/cases/under.bqn +++ b/test/cases/under.bqn @@ -7,6 +7,11 @@ # !% ⊢⌾(⊢¨) 4 # TODO enable # !% ⊢⌾(⊢˘) 4 # TODO enable +# ¯0¨⌾((⥊𝕨)⊸⊏) 𝕩 +%DEF nz InsNZ ← {⥊ (¯64↑1)˘⌾((⥊𝕨)⊸⊏)⌾(64‿1•bit._cast) ≍˘ 𝕩} ⋄ IsNZ ← {(¯64↑1)⊸≡˘ 64‿1•bit._cast ≍˘ 𝕩} +%USE nz ⋄ IsNZ⊸⋈ 1‿2 InsNZ 0.5‿0‿1‿0‿¯1‿2 %% ⟨0‿1‿1‿0‿0‿0, 0.5‿0‿0‿0‿¯1‿2⟩ +%USE nz ⋄ IsNZ⊸⋈ 1‿2 InsNZ 0‿0‿1‿0‿¯1‿2 %% ⟨0‿1‿1‿0‿0‿0, 0‿0‿0‿0‿¯1‿2⟩ + # ⌾(F⊸Op) 10⊸+⌾((2÷˜≢)⊸⊑) ↕10 %% 0‿1‿2‿3‿4‿15‿6‿7‿8‿9 10⊸+⌾((2÷˜≢)⊑⊢) ↕10 %% 0‿1‿2‿3‿4‿15‿6‿7‿8‿9 @@ -85,6 +90,8 @@ n←500 ⋄ a←↕n ⋄ i←(-n)+↕2×n ⋄ r←⌽(2×n)⥊a ⋄ ! (⌽a) ≡ %USE eqvar ⋄ 1⊸+⌾((2/↕5)⊸⊏) _eqvar ≍˘ ↕10 %% ≍˘ <⟜5⊸+ ↕10 %USE eqvar ⋄ •internal.Keep⌾((2/↕5)⊸⊏) _eqvar 10‿0‿4⥊0 %% 10‿0‿4⥊0 %USE eqvar ⋄ (<⟨⟩) {•internal.Keep⌾(𝕨⊸⊏) 𝕩}_eqvar¨ ⟨0‿1, "ab"‿"cd"⟩ %% ⟨0‿1, "ab"‿"cd"⟩ +!"𝔽⌾(a⊸⊏): Incompatible result elements" % %USE evar ⋄ ⟨0÷0,0÷0⟩ {𝕨⌾(0‿0⊸⊏) 𝕩}_evar 3⥊0 +%USE eqvar ⋄ %USE nz ⋄ 0‿0 {(0 InsNZ 2⥊0)⌾(𝕨⊸⊏)𝕩}_eqvar 3⥊3 %% 0‿3‿3 # ⥊