From a3b2240a4c9b080c5f8aae946ebe18ab06f269dd Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Wed, 16 Sep 2020 20:24:14 +0200 Subject: Minor. --- examples/list.c | 26 ++++++++++++++++++-------- stc/clist.h | 5 +++-- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/examples/list.c b/examples/list.c index 4a131fac..9c393bcc 100644 --- a/examples/list.c +++ b/examples/list.c @@ -5,20 +5,30 @@ typedef_clist(fx, double); int main() { - int k, n = 100000; + int k; + const int n = 2000000; + clist_fx list = clist_ini; - crand_rng64_t eng = crand_rng64_init(time(NULL)); - crand_uniform_f64_t dist = crand_uniform_f64_init(0.0f, n); + crand_rng64_t eng = crand_rng64_init(1234); + crand_uniform_f64_t dist = crand_uniform_f64_init(100.0f, n); + int m = 0; + for (int i = 0; i < n; ++i) + clist_fx_push_back(&list, crand_uniform_f64(&eng, &dist)), ++m; + double sum = 0.0; + printf("sumarize %d:\n", m); + c_foreach (i, clist_fx, list) + sum += *i.get; + printf("sum %f\n\n", sum); - for (int i = 0; i < 100000; ++i) - clist_fx_push_back(&list, crand_uniform_f64(&eng, &dist)); - k = 0; c_foreach (i, clist_fx, list) + k = 0; + c_foreach (i, clist_fx, list) if (++k <= 10) printf("%8d: %10f\n", k, *i.get); else break; - + puts("sort"); clist_fx_sort(&list); // mergesort O(n*log n) puts("sorted"); - k = 0; c_foreach (i, clist_fx, list) + k = 0; + c_foreach (i, clist_fx, list) if (++k <= 10) printf("%8d: %10f\n", k, *i.get); else break; puts(""); diff --git a/stc/clist.h b/stc/clist.h index 4eac50f1..f2313642 100644 --- a/stc/clist.h +++ b/stc/clist.h @@ -246,8 +246,9 @@ STC_API size_t _clist_size(const clist_void* self); } \ STC_API clist_##X##_iter_t \ clist_##X##_erase_after(clist_##X* self, clist_##X##_iter_t pos) { \ - _c_clist_erase_after(self, X, _clist_node(X, pos.get), valueDestroy); \ - clist_##X##_next(&pos); return pos; \ + clist_##X##_node_t* node = _clist_node(X, pos.get); \ + _c_clist_erase_after(self, X, node, valueDestroy); \ + clist_##X##_next(&pos); return pos;\ } \ \ STC_API clist_##X##_iter_t \ -- cgit v1.2.3