tree checksum vpatch file split hunks

all signers: asciilifeform diana_coman

antecedents: udp_fix_ip_nullchars

press order:

udp_genesisasciilifeform diana_coman
udp_errata_asciilifeformasciilifeform diana_coman
udp_fix_ip_nullcharsdiana_coman
mt_prngdiana_coman

patch:

-
+ D0A1425D243CA61B62BF2D184348D3C314B43ED8AE83CD03FF466B3A1D7BB9D04BB5172F4C4D6368A354C04213E3FD5BFE826437DB1B5B8C0FA6B633303E27B4
udp/libmt/lib/README
(0 . 0)(1 . 1)
5 lib
-
+ 51A08CE52E8DF06FC1CAC9D4DFD9EBFED15EACFBE86011D481326668D17007482E2998F516F29CAA2A4175154D3CE60C8A805F7A6214B609A2CD613E7649B5AE
udp/libmt/mt.adb
(0 . 0)(1 . 128)
10 -- Ada implementation of the Mersenne Twister Pseudo-Random number generator
11 -- S.MG, 2018
12
13
14 package body MT is
15
16 procedure Init_Genrand(Seed : in U32) is
17 begin
18 State(0) := Seed;
19 for I in State'First + 1 .. State'Last loop
20 State(I) := U32(1812433253) *
21 ( State(I - 1) xor
22 ( Shift_Right(State(I - 1), 30) )
23 ) + U32(I) ;
24 end loop;
25 Mti_Flag := N;
26 end Init_Genrand;
27
28 procedure Init_Genrand(Seed : in Init_Array_Type) is
29 Default_Seed: constant U32 := U32(19650218); -- magic value!
30 I, J, K : Integer;
31 begin
32 Init_Genrand(Default_Seed);
33 I := 1;
34 J := 0;
35 if N > Seed'Length then
36 K := N;
37 else
38 K := Seed'Length;
39 end if;
40
41 while K > 0 loop
42 State(I) := (State(I) xor
43 ( (State(I-1) xor
44 Shift_Right(State(I-1), 30)
45 ) * U32(1664525)
46 )) + Seed(J) + U32(J);
47 I := I + 1;
48 J := J + 1;
49 if I >= N then
50 State(0) := State(N-1);
51 I := 1;
52 end if;
53 if J >= Seed'Length then
54 J := 0;
55 end if;
56 K := K - 1;
57 end loop;
58
59 K := N -1;
60 while K > 0 loop
61 State(I) := (State(I) xor
62 ( (State(I-1) xor
63 Shift_Right(State(I-1), 30)
64 ) * U32(1566083941)
65 )) - U32(I);
66 I := I + 1;
67 if I >= N then
68 State(0) := State(N-1);
69 I := 1;
70 end if;
71 K := K - 1;
72 end loop;
73 State(0) := 16#8000_0000#; -- MSB is 1 to ensure non-zero initial state
74 end Init_Genrand;
75
76 function Gen_U32 return U32 is
77 Y : U32;
78 MASK1 : constant U32 := U32(1);
79 Mag01 : Array ( 0 .. 1 ) of U32;
80 begin
81 -- Mag01[x] is x * Matrix_A of the algorithm for x 0 or 1
82 Mag01(0) := U32(0);
83 Mag01(1) := MATRIX_MASK;
84
85 -- if no numbers available, generate another set of N words
86 if Mti_Flag >= N then
87
88 -- check it's not a non-initialised generator
89 if Mti_Flag = (N + 1) then
90 -- Generator was NOT initialised!
91 -- Original C code initialises with default seed 5489
92 -- This code will simply raise exception and abort
93 raise No_Init_Exception;
94 end if;
95
96 for K in 0 .. N - M - 1 loop
97 Y := ( State(K) and UPPER_MASK ) or
98 ( State(K+1) and LOWER_MASK );
99 State(K) := State(K+M) xor
100 Shift_Right(Y, 1) xor
101 Mag01(Integer(Y and MASK1));
102 end loop;
103 for K in N-M .. N - 2 loop
104 Y := ( State(K) and UPPER_MASK ) or
105 ( State(K+1) and LOWER_MASK);
106 State(K) := State(K + M - N) xor
107 Shift_Right(Y, 1) xor
108 Mag01(Integer(Y and MASK1));
109 end loop;
110 Y := (State(N-1) and UPPER_MASK ) or
111 (State(0) and LOWER_MASK );
112 State(N - 1) := State(M-1) xor
113 Shift_Right(Y, 1) xor
114 Mag01(Integer(Y and MASK1));
115 Mti_Flag := 0;
116 end if;
117
118 -- retrieve next available number
119 Y := State(Integer(Mti_Flag));
120 Mti_Flag := Mti_Flag + 1;
121
122 -- tempering
123 Y := Y xor Shift_Right(Y, 11);
124 Y := Y xor (Shift_Left(Y, 7) and 16#9d2c_5680#);
125 Y := Y xor (Shift_Left(Y, 15) and 16#efc6_0000#);
126 Y := Y xor Shift_Right(Y, 18);
127
128 -- return tempered number
129 return Y;
130 end Gen_U32;
131
132 function Get_State return State_Type is
133 begin
134 return State;
135 end Get_State;
136
137 end MT;
-
+ B2F65C66488B4070367DE205D1AB29EB50633B6A7B81611FA07492188FC255047C51A6ECAE15E8BC4F18C934812FD88FDA073E67DD4D92E0C810B6FEA282FC0C
udp/libmt/mt.ads
(0 . 0)(1 . 47)
142 -- Ada implementation of the Mersenne Twister Pseudo-Random number generator
143 -- S.MG, 2018
144
145 with Interfaces; use Interfaces;
146
147 package MT is
148 -- Interfaces.Unsigned_32 in GNAT is mod 2**32 and has bitwise shifts defined
149 subtype U32 is Interfaces.Unsigned_32;
150
151 -- period parameters
152 N : constant := 624;
153 M : constant := 397;
154 MATRIX_MASK: constant U32 := 16#9908_b0df#;
155 UPPER_MASK : constant U32 := 16#8000_0000#;
156 LOWER_MASK : constant U32 := 16#7fff_ffff#;
157
158 -- array type for storing the state vector of the generator
159 type State_Type is Array( 0 .. N-1 ) of U32;
160
161 -- array type for initialization by array - change key len here if needed
162 KEY_LEN : constant := 4;
163 type Init_Array_Type is Array( 0 .. KEY_LEN - 1 ) of U32;
164
165 -- exception raised by a call to generator before initializing it
166 No_Init_Exception : exception;
167
168 -- initialize the generator with a seed (number)
169 procedure Init_Genrand(Seed : in U32);
170
171 -- initialize the generator with array of 8-octets elements
172 procedure Init_Genrand(Seed : in Init_Array_Type);
173
174 -- generate the next pseudo-random 32 bits number in the sequence
175 function Gen_U32 return U32;
176
177 -- for testing
178 function Get_State return State_Type;
179
180 -- internals of the generator, NOT for direct access
181 private
182 -- actual state of the generator
183 State : State_Type;
184
185 -- flag for generator routine
186 Mti_Flag : U32 := N + 1; -- default value -> state(N) is not initialised
187
188 end MT;
-
+ AA5FA5D467EBB6EDC0C725CA181FC94AC1B7E90252BFEEC991A84B023B0C9D5C56BD6A1353AA6BB2B93B529E2A8A92B75C74128081644B7B7303B45A882DBC57
udp/libmt/mt.gpr
(0 . 0)(1 . 52)
193 -- Ada implementation of the Mersenne Twister Pseudo-Random number generator
194 -- S.MG, 2018
195 --
196 -- Implementing the algorithm as described by Matsumoto, M. and Nishimura, T.:
197 -- www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
198 -- M.M and N.T, "Mersenne Twister: A 623-dimensionally equidistributed uniform
199 -- pseudorandom number generator", ACM Transactions on Modeling and Computer
200 -- Simulations: Special Issue on Uniform Random Number Generation, 1998.
201
202 project MT is
203 for Object_Dir use "obj";
204
205 type Mode_Type is ("debug", "release");
206 Mode : Mode_Type := external ("mode", "release");
207
208 for Languages use ("Ada");
209 for Source_Dirs use (".");
210 for Library_Dir use "lib";
211 for Library_Name use "MT";
212 for Library_Kind use "static";
213
214 package Compiler is
215
216 case Mode is
217 when "debug" =>
218 for Switches ("Ada")
219 use ("-g");
220 when "release" =>
221 for Switches ("Ada")
222 use ("-O2", "-fdump-scos", "-gnata", "-fstack-check",
223 "-gnatyd", "-gnatym",
224 "-fdata-sections", "-ffunction-sections", "-gnatwr", "-gnatw.d",
225 "-gnatec=" & MT'Project_Dir & "restrict.adc");
226 end case;
227 end Compiler;
228
229 package Builder is
230 for Switches ("Ada")
231 use ("-nostdlib");
232 end Builder;
233
234 package Binder is
235 case Mode is
236 when "debug" =>
237 for Switches ("Ada")
238 use ();
239 when "release" =>
240 for Switches ("Ada")
241 use ("-static");
242 end case;
243 end Binder;
244 end MT;
-
+ 50F9B127E6AE2019779520D8998BEA7F559496B1847C7C66B6CE6A6F3FC20DB67D45F1FBF7A9318C86EBBA0694DB73DE168F409D8328A751F3104C1474A83A0D
udp/libmt/obj/README
(0 . 0)(1 . 1)
249 obj
-
+ F256A87B8D06518B71D6E520BADC3444068137BAE61D2C70B05C9D4F6337B6ADC171A2C4F48EE6575475BDC97FD79FBB1709A6D33EA4C9D87C80638E5497E8A4
udp/libmt/restrict.adc
(0 . 0)(1 . 82)
254 ------------------------------------------------------------------------------
255 ------------------------------------------------------------------------------
256 -- This file is part of 'UDP', a datagram sockets library. --
257 -- --
258 -- (C) 2018 Stanislav Datskovskiy ( www.loper-os.org ) --
259 -- http://wot.deedbot.org/17215D118B7239507FAFED98B98228A001ABFFC7.html --
260 -- --
261 -- You do not have, nor can you ever acquire the right to use, copy or --
262 -- distribute this software ; Should you use this software for any purpose, --
263 -- or copy and distribute it to anyone or in any manner, you are breaking --
264 -- the laws of whatever soi-disant jurisdiction, and you promise to --
265 -- continue doing so for the indefinite future. In any case, please --
266 -- always : read and understand any software ; verify any PGP signatures --
267 -- that you use - for any purpose. --
268 -- --
269 -- See also http://trilema.com/2015/a-new-software-licensing-paradigm . --
270 ------------------------------------------------------------------------------
271 ------------------------------------------------------------------------------
272
273 pragma Restrictions(Immediate_Reclamation);
274 pragma Restrictions(Max_Asynchronous_Select_Nesting => 0);
275 pragma Restrictions(Max_Protected_Entries => 0);
276 pragma Restrictions(Max_Select_Alternatives => 0);
277 --pragma Restrictions(Max_Task_Entries => 0);
278 --pragma Restrictions(Max_Tasks => 0);
279 pragma Restrictions(No_Abort_Statements);
280 pragma Restrictions(No_Access_Parameter_Allocators);
281 pragma Restrictions(No_Allocators);
282 pragma Restrictions(No_Asynchronous_Control);
283 --pragma Restrictions(No_Calendar);
284 pragma Restrictions(No_Coextensions);
285 pragma Restrictions(No_Default_Stream_Attributes);
286 --pragma Restrictions(No_Delay);
287 pragma Restrictions(No_Dispatch);
288 pragma Restrictions(No_Dispatching_Calls);
289 pragma Restrictions(No_Dynamic_Attachment);
290 pragma Restrictions(No_Dynamic_Priorities);
291 pragma Restrictions(No_Entry_Calls_In_Elaboration_Code);
292 pragma Restrictions(No_Entry_Queue);
293 pragma Restrictions(No_Enumeration_Maps);
294 pragma Restrictions(No_Exception_Propagation);
295 pragma Restrictions(No_Exception_Registration);
296 pragma Restrictions(No_Finalization);
297 pragma Restrictions(No_Fixed_Io);
298 pragma Restrictions(No_Floating_Point);
299 pragma Restrictions(No_Implementation_Aspect_Specifications);
300 pragma Restrictions(No_Implementation_Units);
301 pragma Restrictions(No_Implicit_Dynamic_Code);
302 pragma Restrictions(No_Implicit_Heap_Allocations);
303 pragma Restrictions(No_Implicit_Protected_Object_Allocations);
304 pragma Restrictions(No_Implicit_Task_Allocations);
305 pragma Restrictions(No_Initialize_Scalars);
306 pragma Restrictions(No_Local_Protected_Objects);
307 pragma Restrictions(No_Local_Timing_Events);
308 pragma Restrictions(No_Multiple_Elaboration);
309 pragma Restrictions(No_Nested_Finalization);
310 pragma Restrictions(No_Protected_Type_Allocators);
311 pragma Restrictions(No_Protected_Types);
312 --pragma Restrictions(No_Relative_Delay);
313 pragma Restrictions(No_Requeue_Statements);
314 pragma Restrictions(No_Secondary_Stack);
315 pragma Restrictions(No_Select_Statements);
316 pragma Restrictions(No_Specific_Termination_Handlers);
317 pragma Restrictions(No_Standard_Allocators_After_Elaboration);
318 pragma Restrictions(No_Stream_Optimizations);
319 pragma Restrictions(No_Streams);
320 pragma Restrictions(No_Task_Allocators);
321 pragma Restrictions(No_Task_At_Interrupt_Priority);
322 pragma Restrictions(No_Task_Attributes_Package);
323 --pragma Restrictions(No_Task_Hierarchy);
324 --pragma Restrictions(No_Tasking);
325 pragma Restrictions(No_Task_Termination);
326 pragma Restrictions(No_Terminate_Alternatives);
327 pragma Restrictions(No_Unchecked_Access);
328 pragma Restrictions(No_Unchecked_Conversion);
329 pragma Restrictions(No_Unchecked_Deallocation);
330 pragma Restrictions(No_Wide_Characters);
331 pragma Restrictions(Pure_Barriers);
332 pragma Restrictions(Simple_Barriers);
333 pragma Restrictions(Static_Priorities);
334 pragma Restrictions(Static_Storage_Size);
335 pragma Validity_Checks(ALL_CHECKS);
- 408581EFE33EB2D149C57211C1461D8C71313E2B3EC17EFC421F32F4A2B67234300B8866522BA68B255BBDAF505A40EFA0E51E5E05333908F9C81F1C2549F864
+ 6B46C9CC494C5F0ECCE1C653D6F34AD30D366B0D4A1D9AB169E94FFBC17BE09CAC3DBF85F5B571516161712FD201E50581CD2C247AA5B7442F94B69CFDC907EB
udp/manifest
(1 . 3)(1 . 4)
340 543080 udp_genesis diana_coman Regrind of asciilifeform's UDP lib genesis, to bring it to current format (Keccak hashes, manifest file and standard compliant names for vpatches). A minimal library for UDP communications with fixed-size payloads sent/received over the wire. Uses Ada and C code.
341 543081 udp_errata_asciilifeform diana_coman Regrind of asciilifeform's errata on his UDP lib: adds closing socket calls, corrects and adds to comments.
342 543082 udp_fix_nullchars diana_coman Fix for issue in unix_udp.c that returns null characters at end of IPs shorter than 16 characters in length.
343 543083 mt_prng diana_coman Ada implementation of Mersenne Twister pseudorandom number generator + automated tests for it.
-
+ 50F9B127E6AE2019779520D8998BEA7F559496B1847C7C66B6CE6A6F3FC20DB67D45F1FBF7A9318C86EBBA0694DB73DE168F409D8328A751F3104C1474A83A0D
udp/testmt/obj/README
(0 . 0)(1 . 1)
348 obj
-
+ 86184DB01D5CFE673941BCFD43AA4EEA5C98CF6432E7B9529BBD47E4EA5A01ED74E1DFB5FDE16E404BDAEC0FFB7785DB6583BDE04E12A97F4433BEE9CABD9D9B
udp/testmt/tests_mt.adb
(0 . 0)(1 . 238)
353 --S.MG, 2018
354
355 with Ada.Text_IO; use Ada.Text_IO;
356 with Interfaces; use Interfaces;
357 with MT;
358
359 procedure Tests_MT is
360 Seeds : MT.Init_Array_Type;
361 X : MT.U32;
362 No : constant Integer := 1000;
363 Result: Array(0..No-1) of MT.U32 := (
364 1067595299, 955945823, 477289528, 4107218783, 4228976476,
365 3344332714, 3355579695, 227628506, 810200273, 2591290167,
366 2560260675, 3242736208, 646746669, 1479517882, 4245472273,
367 1143372638, 3863670494, 3221021970, 1773610557, 1138697238,
368 1421897700, 1269916527, 2859934041, 1764463362, 3874892047,
369 3965319921, 72549643, 2383988930, 2600218693, 3237492380,
370 2792901476, 725331109, 605841842, 271258942, 715137098,
371 3297999536, 1322965544, 4229579109, 1395091102, 3735697720,
372 2101727825, 3730287744, 2950434330, 1661921839, 2895579582,
373 2370511479, 1004092106, 2247096681, 2111242379, 3237345263,
374 4082424759, 219785033, 2454039889, 3709582971, 835606218,
375 2411949883, 2735205030, 756421180, 2175209704, 1873865952,
376 2762534237, 4161807854, 3351099340, 181129879, 3269891896,
377 776029799, 2218161979, 3001745796, 1866825872, 2133627728,
378 34862734, 1191934573, 3102311354, 2916517763, 1012402762,
379 2184831317, 4257399449, 2899497138, 3818095062, 3030756734,
380 1282161629, 420003642, 2326421477, 2741455717, 1278020671,
381 3744179621, 271777016, 2626330018, 2560563991, 3055977700,
382 4233527566, 1228397661, 3595579322, 1077915006, 2395931898,
383 1851927286, 3013683506, 1999971931, 3006888962, 1049781534,
384 1488758959, 3491776230, 104418065, 2448267297, 3075614115,
385 3872332600, 891912190, 3936547759, 2269180963, 2633455084,
386 1047636807, 2604612377, 2709305729, 1952216715, 207593580,
387 2849898034, 670771757, 2210471108, 467711165, 263046873,
388 3569667915, 1042291111, 3863517079, 1464270005, 2758321352,
389 3790799816, 2301278724, 3106281430, 7974801, 2792461636,
390 555991332, 621766759, 1322453093, 853629228, 686962251,
391 1455120532, 957753161, 1802033300, 1021534190, 3486047311,
392 1902128914, 3701138056, 4176424663, 1795608698, 560858864,
393 3737752754, 3141170998, 1553553385, 3367807274, 711546358,
394 2475125503, 262969859, 251416325, 2980076994, 1806565895,
395 969527843, 3529327173, 2736343040, 2987196734, 1649016367,
396 2206175811, 3048174801, 3662503553, 3138851612, 2660143804,
397 1663017612, 1816683231, 411916003, 3887461314, 2347044079,
398 1015311755, 1203592432, 2170947766, 2569420716, 813872093,
399 1105387678, 1431142475, 220570551, 4243632715, 4179591855,
400 2607469131, 3090613241, 282341803, 1734241730, 1391822177,
401 1001254810, 827927915, 1886687171, 3935097347, 2631788714,
402 3905163266, 110554195, 2447955646, 3717202975, 3304793075,
403 3739614479, 3059127468, 953919171, 2590123714, 1132511021,
404 3795593679, 2788030429, 982155079, 3472349556, 859942552,
405 2681007391, 2299624053, 647443547, 233600422, 608168955,
406 3689327453, 1849778220, 1608438222, 3968158357, 2692977776,
407 2851872572, 246750393, 3582818628, 3329652309, 4036366910,
408 1012970930, 950780808, 3959768744, 2538550045, 191422718,
409 2658142375, 3276369011, 2927737484, 1234200027, 1920815603,
410 3536074689, 1535612501, 2184142071, 3276955054, 428488088,
411 2378411984, 4059769550, 3913744741, 2732139246, 64369859,
412 3755670074, 842839565, 2819894466, 2414718973, 1010060670,
413 1839715346, 2410311136, 152774329, 3485009480, 4102101512,
414 2852724304, 879944024, 1785007662, 2748284463, 1354768064,
415 3267784736, 2269127717, 3001240761, 3179796763, 895723219,
416 865924942, 4291570937, 89355264, 1471026971, 4114180745,
417 3201939751, 2867476999, 2460866060, 3603874571, 2238880432,
418 3308416168, 2072246611, 2755653839, 3773737248, 1709066580,
419 4282731467, 2746170170, 2832568330, 433439009, 3175778732,
420 26248366, 2551382801, 183214346, 3893339516, 1928168445,
421 1337157619, 3429096554, 3275170900, 1782047316, 4264403756,
422 1876594403, 4289659572, 3223834894, 1728705513, 4068244734,
423 2867840287, 1147798696, 302879820, 1730407747, 1923824407,
424 1180597908, 1569786639, 198796327, 560793173, 2107345620,
425 2705990316, 3448772106, 3678374155, 758635715, 884524671,
426 486356516, 1774865603, 3881226226, 2635213607, 1181121587,
427 1508809820, 3178988241, 1594193633, 1235154121, 326117244,
428 2304031425, 937054774, 2687415945, 3192389340, 2003740439,
429 1823766188, 2759543402, 10067710, 1533252662, 4132494984,
430 82378136, 420615890, 3467563163, 541562091, 3535949864,
431 2277319197, 3330822853, 3215654174, 4113831979, 4204996991,
432 2162248333, 3255093522, 2219088909, 2978279037, 255818579,
433 2859348628, 3097280311, 2569721123, 1861951120, 2907080079,
434 2719467166, 998319094, 2521935127, 2404125338, 259456032,
435 2086860995, 1839848496, 1893547357, 2527997525, 1489393124,
436 2860855349, 76448234, 2264934035, 744914583, 2586791259,
437 1385380501, 66529922, 1819103258, 1899300332, 2098173828,
438 1793831094, 276463159, 360132945, 4178212058, 595015228,
439 177071838, 2800080290, 1573557746, 1548998935, 378454223,
440 1460534296, 1116274283, 3112385063, 3709761796, 827999348,
441 3580042847, 1913901014, 614021289, 4278528023, 1905177404,
442 45407939, 3298183234, 1184848810, 3644926330, 3923635459,
443 1627046213, 3677876759, 969772772, 1160524753, 1522441192,
444 452369933, 1527502551, 832490847, 1003299676, 1071381111,
445 2891255476, 973747308, 4086897108, 1847554542, 3895651598,
446 2227820339, 1621250941, 2881344691, 3583565821, 3510404498,
447 849362119, 862871471, 797858058, 2867774932, 2821282612,
448 3272403146, 3997979905, 209178708, 1805135652, 6783381,
449 2823361423, 792580494, 4263749770, 776439581, 3798193823,
450 2853444094, 2729507474, 1071873341, 1329010206, 1289336450,
451 3327680758, 2011491779, 80157208, 922428856, 1158943220,
452 1667230961, 2461022820, 2608845159, 387516115, 3345351910,
453 1495629111, 4098154157, 3156649613, 3525698599, 4134908037,
454 446713264, 2137537399, 3617403512, 813966752, 1157943946,
455 3734692965, 1680301658, 3180398473, 3509854711, 2228114612,
456 1008102291, 486805123, 863791847, 3189125290, 1050308116,
457 3777341526, 4291726501, 844061465, 1347461791, 2826481581,
458 745465012, 2055805750, 4260209475, 2386693097, 2980646741,
459 447229436, 2077782664, 1232942813, 4023002732, 1399011509,
460 3140569849, 2579909222, 3794857471, 900758066, 2887199683,
461 1720257997, 3367494931, 2668921229, 955539029, 3818726432,
462 1105704962, 3889207255, 2277369307, 2746484505, 1761846513,
463 2413916784, 2685127085, 4240257943, 1166726899, 4215215715,
464 3082092067, 3960461946, 1663304043, 2087473241, 4162589986,
465 2507310778, 1579665506, 767234210, 970676017, 492207530,
466 1441679602, 1314785090, 3262202570, 3417091742, 1561989210,
467 3011406780, 1146609202, 3262321040, 1374872171, 1634688712,
468 1280458888, 2230023982, 419323804, 3262899800, 39783310,
469 1641619040, 1700368658, 2207946628, 2571300939, 2424079766,
470 780290914, 2715195096, 3390957695, 163151474, 2309534542,
471 1860018424, 555755123, 280320104, 1604831083, 2713022383,
472 1728987441, 3639955502, 623065489, 3828630947, 4275479050,
473 3516347383, 2343951195, 2430677756, 635534992, 3868699749,
474 808442435, 3070644069, 4282166003, 2093181383, 2023555632,
475 1568662086, 3422372620, 4134522350, 3016979543, 3259320234,
476 2888030729, 3185253876, 4258779643, 1267304371, 1022517473,
477 815943045, 929020012, 2995251018, 3371283296, 3608029049,
478 2018485115, 122123397, 2810669150, 1411365618, 1238391329,
479 1186786476, 3155969091, 2242941310, 1765554882, 279121160,
480 4279838515, 1641578514, 3796324015, 13351065, 103516986,
481 1609694427, 551411743, 2493771609, 1316337047, 3932650856,
482 4189700203, 463397996, 2937735066, 1855616529, 2626847990,
483 55091862, 3823351211, 753448970, 4045045500, 1274127772,
484 1124182256, 92039808, 2126345552, 425973257, 386287896,
485 2589870191, 1987762798, 4084826973, 2172456685, 3366583455,
486 3602966653, 2378803535, 2901764433, 3716929006, 3710159000,
487 2653449155, 3469742630, 3096444476, 3932564653, 2595257433,
488 318974657, 3146202484, 853571438, 144400272, 3768408841,
489 782634401, 2161109003, 570039522, 1886241521, 14249488,
490 2230804228, 1604941699, 3928713335, 3921942509, 2155806892,
491 134366254, 430507376, 1924011722, 276713377, 196481886,
492 3614810992, 1610021185, 1785757066, 851346168, 3761148643,
493 2918835642, 3364422385, 3012284466, 3735958851, 2643153892,
494 3778608231, 1164289832, 205853021, 2876112231, 3503398282,
495 3078397001, 3472037921, 1748894853, 2740861475, 316056182,
496 1660426908, 168885906, 956005527, 3984354789, 566521563,
497 1001109523, 1216710575, 2952284757, 3834433081, 3842608301,
498 2467352408, 3974441264, 3256601745, 1409353924, 1329904859,
499 2307560293, 3125217879, 3622920184, 3832785684, 3882365951,
500 2308537115, 2659155028, 1450441945, 3532257603, 3186324194,
501 1225603425, 1124246549, 175808705, 3009142319, 2796710159,
502 3651990107, 160762750, 1902254979, 1698648476, 1134980669,
503 497144426, 3302689335, 4057485630, 3603530763, 4087252587,
504 427812652, 286876201, 823134128, 1627554964, 3745564327,
505 2589226092, 4202024494, 62878473, 3275585894, 3987124064,
506 2791777159, 1916869511, 2585861905, 1375038919, 1403421920,
507 60249114, 3811870450, 3021498009, 2612993202, 528933105,
508 2757361321, 3341402964, 2621861700, 273128190, 4015252178,
509 3094781002, 1621621288, 2337611177, 1796718448, 1258965619,
510 4241913140, 2138560392, 3022190223, 4174180924, 450094611,
511 3274724580, 617150026, 2704660665, 1469700689, 1341616587,
512 356715071, 1188789960, 2278869135, 1766569160, 2795896635,
513 57824704, 2893496380, 1235723989, 1630694347, 3927960522,
514 428891364, 1814070806, 2287999787, 4125941184, 3968103889,
515 3548724050, 1025597707, 1404281500, 2002212197, 92429143,
516 2313943944, 2403086080, 3006180634, 3561981764, 1671860914,
517 1768520622, 1803542985, 844848113, 3006139921, 1410888995,
518 1157749833, 2125704913, 1789979528, 1799263423, 741157179,
519 2405862309, 767040434, 2655241390, 3663420179, 2172009096,
520 2511931187, 1680542666, 231857466, 1154981000, 157168255,
521 1454112128, 3505872099, 1929775046, 2309422350, 2143329496,
522 2960716902, 407610648, 2938108129, 2581749599, 538837155,
523 2342628867, 430543915, 740188568, 1937713272, 3315215132,
524 2085587024, 4030765687, 766054429, 3517641839, 689721775,
525 1294158986, 1753287754, 4202601348, 1974852792, 33459103,
526 3568087535, 3144677435, 1686130825, 4134943013, 3005738435,
527 3599293386, 426570142, 754104406, 3660892564, 1964545167,
528 829466833, 821587464, 1746693036, 1006492428, 1595312919,
529 1256599985, 1024482560, 1897312280, 2902903201, 691790057,
530 1037515867, 3176831208, 1968401055, 2173506824, 1089055278,
531 1748401123, 2941380082, 968412354, 1818753861, 2973200866,
532 3875951774, 1119354008, 3988604139, 1647155589, 2232450826,
533 3486058011, 3655784043, 3759258462, 847163678, 1082052057,
534 989516446, 2871541755, 3196311070, 3929963078, 658187585,
535 3664944641, 2175149170, 2203709147, 2756014689, 2456473919,
536 3890267390, 1293787864, 2830347984, 3059280931, 4158802520,
537 1561677400, 2586570938, 783570352, 1355506163, 31495586,
538 3789437343, 3340549429, 2092501630, 896419368, 671715824,
539 3530450081, 3603554138, 1055991716, 3442308219, 1499434728,
540 3130288473, 3639507000, 17769680, 2259741420, 487032199,
541 4227143402, 3693771256, 1880482820, 3924810796, 381462353,
542 4017855991, 2452034943, 2736680833, 2209866385, 2128986379,
543 437874044, 595759426, 641721026, 1636065708, 3899136933,
544 629879088, 3591174506, 351984326, 2638783544, 2348444281,
545 2341604660, 2123933692, 143443325, 1525942256, 364660499,
546 599149312, 939093251, 1523003209, 106601097, 376589484,
547 1346282236, 1297387043, 764598052, 3741218111, 933457002,
548 1886424424, 3219631016, 525405256, 3014235619, 323149677,
549 2038881721, 4100129043, 2851715101, 2984028078, 1888574695,
550 2014194741, 3515193880, 4180573530, 3461824363, 2641995497,
551 3179230245, 2902294983, 2217320456, 4040852155, 1784656905,
552 3311906931, 87498458, 2752971818, 2635474297, 2831215366,
553 3682231106, 2920043893, 3772929704, 2816374944, 309949752,
554 2383758854, 154870719, 385111597, 1191604312, 1840700563,
555 872191186, 2925548701, 1310412747, 2102066999, 1504727249,
556 3574298750, 1191230036, 3330575266, 3180292097, 3539347721,
557 681369118, 3305125752, 3648233597, 950049240, 4173257693,
558 1760124957, 512151405, 681175196, 580563018, 1169662867,
559 4015033554, 2687781101, 699691603, 2673494188, 1137221356,
560 123599888, 472658308, 1053598179, 1012713758, 3481064843,
561 3759461013, 3981457956, 3830587662, 1877191791, 3650996736,
562 988064871, 3515461600, 4089077232, 2225147448, 1249609188,
563 2643151863, 3896204135, 2416995901, 1397735321, 3460025646);
564
565 Errors: Natural := 0;
566 begin
567 Seeds(0) := MT.U32(16#123#);
568 Seeds(1) := MT.U32(16#234#);
569 Seeds(2) := MT.U32(16#345#);
570 Seeds(3) := MT.U32(16#456#);
571 MT.Init_Genrand(Seeds);
572
573 Put_Line("Generating numbers...");
574 for I in 0 .. No-1 loop
575 X := MT.Gen_U32;
576 Put(".");
577 if X /= Result(I) then
578 Put_Line("");
579 Put_Line("ERROR at position " & Integer'Image(I) &
580 "; expected " & MT.U32'Image(Result(I)) &
581 " but result is " & MT.U32'Image(X));
582 end if;
583 end loop;
584
585 if Errors /= 0 then
586 Put_Line("FAIL: " & Natural'Image(Errors) & " errors found.");
587 else
588 Put_Line("PASS: no errors found.");
589 end if;
590 end Tests_MT;
-
+ 43238CFD62FD85024A79B76484232E4D3533D454C0CBB629B581CD4832BBE191C09F0593E52FE0C065C94696B162918FB463FF9445B849417FDEC36D6F8889E1
udp/testmt/tests_mt.gpr
(0 . 0)(1 . 44)
595 -- Tests for Ada implementation of the Mersenne Twister PRNG
596 -- S.MG, 2018
597 --
598 -- Tests results against published PRNG numbers at
599 -- www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
600
601 with "../libmt/mt.gpr";
602
603 project Tests_MT is
604
605 for Main use ("tests_mt.adb");
606
607 type Mode_Type is ("debug", "release");
608 Mode : Mode_Type := external ("mode", "release");
609
610 for Languages use ("Ada");
611 for Source_Dirs use (".");
612 for Object_Dir use "obj";
613 for Exec_Dir use ".";
614
615 package Compiler is
616 case Mode is
617 when "debug" =>
618 for Switches ("Ada")
619 use ("-g");
620 when "release" =>
621 for Switches ("Ada")
622 use ("-O2", "-fdump-scos", "-gnata", "-fstack-check",
623 "-gnatyd", "-gnatym",
624 "-fdata-sections", "-ffunction-sections", "-gnatwr", "-gnatw.d");
625 end case;
626 end Compiler;
627
628 package Binder is
629 case Mode is
630 when "debug" =>
631 for Switches ("Ada")
632 use ();
633 when "release" =>
634 for Switches ("Ada")
635 use ("-static");
636 end case;
637 end Binder;
638 end Tests_MT;