random cleanup

This commit is contained in:
dzaima 2021-04-28 12:32:59 +03:00
parent f0a602ccde
commit a3e78e651e
8 changed files with 26 additions and 25 deletions

View File

@ -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) {
f64 r = fmod(a, b);
if (a<0 != b<0 && r) r+= b;
return r;
}
ffnx(stile, pfmod(x.f, w.f), {}) ffnx(stile, pfmod(x.f, w.f), {})
ffnx(log, log(x.f)/log(w.f), {}) ffnx(log , log(x.f)/log(w.f), {})
ffnx(or, (w.f+x.f)-(w.f*x.f), {}) ffnx(or , (w.f+x.f)-(w.f*x.f), {})
ffnx(not, 1+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, { \

View File

@ -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;
} }

View File

@ -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;
} }