fix float ⌾(l⊸⊏) doing wrong comparisons

This commit is contained in:
dzaima 2025-03-12 17:23:17 +02:00
parent d48194c3c8
commit 72c4eca6c0
2 changed files with 9 additions and 2 deletions

View File

@ -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_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_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_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); case el_bit: { ra = reuse? a(REUSE(x)) : cpyBitArr(x);
TyArr* na = toBitArr(rep); rep = taga(na); TyArr* na = toBitArr(rep); rep = taga(na);
u64* np = bitarrv_ptr(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_u8: IMPL(u8);
do_u16: IMPL(u16); do_u16: IMPL(u16);
do_u32: IMPL(u32); do_u32: IMPL(u32);
do_u64: IMPL(u64); do_f64: IMPL(f64);
#undef IMPL #undef IMPL
do_tycell:; do_tycell:;

View File

@ -7,6 +7,11 @@
# !% ⊢⌾(⊢¨) 4 # TODO enable # !% ⊢⌾(⊢¨) 4 # TODO enable
# !% ⊢⌾(⊢˘) 4 # TODO enable # !% ⊢⌾(⊢˘) 4 # TODO enable
# ¯0¨⌾((⥊𝕨)⊸⊏) 𝕩
%DEF nz InsNZ { (¯641)˘((𝕨))(641•bit._cast) ˘ 𝕩} IsNZ {(¯641)˘ 641•bit._cast ˘ 𝕩}
%USE nz IsNZ 12 InsNZ 0.5010¯12 %% 011000, 0.5000¯12
%USE nz IsNZ 12 InsNZ 0010¯12 %% 011000, 0000¯12
# ⌾(F⊸Op) # ⌾(F⊸Op)
10+((2÷˜)) 10 %% 01234156789 10+((2÷˜)) 10 %% 01234156789
10+((2÷˜)) 10 %% 01234156789 10+((2÷˜)) 10 %% 01234156789
@ -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 1+((2/5)) _eqvar ˘ 10 %% ˘ <5+ 10
%USE eqvar •internal.Keep((2/5)) _eqvar 10040 %% 10040 %USE eqvar •internal.Keep((2/5)) _eqvar 10040 %% 10040
%USE eqvar (<) {•internal.Keep(𝕨) 𝕩}_eqvar¨ 01, "ab""cd" %% 01, "ab""cd" %USE eqvar (<) {•internal.Keep(𝕨) 𝕩}_eqvar¨ 01, "ab""cd" %% 01, "ab""cd"
!"𝔽⌾(a⊸⊏): Incompatible result elements" % %USE evar 0÷0,0÷0 {𝕨(00) 𝕩}_evar 30
%USE eqvar %USE nz 00 {(0 InsNZ 20)(𝕨)𝕩}_eqvar 33 %% 033
# ⥊ # ⥊