Unify integer and character Bins
This commit is contained in:
parent
bcf3c4dbd0
commit
139faee0a1
@ -293,9 +293,24 @@ B GRADE_CAT(c2)(B t, B w, B x) {
|
|||||||
|
|
||||||
u8 fl = GRADE_UD(fl_asc,fl_dsc);
|
u8 fl = GRADE_UD(fl_asc,fl_dsc);
|
||||||
|
|
||||||
if (we<=el_i32 & xe<=el_i32) {
|
if (LIKELY(we<el_B & xe<el_B)) {
|
||||||
w = toI32Any(w); i32* wi = i32any_ptr(w);
|
if (we<el_c8) { // number
|
||||||
x = toI32Any(x); i32* xi = i32any_ptr(x);
|
if (xe<el_c8) {
|
||||||
|
if (we>el_i32 | xe>el_i32) goto gen;
|
||||||
|
w=toI32Any(w); x=toI32Any(x);
|
||||||
|
} else {
|
||||||
|
for (u64 i=0; i<xia; i++) rp[i]=wia; goto done;
|
||||||
|
}
|
||||||
|
} else { // character
|
||||||
|
if (xe<el_c8) {
|
||||||
|
Arr* ra=allZeroes(xia); arr_shVec(ra);
|
||||||
|
decG(r); r=taga(ra); goto done;
|
||||||
|
} else {
|
||||||
|
w=toC32Any(w); x=toC32Any(x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i32* wi = tyany_ptr(w);
|
||||||
|
i32* xi = tyany_ptr(x);
|
||||||
if (CHECK_VALID && !FL_HAS(w,fl)) {
|
if (CHECK_VALID && !FL_HAS(w,fl)) {
|
||||||
for (i64 i = 0; i < (i64)wia-1; i++) if ((wi[i]-wi[i+1]) GRADE_UD(>,<) 0) thrM(GRADE_CHR": 𝕨 must be sorted"GRADE_UD(," in descending order"));
|
for (i64 i = 0; i < (i64)wia-1; i++) if ((wi[i]-wi[i+1]) GRADE_UD(>,<) 0) thrM(GRADE_CHR": 𝕨 must be sorted"GRADE_UD(," in descending order"));
|
||||||
FL_SET(w, fl);
|
FL_SET(w, fl);
|
||||||
@ -312,6 +327,7 @@ B GRADE_CAT(c2)(B t, B w, B x) {
|
|||||||
rp[i] = s;
|
rp[i] = s;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
gen:
|
||||||
SGetU(x)
|
SGetU(x)
|
||||||
SLOW2("𝕨"GRADE_CHR"𝕩", w, x);
|
SLOW2("𝕨"GRADE_CHR"𝕩", w, x);
|
||||||
B* wp = arr_bptr(w);
|
B* wp = arr_bptr(w);
|
||||||
@ -336,6 +352,7 @@ B GRADE_CAT(c2)(B t, B w, B x) {
|
|||||||
rp[i] = s;
|
rp[i] = s;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
done:
|
||||||
decG(w);decG(x);
|
decG(w);decG(x);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user