random cleanup
This commit is contained in:
parent
f0a602ccde
commit
a3e78e651e
25
src/arith.c
25
src/arith.c
@ -35,6 +35,12 @@ static inline B arith_recd(BBB2B f, B w, B x) {
|
|||||||
}
|
}
|
||||||
#define ffn(name, op, extra) ffnx(name, w.f op x.f, extra)
|
#define ffn(name, op, extra) ffnx(name, w.f op x.f, extra)
|
||||||
|
|
||||||
|
f64 pfmod(f64 a, f64 b) {
|
||||||
|
f64 r = fmod(a, b);
|
||||||
|
if (a<0 != b<0 && r) r+= b;
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
ffn(add, +, {
|
ffn(add, +, {
|
||||||
if (isC32(w) & isF64(x)) { u64 r = (u64)(u32)w.u + o2i64(x); if(r>CHR_MAX)thrM("+: Invalid character"); return m_c32(r); }
|
if (isC32(w) & isF64(x)) { u64 r = (u64)(u32)w.u + o2i64(x); if(r>CHR_MAX)thrM("+: Invalid character"); return m_c32(r); }
|
||||||
if (isF64(w) & isC32(x)) { u64 r = (u64)(u32)x.u + o2i64(w); if(r>CHR_MAX)thrM("+: Invalid character"); return m_c32(r); }
|
if (isF64(w) & isC32(x)) { u64 r = (u64)(u32)x.u + o2i64(w); if(r>CHR_MAX)thrM("+: Invalid character"); return m_c32(r); }
|
||||||
@ -46,18 +52,13 @@ ffn(sub, -, {
|
|||||||
ffn(mul, *, {})
|
ffn(mul, *, {})
|
||||||
ffn(and, *, {})
|
ffn(and, *, {})
|
||||||
ffn(div, /, {})
|
ffn(div, /, {})
|
||||||
ffnx(pow, pow(w.f,x.f), {})
|
ffnx(pow , pow(w.f, x.f), {})
|
||||||
ffnx(floor, fmin(w.f, x.f), {})
|
ffnx(floor, fmin(w.f, x.f), {})
|
||||||
ffnx(ceil, fmax(w.f, x.f), {})
|
ffnx(ceil , fmax(w.f, x.f), {})
|
||||||
f64 pfmod(f64 a, f64 b) {
|
ffnx(stile, pfmod(x.f, w.f), {})
|
||||||
f64 r = fmod(a, b);
|
ffnx(log , log(x.f)/log(w.f), {})
|
||||||
if (a<0 != b<0 && r) r+= b;
|
ffnx(or , (w.f+x.f)-(w.f*x.f), {})
|
||||||
return r;
|
ffnx(not , 1+w.f-x.f , {})
|
||||||
}
|
|
||||||
ffnx(stile, pfmod(x.f, w.f), {})
|
|
||||||
ffnx(log, log(x.f)/log(w.f), {})
|
|
||||||
ffnx(or, (w.f+x.f)-(w.f*x.f), {})
|
|
||||||
ffnx(not, 1+w.f-x.f, {})
|
|
||||||
|
|
||||||
#define CMP(X, N, G) \
|
#define CMP(X, N, G) \
|
||||||
ffn(N, X, { \
|
ffn(N, X, { \
|
||||||
|
|||||||
@ -26,14 +26,14 @@ B m_c32arrp(usz ia) { // doesn't write shape/rank
|
|||||||
u32* c32arr_ptr(B x) { VT(x, t_c32arr); return c(C32Arr,x)->a; }
|
u32* c32arr_ptr(B x) { VT(x, t_c32arr); return c(C32Arr,x)->a; }
|
||||||
|
|
||||||
B m_str8(usz sz, char* s) {
|
B m_str8(usz sz, char* s) {
|
||||||
B r = m_c32arrv(sz); u32* p = c32arr_ptr(r);
|
B r = m_c32arrv(sz); u32* rp = c32arr_ptr(r);
|
||||||
for (u64 i = 0; i < sz; i++) p[i] = s[i];
|
for (u64 i = 0; i < sz; i++) rp[i] = s[i];
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
NOINLINE B m_str32(u32* s) {
|
NOINLINE B m_str32(u32* s) {
|
||||||
u64 sz = 0; while(s[sz]) sz++;
|
u64 sz = 0; while(s[sz]) sz++;
|
||||||
B r = m_c32arrv(sz); u32* p = c32arr_ptr(r);
|
B r = m_c32arrv(sz); u32* rp = c32arr_ptr(r);
|
||||||
for (u64 i = 0; i < sz; i++) p[i] = s[i];
|
for (u64 i = 0; i < sz; i++) rp[i] = s[i];
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -70,7 +70,7 @@ void fillarr_free(B x) {
|
|||||||
void fillarr_visit(B x) {
|
void fillarr_visit(B x) {
|
||||||
usz ia = a(x)->ia; B* p = fillarr_ptr(x);
|
usz ia = a(x)->ia; B* p = fillarr_ptr(x);
|
||||||
mm_visit(c(FillArr,x)->fill);
|
mm_visit(c(FillArr,x)->fill);
|
||||||
for (usz i = 0; i < ia; i++) mm_visit(p[i]);
|
for (usz i = 0; i < ia; i++) mm_visit(p[i]);
|
||||||
}
|
}
|
||||||
bool fillarr_canStore(B x) { return true; }
|
bool fillarr_canStore(B x) { return true; }
|
||||||
|
|
||||||
|
|||||||
@ -126,7 +126,7 @@ void harr_free(B x) {
|
|||||||
}
|
}
|
||||||
void harr_visit(B x) {
|
void harr_visit(B x) {
|
||||||
usz ia = a(x)->ia; B* p = harr_ptr(x);
|
usz ia = a(x)->ia; B* p = harr_ptr(x);
|
||||||
for (usz i = 0; i < ia; i++) mm_visit(p[i]);
|
for (usz i = 0; i < ia; i++) mm_visit(p[i]);
|
||||||
}
|
}
|
||||||
bool harr_canStore(B x) { return true; }
|
bool harr_canStore(B x) { return true; }
|
||||||
|
|
||||||
|
|||||||
@ -46,10 +46,10 @@ void pr(char* a, B b) {
|
|||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
Block* ca3(B b) {
|
Block* ca3(B x) {
|
||||||
B* ps = harr_ptr(b);
|
B* xp = harr_ptr(x);
|
||||||
Block* r = compile(inc(ps[0]),inc(ps[1]),inc(ps[2]));
|
Block* r = compile(inc(xp[0]),inc(xp[1]),inc(xp[2]));
|
||||||
dec(b);
|
dec(x);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,7 @@ B val_c2(B d, B w, B x) { return c2(c(Md2D,d)->g, w,x); }
|
|||||||
|
|
||||||
|
|
||||||
#ifdef CATCH_ERRORS
|
#ifdef CATCH_ERRORS
|
||||||
B fillBy_c1(B d, B x) {
|
B fillBy_c1(B d, B x) {
|
||||||
B xf=getFill(inc(x));
|
B xf=getFill(inc(x));
|
||||||
B r = c1(c(Md2D,d)->f, x);
|
B r = c1(c(Md2D,d)->f, x);
|
||||||
if(!isArr(r) || noFill(xf)) { dec(xf); return r; }
|
if(!isArr(r) || noFill(xf)) { dec(xf); return r; }
|
||||||
|
|||||||
@ -328,7 +328,7 @@ B select_c2(B t, B w, B x) {
|
|||||||
return withFill(r.b,xf);
|
return withFill(r.b,xf);
|
||||||
}
|
}
|
||||||
base:
|
base:
|
||||||
return c2(rt_select, w, x);
|
return c2(rt_select, w, x);
|
||||||
}
|
}
|
||||||
|
|
||||||
i64 isum(B x) { // doesn't consume; assumes is array; may error
|
i64 isum(B x) { // doesn't consume; assumes is array; may error
|
||||||
|
|||||||
2
src/vm.c
2
src/vm.c
@ -38,7 +38,7 @@ enum {
|
|||||||
|
|
||||||
#define FOR_BC(F) F(PUSH) F(VARO) F(VARM) F(ARRO) F(ARRM) F(FN1C) F(FN2C) F(OP1D) F(OP2D) F(TR2D) \
|
#define FOR_BC(F) F(PUSH) F(VARO) F(VARM) F(ARRO) F(ARRM) F(FN1C) F(FN2C) F(OP1D) F(OP2D) F(TR2D) \
|
||||||
F(TR3D) F(SETN) F(SETU) F(SETM) F(POPS) F(DFND) F(FN1O) F(FN2O) F(CHKV) F(TR3O) \
|
F(TR3D) F(SETN) F(SETU) F(SETM) F(POPS) F(DFND) F(FN1O) F(FN2O) F(CHKV) F(TR3O) \
|
||||||
F(OP2H) F(LOCO) F(LOCM) F(VFYM) F(SETH) F(RETN) F(FLDO) F(FLDM) F(NSPM) F(RETD) F(SYSV) F(LOCU)
|
F(OP2H) F(LOCO) F(LOCM) F(VFYM) F(SETH) F(RETN) F(FLDO) F(FLDM) F(NSPM) F(RETD) F(SYSV) F(LOCU)
|
||||||
|
|
||||||
i32* nextBC(i32* p) {
|
i32* nextBC(i32* p) {
|
||||||
switch(*p) {
|
switch(*p) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user