summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2020-09-18 13:45:25 +0200
committerTyge Løvset <[email protected]>2020-09-18 13:45:25 +0200
commit404f7ea40aa7f3a6d6c3713a6e517a51f19558b7 (patch)
treeaed7d7728c950461c72c03873e92ac0db163e544
parent4526ee4c4ad675fbcc79934cfdee2ad15ee5139e (diff)
downloadSTC-modified-404f7ea40aa7f3a6d6c3713a6e517a51f19558b7.tar.gz
STC-modified-404f7ea40aa7f3a6d6c3713a6e517a51f19558b7.zip
Minor, using a few c_forrange ().
-rw-r--r--examples/prime.c10
-rw-r--r--examples/random.c10
-rw-r--r--examples/rngtest.c13
-rw-r--r--examples/stack.c4
-rw-r--r--stc/cdefs.h4
5 files changed, 21 insertions, 20 deletions
diff --git a/examples/prime.c b/examples/prime.c
index e49d2f20..95e1fd46 100644
--- a/examples/prime.c
+++ b/examples/prime.c
@@ -7,10 +7,10 @@ static inline cbitset_t sieveOfEratosthenes(size_t n)
cbitset_reset(&pbits, 0);
cbitset_reset(&pbits, 1);
- for (size_t i = 2; i <= n; ++i) {
+ c_forrange (i, size_t, 2, n+1) {
// If pbits[i] is not changed, then it is a prime
if (cbitset_test(pbits, i) && i*i <= n) {
- for (size_t j = i*i; j <= n; j += i) {
+ c_forrange (j, size_t, i*i, n+1, i) {
cbitset_reset(&pbits, j);
}
}
@@ -30,8 +30,10 @@ int main(void)
size_t np = cbitset_count(primes);
printf("number of primes: %zu\n", np);
- for (uint32_t i = 2; i <= 1000; ++i)
- if (cbitset_test(primes, i)) printf("%u ", i);
+ printf("2 ");
+ c_forrange (i, int, 3, 1001, 2) {
+ if (cbitset_test(primes, i)) printf("%d ", i);
+ }
puts("");
cbitset_del(&primes);
} \ No newline at end of file
diff --git a/examples/random.c b/examples/random.c
index df10acdc..44465ce7 100644
--- a/examples/random.c
+++ b/examples/random.c
@@ -18,7 +18,7 @@ int main()
printf("32 uniform: %u\n", dist0.range);
double fsum = 0;
before = clock();
- for (size_t i = 0; i < N; ++i) {
+ c_forrange (i, size_t, N) {
fsum += (double) crand_uniform_i32(&pcg, &dist0) / dist0.range;
}
difference = clock() - before;
@@ -29,7 +29,7 @@ int main()
puts("32 unbiased");
fsum = 0;
before = clock();
- for (size_t i = 0; i < N; ++i) {
+ c_forrange (i, size_t, N) {
fsum += (double) crand_unbiased_i32(&pcg, &dist0) / dist0.range;
}
difference = clock() - before;
@@ -40,7 +40,7 @@ int main()
crand_uniform_i64_t dist1 = crand_uniform_i64_init(0, N);
sum = 0;
before = clock();
- for (size_t i = 0; i < N; ++i) {
+ c_forrange (i, size_t, N) {
sum += crand_uniform_i64(&stc, &dist1);
}
difference = clock() - before;
@@ -52,14 +52,14 @@ int main()
size_t N2 = 10000000;
int hist[R] = {0};
sum = 0;
- for (size_t i = 0; i < N2; ++i) {
+ c_forrange (i, size_t, N2) {
int n = (int) (crand_normal_f64(&stc, &dist2) + 0.5);
sum += n;
if (n >= 0 && n < R) ++hist[n];
}
cstr_t bar = cstr_INIT;
- for (int i=0; i < R; ++i) {
+ c_forrange (i, int, R) {
cstr_take(&bar, cstr_with_size(hist[i] * 25ull * R / N2, '*'));
printf("%2d %s\n", i, bar.str);
}
diff --git a/examples/rngtest.c b/examples/rngtest.c
index dbe272c0..16360eac 100644
--- a/examples/rngtest.c
+++ b/examples/rngtest.c
@@ -17,7 +17,7 @@ int main(void)
crand_uniform_i64_t idist = crand_uniform_i64_init(10, 20);
crand_uniform_f64_t fdist = crand_uniform_f64_init(10, 20);
- for (int i=0; i<30; ++i) printf("%02zd ", crand_uniform_i64(&stc, &idist));
+ c_forrange (i, int, 30) printf("%02zd ", crand_uniform_i64(&stc, &idist));
puts("");
crand_rng32_t pcg = crand_rng32_init(time(NULL));
@@ -26,7 +26,7 @@ int main(void)
before = clock(); \
v = 0;
- for (size_t i=0; i<NN; i++) {
+ c_forrange (i, size_t, NN) {
//v += crand_i32(&pcg);
v += crand_uniform_i32(&pcg, &i32dist);
}
@@ -35,21 +35,20 @@ int main(void)
before = clock(); \
v = 0;
- for (size_t i=0; i<NN; i++) {
+ c_forrange (i, size_t, NN) {
//v += crand_i64(&stc) & 0xffffffff;
v += crand_uniform_i64(&stc, &idist);
}
difference = clock() - before;
printf("stc64: %.02f, %zu\n", (float) difference / CLOCKS_PER_SEC, v);
-
- for (int i=0; i<8; ++i) printf("%d ", crand_uniform_i32(&pcg, &i32dist));
+ c_forrange (i, int, 8) printf("%d ", crand_uniform_i32(&pcg, &i32dist));
puts("");
- for (int i=0; i<8; ++i) printf("%f ", crand_uniform_f32(&pcg, &f32dist));
+ c_forrange (i, int, 8) printf("%f ", crand_uniform_f32(&pcg, &f32dist));
puts("");
- for (int i=0; i<8; ++i) printf("%f ", crand_uniform_f64(&stc, &fdist));
+ c_forrange (i, int, 8) printf("%f ", crand_uniform_f64(&stc, &fdist));
puts("");
} \ No newline at end of file
diff --git a/examples/stack.c b/examples/stack.c
index e514808d..a911e4a2 100644
--- a/examples/stack.c
+++ b/examples/stack.c
@@ -12,10 +12,10 @@ int main() {
cstack_i stack = cstack_i_init();
cstack_c chars = cstack_c_init();
- for (int i=0; i<100; ++i)
+ c_forrange (i, int, 100)
cstack_i_push(&stack, i*i);
- for (int i=0; i<90; ++i)
+ c_forrange (i, int, 90)
cstack_i_pop(&stack);
c_foreach (i, cstack_i, stack)
diff --git a/stc/cdefs.h b/stc/cdefs.h
index 7ee1962b..571dafd7 100644
--- a/stc/cdefs.h
+++ b/stc/cdefs.h
@@ -78,7 +78,7 @@
#define c_default_less(x, y) (*(x) < *(y))
#define c_less_compare(less, x, y) (less(x, y) ? -1 : less(y, x))
#define c_default_compare(x, y) c_less_compare(c_default_less, x, y)
-#define c_default_del(ptr) ((void) (ptr))
+#define c_default_del(ptr) ((void) (ptr))
#define c_foreach(...) c_MACRO_OVERLOAD(c_foreach, __VA_ARGS__)
#define c_foreach_3(it, ctype, cnt) \
@@ -90,7 +90,7 @@
#define c_forrange_3(i, type, stop) for (type i=0, i##_end_=stop; i < i##_end_; ++i)
#define c_forrange_4(i, type, start, stop) for (type i=start, i##_end_=stop; i < i##_end_; ++i)
#define c_forrange_5(i, type, start, stop, step) \
- for (type i=start, i##_inc_=step, i##_end_=(stop) - (i##_inc_ > 0); (i <= i##_end_) == (0 < i##_inc_); i += i##_inc_)
+ for (type i=start, i##_inc_=step, i##_end_=(stop) - (0 < i##_inc_); (i <= i##_end_) == (0 < i##_inc_); i += i##_inc_)
#define c_push_items(self, ctype, ...) do { \
const ctype##_input_t __arr[] = __VA_ARGS__; \