annotate src/lib/primes.c @ 22664:fea53c2725c0

director: Fix director_max_parallel_moves/kicks type Should be uint, not time.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 09 Nov 2017 12:24:16 +0200
parents 2e2563132d5f
children cb108f786fb4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21390
2e2563132d5f Updated copyright notices to include the year 2017.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents: 19552
diff changeset
1 /* Copyright (c) 2013-2017 Dovecot authors, see the included COPYING file */
15188
d66421812d2a Added/updated some copyright comments.
Timo Sirainen <tss@iki.fi>
parents: 14669
diff changeset
2
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3 #include "lib.h"
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
4 #include "primes.h"
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5
4340
31e87bda1362 Minor coding style changes. Removed GLib copyrights as the only thing left
Timo Sirainen <tss@iki.fi>
parents: 44
diff changeset
6 static const unsigned int primes[] = {
8142
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
7 #define PRIME_SKIP_COUNT 3
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
8 17,
4340
31e87bda1362 Minor coding style changes. Removed GLib copyrights as the only thing left
Timo Sirainen <tss@iki.fi>
parents: 44
diff changeset
9 37,
8142
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
10 67,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
11 131,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
12 257, /* next from 2^8 */
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
13 521,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
14 1031,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
15 2053,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
16 4099,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
17 8209,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
18 16411,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
19 32771,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
20 65537, /* next from 2^16 */
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
21 131101,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
22 262147,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
23 524309,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
24 1048583,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
25 2097169,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
26 4194319,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
27 8388617,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
28 16777259, /* next from 2^24 */
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
29 33554467,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
30 67108879,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
31 134217757,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
32 268435459,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
33 536870923,
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
34 1073741827,
9203
a035febf39d4 Compiler warning fix.
Timo Sirainen <tss@iki.fi>
parents: 8142
diff changeset
35 2147483659U,
a035febf39d4 Compiler warning fix.
Timo Sirainen <tss@iki.fi>
parents: 8142
diff changeset
36 4294967291U /* previous from 2^32 */
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
37 };
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
38
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
39 unsigned int primes_closest(unsigned int num)
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
40 {
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
41 unsigned int i;
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
42
8142
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
43 for (i = 31; i > PRIME_SKIP_COUNT; i--) {
14669
6411d91d0755 Fixed signed integer shift overflows.
Timo Sirainen <tss@iki.fi>
parents: 9203
diff changeset
44 if ((num & (1U << i)) != 0)
8142
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
45 return primes[i - PRIME_SKIP_COUNT];
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
46 }
c55a66afddea primes_closest(): Use exponentially growing primes.
Timo Sirainen <tss@iki.fi>
parents: 6494
diff changeset
47 return primes[0];
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
48 }