[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-physics / third-party / chipmunk2d / src / prime.h
1 /* Copyright (c) 2013 Scott Lembcke and Howling Moon Software
2  * 
3  * Permission is hereby granted, free of charge, to any person obtaining a copy
4  * of this software and associated documentation files (the "Software"), to deal
5  * in the Software without restriction, including without limitation the rights
6  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7  * copies of the Software, and to permit persons to whom the Software is
8  * furnished to do so, subject to the following conditions:
9  * 
10  * The above copyright notice and this permission notice shall be included in
11  * all copies or substantial portions of the Software.
12  * 
13  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19  * SOFTWARE.
20  */
21
22 // Used for resizing hash tables.
23 // Values approximately double.
24 // http://planetmath.org/encyclopedia/GoodHashTablePrimes.html
25 static int primes[] = {
26         5,
27         13,
28         23,
29         47,
30         97,
31         193,
32         389,
33         769,
34         1543,
35         3079,
36         6151,
37         12289,
38         24593,
39         49157,
40         98317,
41         196613,
42         393241,
43         786433,
44         1572869,
45         3145739,
46         6291469,
47         12582917,
48         25165843,
49         50331653,
50         100663319,
51         201326611,
52         402653189,
53         805306457,
54         1610612741,
55         0,
56 };
57
58 static inline int
59 next_prime(int n)
60 {
61         int i = 0;
62         while(n > primes[i]){
63                 i++;
64                 cpAssertHard(primes[i], "Tried to resize a hash table to a size greater than 1610612741 O_o"); // realistically this should never happen
65         }
66         
67         return primes[i];
68 }