fix 0‿¯1⊏129⥊100
This commit is contained in:
parent
f2b6b5d446
commit
66584ce149
@ -75,7 +75,7 @@ B select_c2(B t, B w, B x) {
|
|||||||
#endif
|
#endif
|
||||||
#define CASE(S, E) case S: for (usz i=i0; i<i1; i++) ((E*)rp)[i] = ((E*)xp+off)[ip[i]]; break
|
#define CASE(S, E) case S: for (usz i=i0; i<i1; i++) ((E*)rp)[i] = ((E*)xp+off)[ip[i]]; break
|
||||||
#define CASEW(S, E) case S: for (usz i=0; i<wia; i++) ((E*)rp)[i] = ((E*)xp)[WRAP(wp[i], xia, thrF("⊏: Indexing out-of-bounds (%i∊𝕨, %s≡≠𝕩)", wp[i], xia))]; break
|
#define CASEW(S, E) case S: for (usz i=0; i<wia; i++) ((E*)rp)[i] = ((E*)xp)[WRAP(wp[i], xia, thrF("⊏: Indexing out-of-bounds (%i∊𝕨, %s≡≠𝕩)", wp[i], xia))]; break
|
||||||
#define TYPE(W) { W* wp = W##any_ptr(w); \
|
#define TYPE(W, NEXT) { W* wp = W##any_ptr(w); \
|
||||||
if (xe==el_bit) { u64* xp=bitarr_ptr(x); \
|
if (xe==el_bit) { u64* xp=bitarr_ptr(x); \
|
||||||
u64* rp; r = m_bitarrc(&rp, w); \
|
u64* rp; r = m_bitarrc(&rp, w); \
|
||||||
u64 b=0; \
|
u64 b=0; \
|
||||||
@ -103,6 +103,7 @@ B select_c2(B t, B w, B x) {
|
|||||||
if (max>=(i64)xia) thrF("⊏: Indexing out-of-bounds (%i∊𝕨, %s≡≠𝕩)", max, xia); \
|
if (max>=(i64)xia) thrF("⊏: Indexing out-of-bounds (%i∊𝕨, %s≡≠𝕩)", max, xia); \
|
||||||
W* ip=wp; usz off=xia; \
|
W* ip=wp; usz off=xia; \
|
||||||
if (max>=0) { off=0; if (RARE(min<0)) { \
|
if (max>=0) { off=0; if (RARE(min<0)) { \
|
||||||
|
if (RARE(xia > (1ULL<<(sizeof(W)*8-1)))) { w=taga(NEXT(w)); mm_free(v(r)); return select_c2(m_f64(0), w, x); } \
|
||||||
if (!wt) {wt=TALLOCP(W,i1-i0);} ip=wt-i0; \
|
if (!wt) {wt=TALLOCP(W,i1-i0);} ip=wt-i0; \
|
||||||
for (usz i=i0; i<i1; i++) { W e=wp[i]; ip[i]=e+((W)xia & (W)-(e<0)); } \
|
for (usz i=i0; i<i1; i++) { W e=wp[i]; ip[i]=e+((W)xia & (W)-(e<0)); } \
|
||||||
} } \
|
} } \
|
||||||
@ -140,9 +141,9 @@ B select_c2(B t, B w, B x) {
|
|||||||
decG(x);
|
decG(x);
|
||||||
return withFill(r, xf);
|
return withFill(r, xf);
|
||||||
}
|
}
|
||||||
else if (we==el_i8) TYPE(i8)
|
else if (we==el_i8) TYPE(i8,cpyI16Arr)
|
||||||
else if (we==el_i16) TYPE(i16)
|
else if (we==el_i16) TYPE(i16,cpyI32Arr)
|
||||||
else if (we==el_i32) TYPE(i32)
|
else if (we==el_i32) TYPE(i32,cpyF64Arr)
|
||||||
else {
|
else {
|
||||||
SLOW2("𝕨⊏𝕩", w, x);
|
SLOW2("𝕨⊏𝕩", w, x);
|
||||||
M_HARR(r, wia)
|
M_HARR(r, wia)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user