From 15bf932757b8d641de3e22e11a31cd07cb10481b Mon Sep 17 00:00:00 2001 From: dzaima Date: Wed, 21 May 2025 00:54:52 +0300 Subject: [PATCH] make atom decomposition equality check use eequal gets rid of compound functions having observable identity if they have NaN as a component --- src/builtins/compare.c | 2 +- test/cases/prims.bqn | 8 +++++--- test/cases/under.bqn | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/builtins/compare.c b/src/builtins/compare.c index a9de9c58..d48a87be 100644 --- a/src/builtins/compare.c +++ b/src/builtins/compare.c @@ -64,7 +64,7 @@ NOINLINE bool atomEqualF(B w, B x) { usz wia = IA(wd); if (wia != IA(xd)) goto dec_ne; for (ux i = 0; i < wia; i++) { - if(!equal(wdp[i], xdp[i])) goto dec_ne; + if(!eequal(wdp[i], xdp[i])) goto dec_ne; } decG(wd); decG(xd); return true; diff --git a/test/cases/prims.bqn b/test/cases/prims.bqn index a6d2ec2f..14ad3ad3 100644 --- a/test/cases/prims.bqn +++ b/test/cases/prims.bqn @@ -23,9 +23,11 @@ {•Type}=⟨•Type,•BQN"•Type"⟩ %% 1‿1 {•FChars}=⟨•FChars,•BQN"•FChars"⟩ %% 1‿0 =⌜˜ ⟨+, ⁼, ⌾, {𝕩}, {𝔽𝕩}, {𝔽𝔾}, •internal.PureKeep, •internal.Keep, •Type, •FChars, •_timed, •_while_, 2⊸+, +-, {⇐}⟩ %% 15‿15⥊1∾15⥊0 -≡⌜˜ ⟨(0÷0)⊸+, (0÷0)⊸+⟩ %% [1‿0, 0‿1] -=⌜˜ ⟨(0÷0)⊸+, (0÷0)⊸+⟩ %% [1‿0, 0‿1] -! {𝕩 ≡ ⍷2/𝕩} ⟨(0÷0)⊸+, (0÷0)⊸+⟩ +≡⌜˜ ⟨(0÷0)⊸+, (0÷0)⊸+⟩ %% [1‿1, 1‿1] +=⌜˜ ⟨(0÷0)⊸+, (0÷0)⊸+⟩ %% [1‿1, 1‿1] +≠⍷ ⟨(0÷0)⊸+, 2, 2, 3, (0÷0)⊸+⟩ %% 3 +⊐ ⟨(0÷0)⊸+, 2, 2, 3, (0÷0)⊸+⟩ %% 0‿1‿1‿2‿0 +⊒ ⟨(0÷0)⊸+, 2, 2, 3, (0÷0)⊸+⟩ %% 0‿0‿1‿0‿1 # comparison w←1‿1⥊1 ⋄ x←1‿2⥊1 ⋄ {! (∾⟨"𝕨",•Repr𝕩,"𝕩: Expected equal shape prefix (1‿1 ≡ ≢𝕨, 1‿2 ≡ ≢𝕩)"⟩) ≡ w 𝕏⎊(•CurrentError∘@) x}¨ =‿≠‿<‿>‿≤‿≥ diff --git a/test/cases/under.bqn b/test/cases/under.bqn index e4387483..c96841da 100644 --- a/test/cases/under.bqn +++ b/test/cases/under.bqn @@ -253,7 +253,7 @@ n←500 ⋄ a←↕n ⋄ i←(-n)+↕2×n ⋄ r←⌽(2×n)⥊a ⋄ ! (⌽a) ≡ ⟨1‿1, 1‿1, ⟨3,0÷0,4⟩⟩ ⟨1‿1, 1‿1, {𝕊: ShouldNotBeCalled}⟩ ⟨1‿1, 1‿1, ShouldNotBeCalled˙⟩ - ⟨1‿1, 0‿1, {𝕊: ShouldNotBeCalled⟜(0÷0)}⟩ + ⟨1‿1, 1‿1, {𝕊: ShouldNotBeCalled⟜(0÷0)}⟩ ⟨1‿1, 1‿1, ShouldNotBeCalled⟜(0÷0)˙⟩ ⟨1‿1, 1‿1, ∞⟩ ⟩