diff --git a/src/arith.c b/src/arith.c index b61a8ff3..afab9d62 100644 --- a/src/arith.c +++ b/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) +f64 pfmod(f64 a, f64 b) { + f64 r = fmod(a, b); + if (a<0 != b<0 && r) r+= b; + return r; +} + 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 (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(and, *, {}) ffn(div, /, {}) -ffnx(pow, pow(w.f,x.f), {}) -ffnx(floor, fmin(w.f, x.f), {}) -ffnx(ceil, fmax(w.f, x.f), {}) -f64 pfmod(f64 a, f64 b) { - f64 r = fmod(a, b); - if (a<0 != b<0 && r) r+= b; - return r; -} -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, {}) +ffnx(pow , pow(w.f, x.f), {}) +ffnx(floor, fmin(w.f, x.f), {}) +ffnx(ceil , fmax(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) \ ffn(N, X, { \ diff --git a/src/c32arr.c b/src/c32arr.c index e793111d..70c65b7c 100644 --- a/src/c32arr.c +++ b/src/c32arr.c @@ -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; } B m_str8(usz sz, char* s) { - B r = m_c32arrv(sz); u32* p = c32arr_ptr(r); - for (u64 i = 0; i < sz; i++) p[i] = s[i]; + B r = m_c32arrv(sz); u32* rp = c32arr_ptr(r); + for (u64 i = 0; i < sz; i++) rp[i] = s[i]; return r; } NOINLINE B m_str32(u32* s) { u64 sz = 0; while(s[sz]) sz++; - B r = m_c32arrv(sz); u32* p = c32arr_ptr(r); - for (u64 i = 0; i < sz; i++) p[i] = s[i]; + B r = m_c32arrv(sz); u32* rp = c32arr_ptr(r); + for (u64 i = 0; i < sz; i++) rp[i] = s[i]; return r; } diff --git a/src/fillarr.c b/src/fillarr.c index 475e3a57..25b82bf8 100644 --- a/src/fillarr.c +++ b/src/fillarr.c @@ -70,7 +70,7 @@ void fillarr_free(B x) { void fillarr_visit(B x) { usz ia = a(x)->ia; B* p = fillarr_ptr(x); 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; } diff --git a/src/harr.c b/src/harr.c index 69ceaf15..ffaec14b 100644 --- a/src/harr.c +++ b/src/harr.c @@ -126,7 +126,7 @@ void harr_free(B x) { } void harr_visit(B 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; } diff --git a/src/main.c b/src/main.c index 5fc033ea..b4346d3a 100644 --- a/src/main.c +++ b/src/main.c @@ -46,10 +46,10 @@ void pr(char* a, B b) { fflush(stdout); } -Block* ca3(B b) { - B* ps = harr_ptr(b); - Block* r = compile(inc(ps[0]),inc(ps[1]),inc(ps[2])); - dec(b); +Block* ca3(B x) { + B* xp = harr_ptr(x); + Block* r = compile(inc(xp[0]),inc(xp[1]),inc(xp[2])); + dec(x); return r; } diff --git a/src/md2.c b/src/md2.c index c95ade08..7da14daa 100644 --- a/src/md2.c +++ b/src/md2.c @@ -7,7 +7,7 @@ B val_c2(B d, B w, B x) { return c2(c(Md2D,d)->g, w,x); } #ifdef CATCH_ERRORS -B fillBy_c1(B d, B x) { +B fillBy_c1(B d, B x) { B xf=getFill(inc(x)); B r = c1(c(Md2D,d)->f, x); if(!isArr(r) || noFill(xf)) { dec(xf); return r; } diff --git a/src/sfns.c b/src/sfns.c index 37afd136..20ccae35 100644 --- a/src/sfns.c +++ b/src/sfns.c @@ -328,7 +328,7 @@ B select_c2(B t, B w, B x) { return withFill(r.b,xf); } 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 diff --git a/src/vm.c b/src/vm.c index a34a47b2..6da882d6 100644 --- a/src/vm.c +++ b/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) \ 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) { switch(*p) {