sketch_buglog_test.nx source
↩ module page · 76 lines · 3305 B
1// sketch_buglog_test.nx -- ID-based G + L referencing docs/{genealogy,lineage}.md.
2
3import "syscalls.nx"
4import "sketch_buglog.nx"
5import "sketch_types.nx"
6
7func main() -> i64 {
8 let e: *BugLog = nx_buglog_alloc()
9 if e == (0 as *BugLog) { return __syscall(93, 5, 0, 0, 0, 0, 0) }
10
11 nx_buglog_set_who_z(e, "sketch_hll")
12 nx_buglog_set_what_z(e, "n=1000 lg_k=7, 100-seed mean error vs Apache DataSketches")
13 nx_buglog_set_when_z(e, "2026-05-12T-bb8d724")
14 nx_buglog_set_axis(e, NX_BUG_AXIS_ACCURACY)
15 nx_buglog_set_why_z(e, "alpha_m_sq_q64 table values were 877-995x too large")
16 nx_buglog_set_how_z(e, "compared estimate vs DS Java+Python; fix at commit bb8d724")
17
18 nx_buglog_add_genealogy_z(e, "aristotle")
19 nx_buglog_add_genealogy_z(e, "euclid")
20 nx_buglog_add_genealogy_z(e, "cantor")
21 nx_buglog_add_genealogy_z(e, "peano")
22 nx_buglog_add_genealogy_z(e, "zermelo")
23 nx_buglog_add_genealogy_z(e, "fraenkel")
24 nx_buglog_add_genealogy_z(e, "vonneumann")
25 nx_buglog_add_genealogy_z(e, "kolmogorov")
26 nx_buglog_add_genealogy_z(e, "shannon")
27 nx_buglog_add_genealogy_z(e, "carter_wegman")
28 nx_buglog_add_genealogy_z(e, "flajolet_martin")
29 nx_buglog_add_genealogy_z(e, "durand_flajolet")
30 nx_buglog_add_genealogy_z(e, "flajolet_2007")
31 nx_buglog_add_genealogy_z(e, "heule_2013")
32 nx_buglog_add_genealogy_z(e, "datasketches")
33 nx_buglog_add_genealogy_z(e, "ours")
34
35 nx_buglog_add_lineage_z(e, "identity")
36 nx_buglog_add_lineage_z(e, "noncontradiction")
37 nx_buglog_add_lineage_z(e, "membership")
38 nx_buglog_add_lineage_z(e, "empty_set")
39 nx_buglog_add_lineage_z(e, "pairing")
40 nx_buglog_add_lineage_z(e, "union_axiom")
41 nx_buglog_add_lineage_z(e, "infinity_axiom")
42 nx_buglog_add_lineage_z(e, "ordinal")
43 nx_buglog_add_lineage_z(e, "successor")
44 nx_buglog_add_lineage_z(e, "addition")
45 nx_buglog_add_lineage_z(e, "one_plus_one")
46 nx_buglog_add_lineage_z(e, "cardinality")
47 nx_buglog_add_lineage_z(e, "probability")
48 nx_buglog_add_lineage_z(e, "expectation")
49 nx_buglog_add_lineage_z(e, "geometric_dist")
50 nx_buglog_add_lineage_z(e, "harmonic_mean")
51 nx_buglog_add_lineage_z(e, "uniform_hash")
52 nx_buglog_add_lineage_z(e, "k_wise_indep")
53 nx_buglog_add_lineage_z(e, "murmur3_32")
54 nx_buglog_add_lineage_z(e, "leading_zero_rank")
55 nx_buglog_add_lineage_z(e, "fm85_max")
56 nx_buglog_add_lineage_z(e, "stochastic_avg")
57 nx_buglog_add_lineage_z(e, "loglog_2003")
58 nx_buglog_add_lineage_z(e, "hyperloglog_2007")
59 nx_buglog_add_lineage_z(e, "alpha_m_correction")
60 nx_buglog_add_lineage_z(e, "lc_fallback")
61 nx_buglog_add_lineage_z(e, "heule_bias_table")
62
63 nx_buglog_set_performance_z(e,
64 "{\"workload\":\"n=1000 distinct keys x 100 workloads\",\"our_mean_err\":57,\"ds_mean_err\":53,\"our_max_err\":198,\"ds_max_err\":175,\"our_memory_bytes\":152,\"ds_memory_bytes\":168,\"verdict_accuracy\":\"LOSES_BY_7_PCT\",\"verdict_memory\":\"BEATS_BY_10_PCT\"}")
65
66 nx_buglog_emit(e)
67
68 if nx_buglog_n_genealogy(e) != 16 {
69 return __syscall(93, 10, 0, 0, 0, 0, 0)
70 }
71 if nx_buglog_n_lineage(e) != 27 {
72 return __syscall(93, 11, 0, 0, 0, 0, 0)
73 }
74
75 return 0
76}