build_assert: relicense to public domain.
[ccan] / ccan / isaac / test / run64.c
1 #include <ccan/isaac/isaac64.h>
2 #include <ccan/isaac/isaac64.c>
3 #include <ccan/tap/tap.h>
4 #include <stddef.h>
5
6 static const uint64_t STATEVEC64[ISAAC64_SZ<<1]={
7   0x12A8F216AF9418C2ULL, 0xD4490AD526F14431ULL,
8   0xB49C3B3995091A36ULL, 0x5B45E522E4B1B4EFULL,
9   0xA1E9300CD8520548ULL, 0x49787FEF17AF9924ULL,
10   0x03219A39EE587A30ULL, 0xEBE9EA2ADF4321C7ULL,
11   0x804456AF10F5FB53ULL, 0xD74BBE77E6116AC7ULL,
12   0x7C0828DD624EC390ULL, 0x14A195640116F336ULL,
13   0x2EAB8CA63CE802D7ULL, 0xC6E57A78FBD986E0ULL,
14   0x58EFC10B06A2068DULL, 0xABEEDDB2DDE06FF1ULL,
15   0x0B090A7560A968E3ULL, 0x2CF9C8CA052F6E9FULL,
16   0x116D0016CB948F09ULL, 0xA59E0BD101731A28ULL,
17   0x63767572AE3D6174ULL, 0xAB4F6451CC1D45ECULL,
18   0xC2A1E7B5B459AEB5ULL, 0x2472F6207C2D0484ULL,
19   0xE699ED85B0DFB40DULL, 0xD4347F66EC8941C3ULL,
20   0xF4D14597E660F855ULL, 0x8B889D624D44885DULL,
21   0x258E5A80C7204C4BULL, 0xAF0C317D32ADAA8AULL,
22   0x9C4CD6257C5A3603ULL, 0xEB3593803173E0CEULL,
23   0x36F60E2BA4FA6800ULL, 0x38B6525C21A42B0EULL,
24   0xF4F5D05C10CAB243ULL, 0xCF3F4688801EB9AAULL,
25   0x1DDC0325259B27DEULL, 0xB9571FA04DC089C8ULL,
26   0xD7504DFA8816EDBBULL, 0x1FE2CCA76517DB90ULL,
27   0x261E4E4C0A333A9DULL, 0x219B97E26FFC81BDULL,
28   0x66B4835D9EAFEA22ULL, 0x4CC317FB9CDDD023ULL,
29   0x50B704CAB602C329ULL, 0xEDB454E7BADC0805ULL,
30   0x9E17E49642A3E4C1ULL, 0x66C1A2A1A60CD889ULL,
31   0x7983EED3740847D5ULL, 0x298AF231C85BAFABULL,
32   0x2680B122BAA28D97ULL, 0x734DE8181F6EC39AULL,
33   0x53898E4C3910DA55ULL, 0x1761F93A44D5AEFEULL,
34   0xE4DBF0634473F5D2ULL, 0x4ED0FE7E9DC91335ULL,
35   0xD18D8549D140CAEAULL, 0x1CFC8BED0D681639ULL,
36   0xCA1E3785A9E724E5ULL, 0xB67C1FA481680AF8ULL,
37   0xDFEA21EA9E7557E3ULL, 0xD6B6D0ECC617C699ULL,
38   0xFA7E393983325753ULL, 0xA09E8C8C35AB96DEULL,
39   0x8FE88B57305E2AB6ULL, 0x89039D79D6FC5C5CULL,
40   0x9BFB227EBDF4C5CEULL, 0x7F7CC39420A3A545ULL,
41   0x3F6C6AF859D80055ULL, 0xC8763C5B08D1908CULL,
42   0x469356C504EC9F9DULL, 0x26E6DB8FFDF5ADFEULL,
43   0x3A938FEE32D29981ULL, 0x2C5E9DEB57EF4743ULL,
44   0x1E99B96E70A9BE8BULL, 0x764DBEAE7FA4F3A6ULL,
45   0xAAC40A2703D9BEA0ULL, 0x1A8C1E992B941148ULL,
46   0x73AA8A564FB7AC9EULL, 0x604D51B25FBF70E2ULL,
47   0xDD69A0D8AB3B546DULL, 0x65CA5B96B7552210ULL,
48   0x2FD7E4B9E72CD38CULL, 0x51D2B1AB2DDFB636ULL,
49   0x9D1D84FCCE371425ULL, 0xA44CFE79AE538BBEULL,
50   0xDE68A2355B93CAE6ULL, 0x9FC10D0F989993E0ULL,
51   0x94EBC8ABCFB56DAEULL, 0xD7A023A73260B45CULL,
52   0x72C8834A5957B511ULL, 0x8F8419A348F296BFULL,
53   0x1E152328F3318DEAULL, 0x4838D65F6EF6748FULL,
54   0xD6BF7BAEE43CAC40ULL, 0x13328503DF48229FULL,
55   0x7440FB816508C4FEULL, 0x9D266D6A1CC0542CULL,
56   0x4DDA48153C94938AULL, 0x74C04BF1790C0EFEULL,
57   0xE1925C71285279F5ULL, 0x8A8E849EB32781A5ULL,
58   0x073973751F12DD5EULL, 0xA319CE15B0B4DB31ULL,
59   0x6DD856D94D259236ULL, 0x67378D8ECCEF96CBULL,
60   0x9FC477DE4ED681DAULL, 0xF3B8B6675A6507FFULL,
61   0xC3A9DC228CAAC9E9ULL, 0xC37B45B3F8D6F2BAULL,
62   0xB559EB1D04E5E932ULL, 0x1B0CAB936E65C744ULL,
63   0xAF08DA9177DDA93DULL, 0xAC12FB171817EEE7ULL,
64   0x1FFF7AC80904BF45ULL, 0xA9119B60369FFEBDULL,
65   0xBFCED1B0048EAC50ULL, 0xB67B7896167B4C84ULL,
66   0x9B3CDB65F82CA382ULL, 0xDBC27AB5447822BFULL,
67   0x10DCD78E3851A492ULL, 0xB438C2B67F98E5E9ULL,
68   0x43954B3252DC25E5ULL, 0xAB9090168DD05F34ULL,
69   0xCE68341F79893389ULL, 0x36833336D068F707ULL,
70   0xDCDD7D20903D0C25ULL, 0xDA3A361B1C5157B1ULL,
71   0x7F9D1A2E1EBE1327ULL, 0x5D0A12F27AD310D1ULL,
72   0x3BC36E078F7515D7ULL, 0x4DA8979A0041E8A9ULL,
73   0x950113646D1D6E03ULL, 0x7B4A38E32537DF62ULL,
74   0x8A1B083821F40CB4ULL, 0x3D5774A11D31AB39ULL,
75   0x7A76956C3EAFB413ULL, 0x7F5126DBBA5E0CA7ULL,
76   0x12153635B2C0CF57ULL, 0x7B3F0195FC6F290FULL,
77   0x5544F7D774B14AEFULL, 0x56C074A581EA17FEULL,
78   0xE7F28ECD2D49EECDULL, 0xE479EE5B9930578CULL,
79   0x9FF38FED72E9052FULL, 0x9F65789A6509A440ULL,
80   0x0981DCD296A8736DULL, 0x5873888850659AE7ULL,
81   0xC678B6D860284A1CULL, 0x63E22C147B9C3403ULL,
82   0x92FAE24291F2B3F1ULL, 0x829626E3892D95D7ULL,
83   0xCFFE1939438E9B24ULL, 0x79999CDFF70902CBULL,
84   0x8547EDDFB81CCB94ULL, 0x7B77497B32503B12ULL,
85   0x97FCAACBF030BC24ULL, 0x6CED1983376FA72BULL,
86   0x7E75D99D94A70F4DULL, 0xD2733C4335C6A72FULL,
87   0xDBC0D2B6AB90A559ULL, 0x94628D38D0C20584ULL,
88   0x64972D68DEE33360ULL, 0xB9C11D5B1E43A07EULL,
89   0x2DE0966DAF2F8B1CULL, 0x2E18BC1AD9704A68ULL,
90   0xD4DBA84729AF48ADULL, 0xB7A0B174CFF6F36EULL,
91   0xE94C39A54A98307FULL, 0xAA70B5B4F89695A2ULL,
92   0x3BDBB92C43B17F26ULL, 0xCCCB7005C6B9C28DULL,
93   0x18A6A990C8B35EBDULL, 0xFC7C95D827357AFAULL,
94   0x1FCA8A92FD719F85ULL, 0x1DD01AAFCD53486AULL,
95   0x49353FEA39BA63B1ULL, 0xF85B2B4FBCDE44B7ULL,
96   0xBE7444E39328A0ACULL, 0x3E2B8BCBF016D66DULL,
97   0x964E915CD5E2B207ULL, 0x1725CABFCB045B00ULL,
98   0x7FBF21EC8A1F45ECULL, 0x11317BA87905E790ULL,
99   0x2FE4B17170E59750ULL, 0xE8D9ECBE2CF3D73FULL,
100   0xB57D2E985E1419C7ULL, 0x0572B974F03CE0BBULL,
101   0xA8D7E4DAB780A08DULL, 0x4715ED43E8A45C0AULL,
102   0xC330DE426430F69DULL, 0x23B70EDB1955C4BFULL,
103   0x098954D51FFF6580ULL, 0x8107FCCF064FCF56ULL,
104   0x852F54934DA55CC9ULL, 0x09C7E552BC76492FULL,
105   0xE9F6760E32CD8021ULL, 0xA3BC941D0A5061CBULL,
106   0xBA89142E007503B8ULL, 0xDC842B7E2819E230ULL,
107   0xBBE83F4ECC2BDECBULL, 0xCD454F8F19C5126AULL,
108   0xC62C58F97DD949BFULL, 0x693501D628297551ULL,
109   0xB9AB4CE57F2D34F3ULL, 0x9255ABB50D532280ULL,
110   0xEBFAFA33D7254B59ULL, 0xE9F6082B05542E4EULL,
111   0x35DD37D5871448AFULL, 0xB03031A8B4516E84ULL,
112   0xB3F256D8ACA0B0B9ULL, 0x0FD22063EDC29FCAULL,
113   0xD9A11FBB3D9808E4ULL, 0x3A9BF55BA91F81CAULL,
114   0xC8C93882F9475F5FULL, 0x947AE053EE56E63CULL,
115   0xC7D9F16864A76E94ULL, 0x7BD94E1D8E17DEBCULL,
116   0xD873DB391292ED4FULL, 0x30F5611484119414ULL,
117   0x565C31F7DE89EA27ULL, 0xD0E4366228B03343ULL,
118   0x325928EE6E6F8794ULL, 0x6F423357E7C6A9F9ULL,
119   0x99170A5DC3115544ULL, 0x59B97885E2F2EA28ULL,
120   0xBC4097B116C524D2ULL, 0x7A13F18BBEDC4FF5ULL,
121   0x071582401C38434DULL, 0xB422061193D6F6A7ULL,
122   0xB4B81B3FA97511E2ULL, 0x65D34954DAF3CEBDULL,
123   0xB344C470397BBA52ULL, 0xBAC7A9A18531294BULL,
124   0xECB53939887E8175ULL, 0x565601C0364E3228ULL,
125   0xEF1955914B609F93ULL, 0x16F50EDF91E513AFULL,
126   0x56963B0DCA418FC0ULL, 0xD60F6DCEDC314222ULL,
127   0x364F6FFA464EE52EULL, 0x6C3B8E3E336139D3ULL,
128   0xF943AEE7FEBF21B8ULL, 0x088E049589C432E0ULL,
129   0xD49503536ABCA345ULL, 0x3A6C27934E31188AULL,
130   0x957BAF61700CFF4EULL, 0x37624AE5A48FA6E9ULL,
131   0x501F65EDB3034D07ULL, 0x907F30421D78C5DEULL,
132   0x1A804AADB9CFA741ULL, 0x0CE2A38C344A6EEDULL,
133   0xD363EFF5F0977996ULL, 0x2CD16E2ABD791E33ULL,
134   0x58627E1A149BBA21ULL, 0x7F9B6AF1EBF78BAFULL,
135   0xD20D8C88C8FFE65FULL, 0x917F1DD5F8886C61ULL,
136   0x56986E2EF3ED091BULL, 0x5FA7867CAF35E149ULL,
137   0x81A1549FD6573DA5ULL, 0x96FBF83A12884624ULL,
138   0xE728E8C83C334074ULL, 0xF1BCC3D275AFE51AULL,
139   0x71F1CE2490D20B07ULL, 0xE6C42178C4BBB92EULL,
140   0x0A9C32D5EAE45305ULL, 0x0C335248857FA9E7ULL,
141   0x142DE49FFF7A7C3DULL, 0x64A53DC924FE7AC9ULL,
142   0x9F6A419D382595F4ULL, 0x150F361DAB9DEC26ULL,
143   0xC61BB3A141E50E8CULL, 0x2785338347F2BA08ULL,
144   0x7CA9723FBB2E8988ULL, 0xCE2F8642CA0712DCULL,
145   0x59300222B4561E00ULL, 0xC2B5A03F71471A6FULL,
146   0xD5F9E858292504D5ULL, 0x65FA4F227A2B6D79ULL,
147   0x93CBE0B699C2585DULL, 0x1D95B0A5FCF90BC6ULL,
148   0x17EFEE45B0DEE640ULL, 0x9E4C1269BAA4BF37ULL,
149   0xD79476A84EE20D06ULL, 0x0A56A5F0BFE39272ULL,
150   0x7EBA726D8C94094BULL, 0x5E5637885F29BC2BULL,
151   0xD586BD01C5C217F6ULL, 0x233003B5A6CFE6ADULL,
152   0x24C0E332B70019B0ULL, 0x9DA058C67844F20CULL,
153   0xE4D9429322CD065AULL, 0x1FAB64EA29A2DDF7ULL,
154   0x8AF38731C02BA980ULL, 0x7DC7785B8EFDFC80ULL,
155   0x486289DDCC3D6780ULL, 0x222BBFAE61725606ULL,
156   0x2BC60A63A6F3B3F2ULL, 0x177E00F9FC32F791ULL,
157   0x522E23F3925E319EULL, 0x9C2ED44081CE5FBDULL,
158   0x964781CE734B3C84ULL, 0xF05D129681949A4CULL,
159   0x046E3ECAAF453CE9ULL, 0x962ACEEFA82E1C84ULL,
160   0xF5B4B0B0D2DEEEB4ULL, 0x1AF3DBE25D8F45DAULL,
161   0xF9F4892ED96BD438ULL, 0xC4C118BFE78FEAAEULL,
162   0x07A69AFDCC42261AULL, 0xF8549E1A3AA5E00DULL,
163   0x2102AE466EBB1148ULL, 0xE87FBB46217A360EULL,
164   0x310CB380DB6F7503ULL, 0xB5FDFC5D3132C498ULL,
165   0xDAF8E9829FE96B5FULL, 0xCAC09AFBDDD2CDB4ULL,
166   0xB862225B055B6960ULL, 0x55B6344CF97AAFAEULL,
167   0xFF577222C14F0A3AULL, 0x4E4B705B92903BA4ULL,
168   0x730499AF921549FFULL, 0x13AE978D09FE5557ULL,
169   0xD9E92AA246BF719EULL, 0x7A4C10EC2158C4A6ULL,
170   0x49CAD48CEBF4A71EULL, 0xCF05DAF5AC8D77B0ULL,
171   0xABBDCDD7ED5C0860ULL, 0x9853EAB63B5E0B35ULL,
172   0x352787BAA0D7C22FULL, 0xC7F6AA2DE59AEA61ULL,
173   0x03727073C2E134B1ULL, 0x5A0F544DD2B1FB18ULL,
174   0x74F85198B05A2E7DULL, 0x963EF2C96B33BE31ULL,
175   0x4659D2B743848A2CULL, 0x19EBB029435DCB0FULL,
176   0x4E9D2827355FC492ULL, 0xCCEC0A73B49C9921ULL,
177   0x46C9FEB55D120902ULL, 0x8D2636B81555A786ULL,
178   0x30C05B1BA332F41CULL, 0xF6F7FD1431714200ULL,
179   0x1A4FF12616EEFC89ULL, 0x990A98FD5071D263ULL,
180   0x84547DDC3E203C94ULL, 0x07A3AEC79624C7DAULL,
181   0x8A328A1CEDFE552CULL, 0xD1E649DE1E7F268BULL,
182   0x2D8D5432157064C8ULL, 0x4AE7D6A36EB5DBCBULL,
183   0x57E3306D881EDB4FULL, 0x0A804D18B7097475ULL,
184   0xE74733427B72F0C1ULL, 0x24B33C9D7ED25117ULL,
185   0xE805A1E290CF2456ULL, 0x3B544EBE544C19F9ULL,
186   0x3E666E6F69AE2C15ULL, 0xFB152FE3FF26DA89ULL,
187   0xB49B52E587A1EE60ULL, 0xAC042E70F8B383F2ULL,
188   0x89C350C893AE7DC1ULL, 0xB592BF39B0364963ULL,
189   0x190E714FADA5156EULL, 0xEC8177F83F900978ULL,
190   0x91B534F885818A06ULL, 0x81536D601170FC20ULL,
191   0xD4C718BC4AE8AE5FULL, 0x9EEDECA8E272B933ULL,
192   0x10E8B35AF3EEAB37ULL, 0x0E09B88E1914F7AFULL,
193   0x3FA9DDFB67E2F199ULL, 0xB10BB459132D0A26ULL,
194   0x2C046F22062DC67DULL, 0x5E90277E7CB39E2DULL,
195   0xD6B04D3B7651DD7EULL, 0xE34A1D250E7A8D6BULL,
196   0x53C065C6C8E63528ULL, 0x1BDEA12E35F6A8C9ULL,
197   0x21874B8B4D2DBC4FULL, 0x3A88A0FBBCB05C63ULL,
198   0x43ED7F5A0FAE657DULL, 0x230E343DFBA08D33ULL,
199   0xB5B4071DBFC73A66ULL, 0x8F9887E6078735A1ULL,
200   0x08DE8A1C7797DA9BULL, 0xFCB6BE43A9F2FE9BULL,
201   0x049A7F41061A9E60ULL, 0x9F91508BFFCFC14AULL,
202   0xE3273522064480CAULL, 0xCD04F3FF001A4778ULL,
203   0x6BFA9AAE5EC05779ULL, 0x371F77E76BB8417EULL,
204   0x3550C2321FD6109CULL, 0xFB4A3D794A9A80D2ULL,
205   0xF43C732873F24C13ULL, 0xAA9119FF184CCCF4ULL,
206   0xB69E38A8965C6B65ULL, 0x1F2B1D1F15F6DC9CULL,
207   0x67FEF95D92607890ULL, 0x31865CED6120F37DULL,
208   0x3A6853C7E70757A7ULL, 0x32AB0EDB696703D3ULL,
209   0xEE97F453F06791EDULL, 0x6DC93D9526A50E68ULL,
210   0x78EDEFD694AF1EEDULL, 0x9C1169FA2777B874ULL,
211   0x50065E535A213CF6ULL, 0xDE0C89A556B9AE70ULL,
212   0xD1E0CCD25BB9C169ULL, 0x6B17B224BAD6BF27ULL,
213   0x6B02E63195AD0CF8ULL, 0x455A4B4CFE30E3F5ULL,
214   0x9338E69C052B8E7BULL, 0x5092EF950A16DA0BULL,
215   0x7C45D833AFF07862ULL, 0xA5B1CFDBA0AB4067ULL,
216   0x6AD047C430A12104ULL, 0x6C47BEC883A7DE39ULL,
217   0x944F6DE09134DFB6ULL, 0x9AEBA33AC6ECC6B0ULL,
218   0x52E762596BF68235ULL, 0x22AF003AB672E811ULL,
219   0xB5635C95FF7296E2ULL, 0xED2DF21216235097ULL,
220   0x4A29C6465A314CD1ULL, 0xD83CC2687A19255FULL,
221   0x506C11B9D90E8B1DULL, 0x57277707199B8175ULL,
222   0xCAF21ECD4377B28CULL, 0xC0C0F5A60EF4CDCFULL,
223   0x93B633ABFA3469F8ULL, 0xE846963877671A17ULL,
224   0x59AC2C7873F910A3ULL, 0x660D3257380841EEULL,
225   0xD813F2FAB7F5C5CAULL, 0x4112CF68649A260EULL,
226   0x443F64EC5A371195ULL, 0xB0774D261CC609DBULL,
227   0x720BF5F26F4D2EAAULL, 0x1C2559E30F0946BEULL,
228   0xE328E230E3E2B3FBULL, 0x087E79E5A57D1D13ULL,
229   0x08DD9BDFD96B9F63ULL, 0x64D0E29EEA8838B3ULL,
230   0xDDF957BC36D8B9CAULL, 0x6FFE73E81B637FB3ULL,
231   0x1A4E4822EB4D7A59ULL, 0x5D94337FBFAF7F5BULL,
232   0xD30C088BA61EA5EFULL, 0x9D765E419FB69F6DULL,
233   0x9E21F4F903B33FD9ULL, 0xB4D8F77BC3E56167ULL,
234   0x733EA705FAE4FA77ULL, 0xA4EC0132764CA04BULL,
235   0x7976033A39F7D952ULL, 0x106F72FE81E2C590ULL,
236   0x8C90FD9B083F4558ULL, 0xFD080D236DA814BAULL,
237   0x7B64978555326F9FULL, 0x60E8ED72C0DFF5D1ULL,
238   0xB063E962E045F54DULL, 0x959F587D507A8359ULL,
239   0x758F450C88572E0BULL, 0x1B6BACA2AE4E125BULL,
240   0x61CF4F94C97DF93DULL, 0x2738259634305C14ULL,
241   0xD39BB9C3A48DB6CFULL, 0x8215E577001332C8ULL,
242   0xA1082C0466DF6C0AULL, 0xEF02CDD06FFDB432ULL,
243   0xFC87614BAF287E07ULL, 0x240AB57A8B888B20ULL,
244   0xBF8D5108E27E0D48ULL, 0x61BDD1307C66E300ULL,
245   0xB925A6CD0421AFF3ULL, 0x3E003E616A6591E9ULL,
246   0x94C3251F06F90CF3ULL, 0xBF84470805E69B5FULL,
247   0x98F076A4F7A2322EULL, 0x70CB6AF7C2D5BCF0ULL,
248   0xB64BE8D8B25396C1ULL, 0xA9AA4D20DB084E9BULL,
249   0x2E6D02C36017F67FULL, 0xEFED53D75FD64E6BULL,
250   0xD9F1F30CCD97FB09ULL, 0xA2EBEE47E2FBFCE1ULL,
251   0xB8D91274B9E9D4FBULL, 0x1DB956E450275779ULL,
252   0x4FC8E9560F91B123ULL, 0x63573FF03E224774ULL,
253   0x0647DFEDCD894A29ULL, 0x7884D9BC6CB569D8ULL,
254   0x7FBA195410E5CA30ULL, 0x106C09B972D2E822ULL,
255   0x241260ED4AD1E87DULL, 0x64C8E531BFF53B55ULL,
256   0xCA672B91E9E4FA16ULL, 0x3871700761B3F743ULL,
257   0xF95CFFA23AF5F6F4ULL, 0x8D14DEDB30BE846EULL,
258   0x3B097ADAF088F94EULL, 0x21E0BD5026C619BFULL,
259   0x1BDA0492E7E4586EULL, 0xD23C8E176D113600ULL,
260   0x252F59CF0D9F04BBULL, 0xB3598080CE64A656ULL,
261   0x993E1DE72D36D310ULL, 0xA2853B80F17F58EEULL,
262   0x1877B51E57A764D5ULL, 0x001F837CC7350524ULL
263 };
264
265 int main(int _argc,const char *_argv[]){
266   isaac64_ctx isaac64;
267   int         i;
268   int         j;
269
270   /*This is how many tests you plan to run.*/
271   plan_tests(2);
272   isaac64_init(&isaac64,NULL,0);
273   for(j=0;j<ISAAC64_SZ;j++)isaac64_next_uint64(&isaac64);
274   for(i=0;i<2;i++){
275     int nmatches;
276     nmatches=0;
277     for(j=0;j<ISAAC64_SZ;j++){
278       nmatches+=isaac64_next_uint64(&isaac64)==STATEVEC64[(i+1)*ISAAC64_SZ-j-1];
279     }
280     ok1(nmatches==ISAAC64_SZ);
281   }
282   /*TODO: We should test the random float/double routines, but they are not
283      guaranteed to return the same values on all platforms, because the number
284      of bits in the mantissa may be different.
285     Perhaps some simple statistical tests would suffice.*/
286   return exit_status();
287 }