bf_probe.nx source
↩ module page · 38 lines · 1263 B
1// GENERATED by nx_bugforge -- do not hand-edit
2import "nx_syscalls.nx"
3func cw(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 }
4func cn(v: i64) -> i64 {
5 var m: i64 = v
6 if m < 0 { cw("-" as *u8); m = 0 - m }
7 let t: *u8 = sys_mmap(24)
8 var k: i64 = 0
9 if m == 0 { t[0] = 48 as u8; k = 1 }
10 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 }
11 let o: *u8 = sys_mmap(24)
12 var i: i64 = 0
13 while i < k { o[i] = t[k - 1 - i]; i = i + 1 }
14 sys_write(1, o, k)
15 return 0
16}
17func bf_orig(a: i64) -> i64 {
18 if a > 8 { return a - 9 + (a - a) + a }
19 return a - (7 + a) * a * a * a
20}
21func bf_mut(a: i64) -> i64 {
22 if a > 8 { return a - 9 + (a - a) + a }
23 return a - (7 + a) + a * a * a
24}
25func main() -> i64 {
26 var dv: i64 = 0
27 var ag: i64 = 0
28 var a: i64 = 0 - 6
29 while a <= 6 {
30 let x: i64 = bf_orig(a)
31 let y: i64 = bf_mut(a)
32 if x != y { dv = dv + 1; if dv <= 6 { cw("BFCASE " as *u8); cn(a); cw(" want=" as *u8); cn(x); cw(" got=" as *u8); cn(y); cw("\n" as *u8); } }
33 if x == y { ag = ag + 1; if ag <= 6 { cw("BFPASS " as *u8); cn(a); cw(" val=" as *u8); cn(x); cw("\n" as *u8); } }
34 a = a + 1
35 }
36 cw("BFDIV n=" as *u8); cn(dv); cw(" agree=" as *u8); cn(ag); cw("\n" as *u8);
37 return 0
38}