fix leading-axis operations on empty inputs
This commit is contained in:
parent
93dd25e0e1
commit
c567dff565
@ -281,7 +281,7 @@ static B modint_AS(B w, B xv) { return modint_AA(w, C2(shape, C1(fne, incG(w))
|
||||
ur xr=RNK(x); usz* wsh=SH(w); ur mr=wr<xr?wr:xr; \
|
||||
if (!eqShPart(wsh, xsh, mr)) thrF(CHR ": Expected equal shape prefix (%H ≡ ≢𝕨, %H ≡ ≢𝕩)", w, x); \
|
||||
if (wr!=xr) { \
|
||||
if (TI(w,elType)!=el_B && TI(x,elType)!=el_B) return leading_axis_arith(NAME##_c2, w, x, wsh, xsh, mr); \
|
||||
if (TI(w,elType)!=el_B && TI(x,elType)!=el_B && IA(w)!=0 && IA(x)!=0) return leading_axis_arith(NAME##_c2, w, x, wsh, xsh, mr); \
|
||||
else goto bad; \
|
||||
} \
|
||||
usz ia = IA(x); B r; \
|
||||
|
||||
@ -118,8 +118,8 @@ NOINLINE B toKCells(B x, ur k) {
|
||||
}
|
||||
|
||||
B slash_c2(B, B, B);
|
||||
NOINLINE B leading_axis_arith(FC2 fc2, B w, B x, usz* wsh, usz* xsh, ur mr) { // assumes non-equal rank conforming typed array arguments
|
||||
assert(isArr(w) && isArr(x) && TI(w,elType)!=el_B && TI(x,elType)!=el_B);
|
||||
NOINLINE B leading_axis_arith(FC2 fc2, B w, B x, usz* wsh, usz* xsh, ur mr) { // assumes non-equal rank non-empty conforming typed array arguments
|
||||
assert(isArr(w) && isArr(x) && TI(w,elType)!=el_B && TI(x,elType)!=el_B && IA(w)!=0 && IA(x)!=0);
|
||||
ur wr = RNK(w);
|
||||
ur xr = RNK(x);
|
||||
#if DEBUG
|
||||
|
||||
@ -142,6 +142,7 @@ B leading_axis_arith(FC2 fc2, B w, B x, usz* wsh, usz* xsh, ur mr);
|
||||
ur xr=RNK(x); usz* xsh=SH(x); \
|
||||
if (wr!=xr) { \
|
||||
ur mr = wr<xr? wr : xr; \
|
||||
if (IA(w)==0 || IA(x)==0) goto base;\
|
||||
if (!eqShPart(wsh, xsh, mr)) goto badShape; \
|
||||
return leading_axis_arith(NAME##_c2, w, x, wsh, xsh, mr); \
|
||||
} \
|
||||
|
||||
@ -66,6 +66,7 @@ NOINLINE B dyArith_AA(DyTableAA* table, B w, B x) {
|
||||
usz* xsh=SH(x);
|
||||
usz* wsh=SH(w);
|
||||
ur mr=wr<xr?wr:xr;
|
||||
if (IA(w)==0 || IA(x)==0) goto rec;
|
||||
if (!eqShPart(wsh, xsh, mr)) goto rec;
|
||||
return leading_axis_arith(table->mainFn, w, x, wsh, xsh, mr);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user