complete native ⋈
This commit is contained in:
parent
8cfbaf8b30
commit
049188d8a6
@ -88,8 +88,6 @@ B ud_c2(B t, B w, B x) {
|
|||||||
return c2(rt_ud, w, x);
|
return c2(rt_ud, w, x);
|
||||||
}
|
}
|
||||||
|
|
||||||
B pair_c1(B t, B x) { return m_v1( x); }
|
|
||||||
B pair_c2(B t, B w, B x) { return m_v2(w, x); }
|
|
||||||
B ltack_c1(B t, B x) { return x; }
|
B ltack_c1(B t, B x) { return x; }
|
||||||
B ltack_c2(B t, B w, B x) { dec(x); return w; }
|
B ltack_c2(B t, B w, B x) { dec(x); return w; }
|
||||||
B rtack_c1(B t, B x) { return x; }
|
B rtack_c1(B t, B x) { return x; }
|
||||||
|
|||||||
@ -39,7 +39,8 @@ B m_vec1(B a) {
|
|||||||
fillarr_ptr(ra)[0] = a;
|
fillarr_ptr(ra)[0] = a;
|
||||||
return taga(ra);
|
return taga(ra);
|
||||||
}
|
}
|
||||||
B m_vec2(B a, B b) {
|
|
||||||
|
FORCE_INLINE B m_vec2Base(B a, B b, bool fills) {
|
||||||
if (isAtm(a)&isAtm(b)) {
|
if (isAtm(a)&isAtm(b)) {
|
||||||
if (LIKELY(isNum(a)&isNum(b))) {
|
if (LIKELY(isNum(a)&isNum(b))) {
|
||||||
i32 ai=a.f; i32 bi=b.f;
|
i32 ai=a.f; i32 bi=b.f;
|
||||||
@ -56,9 +57,29 @@ B m_vec2(B a, B b) {
|
|||||||
else { u32* rp; B r = m_c32arrv(&rp, 2); rp[0]=ac; rp[1]=bc; return r; }
|
else { u32* rp; B r = m_c32arrv(&rp, 2); rp[0]=ac; rp[1]=bc; return r; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (fills) {
|
||||||
|
if (isAtm(a) || isAtm(b)) goto noFills;
|
||||||
|
B af = asFill(inc(a));
|
||||||
|
if (noFill(af)) goto noFills;
|
||||||
|
B bf = asFill(inc(b));
|
||||||
|
if (noFill(bf)) { dec(af); goto noFills; }
|
||||||
|
if (!fillEqual(af,bf)) { dec(bf); dec(af); goto noFills; }
|
||||||
|
dec(bf);
|
||||||
|
Arr* ra = m_fillarrp(2); arr_shVec(ra);
|
||||||
|
fillarr_setFill(ra, af);
|
||||||
|
fillarr_ptr(ra)[0] = a;
|
||||||
|
fillarr_ptr(ra)[1] = b;
|
||||||
|
return taga(ra);
|
||||||
|
}
|
||||||
|
noFills:
|
||||||
return m_v2(a,b);
|
return m_v2(a,b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
B m_vec2(B a, B b) { return m_vec2Base(a, b, false); }
|
||||||
|
|
||||||
|
B pair_c1(B t, B x) { return m_v1(x); }
|
||||||
|
B pair_c2(B t, B w, B x) { return m_vec2Base(w, x, true); }
|
||||||
|
|
||||||
B shape_c1(B t, B x) {
|
B shape_c1(B t, B x) {
|
||||||
if (isAtm(x)) return m_vec1(x);
|
if (isAtm(x)) return m_vec1(x);
|
||||||
usz ia = a(x)->ia;
|
usz ia = a(x)->ia;
|
||||||
|
|||||||
@ -96,8 +96,8 @@ static B m_v1(B a ); // consumes all
|
|||||||
static B m_v2(B a, B b ); // consumes all
|
static B m_v2(B a, B b ); // consumes all
|
||||||
static B m_v3(B a, B b, B c ); // consumes all
|
static B m_v3(B a, B b, B c ); // consumes all
|
||||||
static B m_v4(B a, B b, B c, B d); // consumes all
|
static B m_v4(B a, B b, B c, B d); // consumes all
|
||||||
B m_vec1(B a);
|
B m_vec1(B a); // complete fills
|
||||||
B m_vec2(B a, B b);
|
B m_vec2(B a, B b); // incomplete fills
|
||||||
|
|
||||||
// random stuff
|
// random stuff
|
||||||
|
|
||||||
|
|||||||
@ -236,7 +236,7 @@ void load_init() { // very last init function
|
|||||||
bool rtComplete[] = {
|
bool rtComplete[] = {
|
||||||
/* +-×÷⋆√⌊⌈|¬ */ 1,1,1,1,1,1,1,1,1,1,
|
/* +-×÷⋆√⌊⌈|¬ */ 1,1,1,1,1,1,1,1,1,1,
|
||||||
/* ∧∨<>≠=≤≥≡≢ */ 1,1,1,1,1,1,1,1,1,1,
|
/* ∧∨<>≠=≤≥≡≢ */ 1,1,1,1,1,1,1,1,1,1,
|
||||||
/* ⊣⊢⥊∾≍⋈↑↓↕« */ 1,1,1,1,1,0,1,1,1,1,
|
/* ⊣⊢⥊∾≍⋈↑↓↕« */ 1,1,1,1,1,1,1,1,1,1,
|
||||||
/* »⌽⍉/⍋⍒⊏⊑⊐⊒ */ 1,1,0,1,1,1,1,1,1,1,
|
/* »⌽⍉/⍋⍒⊏⊑⊐⊒ */ 1,1,0,1,1,1,1,1,1,1,
|
||||||
/* ∊⍷⊔!˙˜˘¨⌜⁼ */ 1,1,1,1,1,1,1,1,1,0,
|
/* ∊⍷⊔!˙˜˘¨⌜⁼ */ 1,1,1,1,1,1,1,1,1,0,
|
||||||
/* ´˝`∘○⊸⟜⌾⊘◶ */ 1,0,1,1,1,1,1,1,1,1,
|
/* ´˝`∘○⊸⟜⌾⊘◶ */ 1,0,1,1,1,1,1,1,1,1,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user