1# Verify Mersenne Twister algorithm
2# Test standalone PRNG - srand(\&sub), get_/set_seed() and get_/set_state()
3# Test OO interface - seeding from file, $obj->get_/set_seed() and
4#                     $obj->get_/set_state()
5# Test PRNG 'cloning'
6
7use strict;
8use warnings;
9
10use Test::More 'tests' => 33;
11use Config;
12
13my @WARN;
14BEGIN {
15    # Warning signal handler
16    $SIG{__WARN__} = sub { push(@WARN, @_); };
17
18    use_ok('Math::Random::MT::Auto', qw(rand irand srand get_seed set_seed
19                                        get_state set_state :!auto));
20}
21
22can_ok('Math::Random::MT::Auto', qw(rand irand srand get_seed set_seed
23                                    get_state set_state));
24can_ok('main', qw(rand irand srand get_seed set_seed
25                                    get_state set_state));
26
27# Known test values for irand()
28my @base_rint = ($Config{'uvsize'} == 8) ?
29  (  # 64-bit randoms
30     7266447313870364031,  4946485549665804864, 16945909448695747420, 16394063075524226720,  4873882236456199058,
31    14877448043947020171,  6740343660852211943, 13857871200353263164,  5249110015610582907, 10205081126064480383,
32     1235879089597390050, 17320312680810499042, 16489141110565194782,  8942268601720066061, 13520575722002588570,
33    14226945236717732373,  9383926873555417063, 15690281668532552105, 11510704754157191257, 15864264574919463609,
34     6489677788245343319,  5112602299894754389, 10828930062652518694, 15942305434158995996, 15445717675088218264,
35     4764500002345775851, 14673753115101942098,   236502320419669032, 13670483975188204088, 14931360615268175698,
36     8904234204977263924, 12836915408046564963, 12120302420213647524, 15755110976537356441,  5405758943702519480,
37    10951858968426898805, 17251681303478610375,  4144140664012008120, 18286145806977825275, 13075804672185204371,
38    10831805955733617705,  6172975950399619139, 12837097014497293886, 12903857913610213846,   560691676108914154,
39     1074659097419704618, 14266121283820281686, 11696403736022963346, 13383246710985227247,  7132746073714321322,
40    10608108217231874211,  9027884570906061560, 12893913769120703138, 15675160838921962454,  2511068401785704737,
41    14483183001716371453,  3774730664208216065,  5083371700846102796,  9583498264570933637, 17119870085051257224,
42     5217910858257235075, 10612176809475689857,  1924700483125896976,  7171619684536160599, 10949279256701751503,
43    15596196964072664893, 14097948002655599357,   615821766635933047,  5636498760852923045, 17618792803942051220,
44      580805356741162327,   425267967796817241,  8381470634608387938, 13212228678420887626, 16993060308636741960,
45      957923366004347591,  6210242862396777185,  1012818702180800310, 15299383925974515757, 17501832009465945633,
46    17453794942891241229, 15807805462076484491,  8407189590930420827,   974125122787311712,  1861591264068118966,
47      997568339582634050, 18046771844467391493, 17981867688435687790,  3809841506498447207,  9460108917638135678,
48    16172980638639374310,   958022432077424298,  4393365126459778813, 13408683141069553686, 13900005529547645957,
49    15773550354402817866, 16475327524349230602,  6260298154874769264, 12224576659776460914,  6405294864092763507,
50     7585484664713203306,  5187641382818981381, 12435998400285353380, 13554353441017344755,   646091557254529188,
51    11393747116974949255, 16797249248413342857, 15713519023537495495, 12823504709579858843,  4738086532119935073,
52     4429068783387643752,   585582692562183870,  1048280754023674130,  6788940719869959076, 11670856244972073775,
53     2488756775360218862,  2061695363573180185,  6884655301895085032,  3566345954323888697, 12784319933059041817,
54     4772468691551857254,  6864898938209826895,  7198730565322227090,  2452224231472687253, 13424792606032445807,
55    10827695224855383989, 11016608897122070904, 14683280565151378358,  7077866519618824360, 17487079941198422333,
56     3956319990205097495,  5804870313319323478,  8017203611194497730,  3310931575584983808,  5009341981771541845,
57     6930001938490791874, 14415278059151389495, 11001114762641844083,  6715939435439735925,   411419160297131328,
58     4522402260441335284,  3381955501804126859, 15935778656111987797,  4345051260540166684, 13978444093099579683,
59     9219789505504949817,  9245142924137529075, 11628184459157386459,  7242398879359936370,  8511401943157540109,
60    11948130810477009827,  6865450671488705049, 13965005347172621081, 15956599226522058336,  7737868921014130584,
61     2107342503741411693, 15818996300425101108, 16399939197527488760, 13971145494081508107,  3910681448359868691,
62     4249175367970221090,  9735751321242454020, 12418107929362160460,   241792245481991138,  5806488997649497146,
63    10724207982663648949,  1121862814449214435,  1326996977123564236,  4902706567834759475, 12782714623891689967,
64     7306216312942796257, 15681656478863766664,   957364844878149318,  5651946387216554503,  8197027112357634782,
65     6302075516351125977, 13454588464089597862, 15638309200463515550, 10116604639722073476, 12052913535387714920,
66     2889379661594013754, 15383926144832314187,  7841953313015471731, 17310575136995821873,  9820021961316981626,
67    15319619724109527290, 15349724127275899898, 10511508162402504492,  6289553862380300393, 15046218882019267110,
68    11772020174577005930,  3537640779967351792,  6801855569284252424, 17687268231192623388, 12968358613633237218,
69     1429775571144180123, 10427377732172208413, 12155566091986788996, 16465954421598296115, 12710429690464359999,
70     9547226351541565595, 12156624891403410342,  2985938688676214686, 18066917785985010959,  5975570403614438776,
71    11541343163022500560, 11115388652389704592,  9499328389494710074,  9247163036769651820,  3688303938005101774,
72     2210483654336887556, 15458161910089693228,  6558785204455557683,  1288373156735958118, 18433986059948829624,
73     3435082195390932486, 16822351800343061990,  3120532877336962310, 16681785111062885568,  7835551710041302304,
74     2612798015018627203, 15083279177152657491,  6591467229462292195, 10592706450534565444,  7438147750787157163,
75      323186165595851698,  7444710627467609883,  8473714411329896576,  2782675857700189492,  3383567662400128329,
76     3200233909833521327, 12897601280285604448,  3612068790453735040,  8324209243736219497, 15789570356497723463,
77     1083312926512215996,  4797349136059339390,  5556729349871544986, 18266943104929747076,  1620389818516182276,
78      172225355691600141,  3034352936522087096,  1266779576738385285,  3906668377244742888,  6961783143042492788,
79    17159706887321247572,  4676208075243319061, 10315634697142985816, 13435140047933251189,   716076639492622016,
80    13847954035438697558,  7195811275139178570, 10815312636510328870,  6214164734784158515, 16412194511839921544,
81     3862249798930641332,  1005482699535576005,  4644542796609371301, 17600091057367987283,  4209958422564632034,
82     5419285945389823940, 11453701547564354601,  9951588026679380114,  7425168333159839689,  8436306210125134906,
83    11216615872596820107,  3681345096403933680,  5770016989916553752, 11102855936150871733, 11187980892339693935,
84      396336430216428875,  6384853777489155236,  7551613839184151117, 16527062023276943109, 13429850429024956898,
85     9901753960477271766,  9731501992702612259,  5217575797614661659, 10311708346636548706, 15111747519735330483,
86     4353415295139137513,  1845293119018433391, 11952006873430493561,  3531972641585683893, 16852246477648409827,
87    15956854822143321380, 12314609993579474774, 16763911684844598963, 16392145690385382634,  1545507136970403756,
88    17771199061862790062, 12121348462972638971, 12613068545148305776,   954203144844315208,  1257976447679270605,
89     3664184785462160180,  2747964788443845091, 15895917007470512307, 15552935765724302120, 16366915862261682626,
90     8385468783684865323, 10745343827145102946,  2485742734157099909,   916246281077683950, 15214206653637466707,
91    12895483149474345798,  1079510114301747843, 10718876134480663664,  1259990987526807294,  8326303777037206221,
92    14104661172014248293, 15531278677382192198,  3874303698666230242,  3611366553819264523,  1358753803061653874,
93     1552102816982246938, 14492630642488100979, 15001394966632908727,  2273140352787320862, 17843678642369606172,
94     2903980458593894032, 16971437123015263604, 12969653681729206264,  3593636458822318001,  9719758956915223015,
95     7437601263394568346,  3327758049015164431, 17851524109089292731, 14769614194455139039,  8017093497335662337,
96    12026985381690317404,   739616144640253634, 15535375191850690266,  2418267053891303448, 15314073759564095878,
97    10333316143274529509, 16565481511572123421, 16317667579273275294, 13991958187675987741,  3753596784796798785,
98     9078249094693663275,  8459506356724650587, 12579909555010529099,  7827737296967050903,  5489801927693999341,
99    10995988997350541459, 14721747867313883304,  7915884580303296560,  4105766302083365910, 12455549072515054554,
100    13602111324515032467,  5205971628932290989,  5034622965420036444,  9134927878875794005, 11319873529597990213,
101    14815445109496752058,  2266601052460299470,  5696993487088103383,  6540200741841280242,  6631495948031875490,
102     5328340585170897740, 17897267040961463930,  9030000260502624168, 14285709137129830926, 12854071997824681544,
103    15408328651008978682,  1063314403033437073, 13765209628446252802,   242013711116865605,  4772374239432528212,
104     2515855479965038648,  5872624715703151235, 14237704570091006662,   678604024776645862, 12329607334079533339,
105    17570877682732917020,  2695443415284373666,  4312672841405514468,  6454343485137106900,  8425658828390111343,
106    16335501385875554899,  5551095603809016713, 11781094401885925035,  9395557946368382509,  9765123360948816956,
107    18107191819981188154, 16049267500594757404, 16349966108299794199,  1040405303135858246,  2366386386131378192,
108      223761048139910454, 15375217587047847934, 15231693398695187454, 12916726640254571028,  8878036960829635584,
109     1626201782473074365,  5758998126998248293, 18077917959300292758, 10585588923088536745, 15072345664541731497,
110     3559348759319842667, 12744591691872202375,  2388494115860283059,  6414691845696331748,  3069528498807764495,
111     8737958486926519702, 18059264986425101074,  3139684427605102737, 12378931902986734693,   410666675039477949,
112    12139894855769838924,  5780722552400398675,  7039346665375142557,  3020733445712569008,  2612305843503943561,
113    13651771214166527665, 16478681918975800939,   566088527565499576,  4715785502295754870,  6957318344287196220,
114    11645756868405128885, 13139951104358618000, 17650948583490040612, 18168787973649736637,  5486282999836125542,
115     6122201977153895166, 17324241605502052782, 10063523107521105867, 17537430712468011382, 10828407533637104262,
116    10294139354198325113, 12557151830240236401, 16673044307512640231, 10918020421896090419, 11077531235278014145,
117     5499571814940871256,  2334252435740638702, 18177461912527387031,  2000007376901262542,  7968425560071444214,
118     1472650787501520648,  3115849849651526279,  7980970700139577536, 12153253535907642097,  8109716914843248719,
119     3154976533165008908,  5553369513523832559, 10345792701798576501,  3677445364544507875, 10637177623943913351,
120     7380255087060498096, 14479400372337014801, 15381362583330700960,   204531043189704802, 13699106540959723942,
121     3817903465872254783, 10972364467110284934,  2701394334530963810,  2931625600749229147, 16428252083632828910,
122    11873166501966812913,  5566810080537233762,  7840617383807795056, 10699413880206684652, 18259119259617231436,
123    10332714341486317526, 10137911902863059694,   669146221352346842,  8373571610024623455, 10620002450820868661,
124    12220730820779815970,  5902974968095412898,  7931010481705150841, 16413777368097063650, 11273457888324769727,
125    13719113891065284171,  8327795098009702553, 10333342364827584837,  6202832891413866653,  9137034567886143162,
126    14514450826524340059,   473610156015331016,   813689571029117640, 13776316799690285717, 10429708855338427756,
127     8995290140880620858,  2320123852041754384,  8082864073645003641,  6961777411740398590, 10008644283003991179,
128     3239064015890722333, 16762634970725218787, 16467281536733948427, 10563290046315192938,  5108560603794851559,
129    15121667220761532906, 14155440077372845941, 10050536352394623377, 15474881667376037792,  3448088038819200619,
130     3692020001240358871,  6444847992258394902,  8687650838094264665,  3028124591188972359, 16945232313401161629,
131    15547830510283682816,  3982930188609442149, 14270781928849894661, 13768475593433447867, 13815150225221307677,
132     8502397232429564693,   718377350715476994,  7459266877697905475,  8353375565171101521,  7807281661994435472,
133    16924127046922196149, 10157812396471387805,  2519858716882670232,  7384148884750265792,  8077153156180046901,
134     3499231286164597752,  2700106282881469611, 14679824700835879737, 14188324938219126828,  3016120398601032793,
135    10858152824243889420,  9412371965669250534,  4857522662584941069,   984331743838900386,  4094160040294753142,
136     2368635764350388458, 15101240511397838657, 15584415763303953578,  7831857200208015446,  1952643641639729063,
137     4184323302594028609, 16795120381104846695,  3541559381538365280, 15408472870896842474,  5628362450757896366,
138    16277348886873708846, 12437047172652330846, 10172715019035948149,  1999700669649752791,  6217957085626135027,
139    11220551167830336823, 16478747645632411810,  5437280487207382147, 11382378739613087836, 15866932785489521505,
140     5502694314775516684, 16440179278067648435, 15510104554374162846, 15722061259110909195, 10760687291786964354,
141    10736868329920212671,  4166148127664495614, 14303518358120527892,  9122250801678898571, 10028508179936801946,
142      216630713752669403, 10655207865433859491,  4041437116174699233,  6280982262534375348,   297501356638818866,
143    13976146806363377485, 13752396481560145603, 11472199956603637419, 16393728429143900496, 14752844047515986640,
144     1524477318846038424,  6596889774254235440,  1591982099532234960,  8065146456116391065,  3964696017750868345,
145    17040425970526664920, 11511165586176539991,  3443401252003315103, 16314977947073778249, 16860120454903458341,
146     5370503221561340846, 15362920279125264094,  2822458124714999779, 14575378304387898337,  9689406052675046032,
147     2872149351415175149, 13019620945255883050, 14929026760148695825,  8503417349692327218,  9677798905341573754,
148      828949921821462483, 16110482368362750196, 15794218816553655671, 14942910774764855088, 12026350906243760195,
149    13610867176871462505, 18324536557697872582,  2658962269666727629,   327225403251576027,  9207535177029277544,
150     8744129291351887858,  6129603385168921503, 18385497655031085907, 13024478718952333892, 14547683159720717167,
151     5932119629366981711,   325385464632594563,  3559879386019806291,  6629264948665231298, 14358245326238118181,
152    15662449672706340765, 13975503159145803297,  3609534220891499022,  4224273587485638227,  9274084767162416370,
153    13156843921244091998, 18284750575626858789, 14664767920489118779, 11292057742031803221, 13919998707305829132,
154    14473305049457001422,  9696877879685767807,  1406758246007973837,  2429517644459056881, 14361215588101587430,
155    11386164476149757528, 10474116023593331839,  2921165656527786564, 15604610369733358953, 12955027028676000544,
156    10314281035410779907,  3167047178514709947,  1088721329408346700, 17930425515478182741,  7466411836095405617,
157    15534027454610690575, 10879629128927506091, 11502219301371200635, 13915106894453889418,  4226784327815861027,
158    12335222183627106346,  3648499746356007767, 18441388887898023393, 18117929843327093625,  4237736098094830438,
159    14229123019768296655,  3930112058127932690, 12663879236019645778,  9281161952002617309,  4978473890680876319,
160      845759387067546611,  1386164484606776333,  8008554770639925512, 11159581016793288971, 18065390393740782906,
161    17647985458967631018,  9092379465737744314,  2914678236848656327,  4376066698447630270, 16057186499919087528,
162     3031333261848790078,  2926746602873431597,  7931945763526885287,   147649915388326849, 15801792398814946230,
163     5265900391686545347, 16173686275871890830,  7562781050481886043,  5853506575839330404, 14957980734704564792,
164    10944286556353523404,  1783009880614150597,  9529762028588888983,   822992871011696119,  2130074274744257510,
165     8000279549284809219,  3514744284158856431,   128770032569293263,  3737367602618100572, 16364836605077998543,
166      783266423471782696,  4569418252658970391, 11093950688157406886, 14888808512267628166,  4217786261273670948,
167    17047486076688645713, 14133826721458860485, 17539744882220127106, 12394675039129853905,  5757634999463277090,
168     9621947619435861331,  1182210208559436772, 14603391040490913939, 17481976703660945893, 14063388816234683976,
169     2046622692581829572,  8294969799792017441,  5293778434844788058, 17976364049306763808,   399482430848083948,
170    16495545010129798933, 15241340958282367519,   989828753826900814, 17616558773874893537,  2471817920909589004,
171    11764082277667899978,  9618755269550400950,  1240014743757147125,  1887649378641563002,  1842982574728131416,
172    13243531042427194002,  7688268125537013927,  3080422097287486736,  2562894809975407783, 12428984115620094788,
173     1355581933694478148,  9895969242586224966,  8628445623963160889,  4298916726468199239, 12773165416305557280,
174     5240726258301567487,  4975412836403427561,  1842172398579595303,  7812151462958058676, 17974510987263071769,
175    14980707022065991200, 18294903201142729875, 12911672684850242753,  8979482998667235743, 16808468362384462073,
176     5981317232108359798, 12373702800369335100, 16119707581920094765,  2782738549717633602, 15454155188515389391,
177    16495638000603654629, 16348757069342790497,  7769562861984504567, 17504300515449231559,  5557710032938318996,
178    11846125204788401203, 13957316349928882624,  2738350683717432043, 15738068448047700954,  6224714837294524999,
179     6081930777706411111, 11366312928059597928,  4355315799925031482, 12393324728734964015, 15277140291994338591,
180     1406052433297386355, 15859448364509213398,  1672805458341158435,  2926095111610982994, 11056431822276774455,
181    12083767323511977430,  3296968762229741153, 12312076899982286460, 17769284994682227273, 15349428916826953443,
182     1056147296359223910, 18305757538706977431,  6214378374180465222, 14279648441175008454, 17791306410319136644,
183      956593013486324072,  2921235772936241950, 10002890515925652606, 10399654693663712506,  6446247931049971441,
184     6380465770144534958, 11439178472613251620, 10131486500045494660,  3692642123868351947, 10972816599561388940,
185     4931112976348785580,  8213967169213816566, 15336469859637867841, 15026830342847689383,  7524668622380765825,
186    17309937346758783807,   372780684412666438,  5642417144539399955, 18303842993081194577, 11085303253831702827,
187    15658163165983586950,  8517521928922081563, 16091186344159989860, 17614656488010863910,  4736067146481515156,
188    13449945221374241354, 17755469346196579408, 13300502638545717375,  6611828134763118043, 14177591906740276597,
189     9340430243077460347,  7499765399826404087,  3409518087967832469,  9013253864026602045,  4444307427984430192,
190     3729283608700519712, 13642048880719588383, 16486557958022946240,  2996465014991157904, 10020049344596426576,
191    12302485648009883778,  8492591321344423126, 17407986443716172520, 10530482934957373052, 15740662350540828750,
192     1790629986901049436,  6305948377669917188, 15092985352503125323,   928505047232899787, 14404651977039851607,
193     7564177565277805597,  3411236815351677870,  7752718145953236134, 12315979971311483798, 12477729506691004724,
194    14654956300924793305,  6689803038918974388,  1540738812233000153, 13508351811701989957, 15864432023192136053,
195     7990997967273843917,  7424300239290765161,    39585249496300263,  3877436595063283319, 10710642254398044448,
196     4653804418844456375,  1232267496410380283,  3690525514009038824, 15459770765077428485, 13240346522153894145,
197     5674964360688390624, 16973644653010587289, 15924280764204855206, 15196708627253442662, 17596174821341373274,
198    16196745023027393691,  6980050627399795351, 17582264380857746637, 18170372407506856324, 12108126025631005514,
199    15687749089493373169,  5814107289258228434,  9381977959648494876, 15895601183088112734, 16267869075651604263,
200    15228381979765852785, 11949618678312581999,  4545324791131029438,   582725409406225185, 15282520250746126790,
201    14758446535973412711,  7605613563088071833,  1111140641057375915,  5364843095234852245,   218335432181198977,
202     4891472444796201742,  4564628942836375772, 15500501278323817088,  4913946328556108657,  2684786251736694229,
203    12090498456116310122,  5310885782157038567,  5032788439854011923, 12627401038822728242, 11869662610126430929,
204    17650156853043540226, 12126672500118808436, 10437658933435653256, 13133995470637873311,  4601324715591152820,
205     1874350460376708372,  5808688626286061164, 13777088437302430376,  5018451954762213522,  2588296738534474754,
206     5503414509154170711,  5230497186769951796, 13261090710400573914,  8515217303152165705, 11074538219737365303,
207    15481562385740613213, 12705484409881007350, 14221931471178549498, 12905633420087112297, 17337759164357146506,
208    14081997515778175224, 17384320185513122939,  7131793076779216692, 17483217190312403109,   900692047897995877,
209    14723287313048560400,  6132094372965340305,  7572797575350925726, 12725160700431903514,   380860122911632449,
210     1900504978569024571,  8423729759529914138,  7305587201606052334, 12446871355267313320,  4615812356515386206,
211     3361817115406652303, 17690418922000878428, 14632214537567910559,  2709702289926174775,  3459675155951086144,
212     7788364399926538150, 16043992474431955950, 15830963823784930267,  4216893617835797954,   538159724689093771,
213    16029152738918251363, 14444848757576686696, 12941757045272633696, 10900480525147953314, 12547307449905859302,
214    16001571796892398181,   407942194622690676, 13873235372903944444, 18071603799493008777,  1015646077646778622,
215     9387605808959554815, 11566702442022019410,  7061722181092883183,  2629032108249254109,  5271820053177594520,
216    12640880742139693547, 10098688629735675775,  5716304472850923064,  3312674502353063071,  7295926377425759633,
217      833281439103466115, 16316743519466861667,  9912050326606348167, 11651133878100804242, 18026798122431692459,
218     6157758321723692663,  4856021830695749349,  7074321707293278978, 10748097797809573561,  2949954440753264783,
219     9813922580940661152,  9949237950172138336, 15643982711269455885, 16078663425810239127, 12508044395364228880,
220    12920301578340189344, 15368071871011048915,  1610400750626363239, 11994736084146033126,  6042574085746186088,
221     4154587549267685807, 15915752367312946034,  1191196620621769193,   467437822242538360,  2836463788873877488,
222    10476401302029164984,  1716169985450737419,  5327734953288310341,  3994170067185955262,   884431883768190063,
223    11019001754831208284, 14322807384384895215,   161011537360955545,  1466223959660131656,  5227048585229497539,
224    12410731857504225031,  2142243279080761103, 17682826799106851430,  1792612570704179953, 14727410295243056025,
225     1459567192481221274,  5669760721687603135, 17507918443756456845, 10354471145847018200, 10362475129248202288,
226    13143844410150939443,  6861184673150072028, 18396524361124732580,   543906666394301875, 12476817828199026728,
227    11853496871128122868, 12747674713108891748,  7986179867749890282,  9158195177777627533,  2217320706811118570,
228     8631389005200569973,  5538133061362648855,  3369942850878700758,  7813559982698427184,   509051590411815948,
229    10197035660403006684, 13004818533162292132,  9831652587047067687,  7619315254749630976,   994412663058993407
230  ) :
231  (  # 32-bit randoms
232    1067595299,  955945823,  477289528, 4107218783, 4228976476,
233    3344332714, 3355579695,  227628506,  810200273, 2591290167,
234    2560260675, 3242736208,  646746669, 1479517882, 4245472273,
235    1143372638, 3863670494, 3221021970, 1773610557, 1138697238,
236    1421897700, 1269916527, 2859934041, 1764463362, 3874892047,
237    3965319921,   72549643, 2383988930, 2600218693, 3237492380,
238    2792901476,  725331109,  605841842,  271258942,  715137098,
239    3297999536, 1322965544, 4229579109, 1395091102, 3735697720,
240    2101727825, 3730287744, 2950434330, 1661921839, 2895579582,
241    2370511479, 1004092106, 2247096681, 2111242379, 3237345263,
242    4082424759,  219785033, 2454039889, 3709582971,  835606218,
243    2411949883, 2735205030,  756421180, 2175209704, 1873865952,
244    2762534237, 4161807854, 3351099340,  181129879, 3269891896,
245     776029799, 2218161979, 3001745796, 1866825872, 2133627728,
246      34862734, 1191934573, 3102311354, 2916517763, 1012402762,
247    2184831317, 4257399449, 2899497138, 3818095062, 3030756734,
248    1282161629,  420003642, 2326421477, 2741455717, 1278020671,
249    3744179621,  271777016, 2626330018, 2560563991, 3055977700,
250    4233527566, 1228397661, 3595579322, 1077915006, 2395931898,
251    1851927286, 3013683506, 1999971931, 3006888962, 1049781534,
252    1488758959, 3491776230,  104418065, 2448267297, 3075614115,
253    3872332600,  891912190, 3936547759, 2269180963, 2633455084,
254    1047636807, 2604612377, 2709305729, 1952216715,  207593580,
255    2849898034,  670771757, 2210471108,  467711165,  263046873,
256    3569667915, 1042291111, 3863517079, 1464270005, 2758321352,
257    3790799816, 2301278724, 3106281430,    7974801, 2792461636,
258     555991332,  621766759, 1322453093,  853629228,  686962251,
259    1455120532,  957753161, 1802033300, 1021534190, 3486047311,
260    1902128914, 3701138056, 4176424663, 1795608698,  560858864,
261    3737752754, 3141170998, 1553553385, 3367807274,  711546358,
262    2475125503,  262969859,  251416325, 2980076994, 1806565895,
263     969527843, 3529327173, 2736343040, 2987196734, 1649016367,
264    2206175811, 3048174801, 3662503553, 3138851612, 2660143804,
265    1663017612, 1816683231,  411916003, 3887461314, 2347044079,
266    1015311755, 1203592432, 2170947766, 2569420716,  813872093,
267    1105387678, 1431142475,  220570551, 4243632715, 4179591855,
268    2607469131, 3090613241,  282341803, 1734241730, 1391822177,
269    1001254810,  827927915, 1886687171, 3935097347, 2631788714,
270    3905163266,  110554195, 2447955646, 3717202975, 3304793075,
271    3739614479, 3059127468,  953919171, 2590123714, 1132511021,
272    3795593679, 2788030429,  982155079, 3472349556,  859942552,
273    2681007391, 2299624053,  647443547,  233600422,  608168955,
274    3689327453, 1849778220, 1608438222, 3968158357, 2692977776,
275    2851872572,  246750393, 3582818628, 3329652309, 4036366910,
276    1012970930,  950780808, 3959768744, 2538550045,  191422718,
277    2658142375, 3276369011, 2927737484, 1234200027, 1920815603,
278    3536074689, 1535612501, 2184142071, 3276955054,  428488088,
279    2378411984, 4059769550, 3913744741, 2732139246,   64369859,
280    3755670074,  842839565, 2819894466, 2414718973, 1010060670,
281    1839715346, 2410311136,  152774329, 3485009480, 4102101512,
282    2852724304,  879944024, 1785007662, 2748284463, 1354768064,
283    3267784736, 2269127717, 3001240761, 3179796763,  895723219,
284     865924942, 4291570937,   89355264, 1471026971, 4114180745,
285    3201939751, 2867476999, 2460866060, 3603874571, 2238880432,
286    3308416168, 2072246611, 2755653839, 3773737248, 1709066580,
287    4282731467, 2746170170, 2832568330,  433439009, 3175778732,
288      26248366, 2551382801,  183214346, 3893339516, 1928168445,
289    1337157619, 3429096554, 3275170900, 1782047316, 4264403756,
290    1876594403, 4289659572, 3223834894, 1728705513, 4068244734,
291    2867840287, 1147798696,  302879820, 1730407747, 1923824407,
292    1180597908, 1569786639,  198796327,  560793173, 2107345620,
293    2705990316, 3448772106, 3678374155,  758635715,  884524671,
294     486356516, 1774865603, 3881226226, 2635213607, 1181121587,
295    1508809820, 3178988241, 1594193633, 1235154121,  326117244,
296    2304031425,  937054774, 2687415945, 3192389340, 2003740439,
297    1823766188, 2759543402,   10067710, 1533252662, 4132494984,
298      82378136,  420615890, 3467563163,  541562091, 3535949864,
299    2277319197, 3330822853, 3215654174, 4113831979, 4204996991,
300    2162248333, 3255093522, 2219088909, 2978279037,  255818579,
301    2859348628, 3097280311, 2569721123, 1861951120, 2907080079,
302    2719467166,  998319094, 2521935127, 2404125338,  259456032,
303    2086860995, 1839848496, 1893547357, 2527997525, 1489393124,
304    2860855349,   76448234, 2264934035,  744914583, 2586791259,
305    1385380501,   66529922, 1819103258, 1899300332, 2098173828,
306    1793831094,  276463159,  360132945, 4178212058,  595015228,
307     177071838, 2800080290, 1573557746, 1548998935,  378454223,
308    1460534296, 1116274283, 3112385063, 3709761796,  827999348,
309    3580042847, 1913901014,  614021289, 4278528023, 1905177404,
310      45407939, 3298183234, 1184848810, 3644926330, 3923635459,
311    1627046213, 3677876759,  969772772, 1160524753, 1522441192,
312     452369933, 1527502551,  832490847, 1003299676, 1071381111,
313    2891255476,  973747308, 4086897108, 1847554542, 3895651598,
314    2227820339, 1621250941, 2881344691, 3583565821, 3510404498,
315     849362119,  862871471,  797858058, 2867774932, 2821282612,
316    3272403146, 3997979905,  209178708, 1805135652,    6783381,
317    2823361423,  792580494, 4263749770,  776439581, 3798193823,
318    2853444094, 2729507474, 1071873341, 1329010206, 1289336450,
319    3327680758, 2011491779,   80157208,  922428856, 1158943220,
320    1667230961, 2461022820, 2608845159,  387516115, 3345351910,
321    1495629111, 4098154157, 3156649613, 3525698599, 4134908037,
322     446713264, 2137537399, 3617403512,  813966752, 1157943946,
323    3734692965, 1680301658, 3180398473, 3509854711, 2228114612,
324    1008102291,  486805123,  863791847, 3189125290, 1050308116,
325    3777341526, 4291726501,  844061465, 1347461791, 2826481581,
326     745465012, 2055805750, 4260209475, 2386693097, 2980646741,
327     447229436, 2077782664, 1232942813, 4023002732, 1399011509,
328    3140569849, 2579909222, 3794857471,  900758066, 2887199683,
329    1720257997, 3367494931, 2668921229,  955539029, 3818726432,
330    1105704962, 3889207255, 2277369307, 2746484505, 1761846513,
331    2413916784, 2685127085, 4240257943, 1166726899, 4215215715,
332    3082092067, 3960461946, 1663304043, 2087473241, 4162589986,
333    2507310778, 1579665506,  767234210,  970676017,  492207530,
334    1441679602, 1314785090, 3262202570, 3417091742, 1561989210,
335    3011406780, 1146609202, 3262321040, 1374872171, 1634688712,
336    1280458888, 2230023982,  419323804, 3262899800,   39783310,
337    1641619040, 1700368658, 2207946628, 2571300939, 2424079766,
338     780290914, 2715195096, 3390957695,  163151474, 2309534542,
339    1860018424,  555755123,  280320104, 1604831083, 2713022383,
340    1728987441, 3639955502,  623065489, 3828630947, 4275479050,
341    3516347383, 2343951195, 2430677756,  635534992, 3868699749,
342     808442435, 3070644069, 4282166003, 2093181383, 2023555632,
343    1568662086, 3422372620, 4134522350, 3016979543, 3259320234,
344    2888030729, 3185253876, 4258779643, 1267304371, 1022517473,
345     815943045,  929020012, 2995251018, 3371283296, 3608029049,
346    2018485115,  122123397, 2810669150, 1411365618, 1238391329,
347    1186786476, 3155969091, 2242941310, 1765554882,  279121160,
348    4279838515, 1641578514, 3796324015,   13351065,  103516986,
349    1609694427,  551411743, 2493771609, 1316337047, 3932650856,
350    4189700203,  463397996, 2937735066, 1855616529, 2626847990,
351      55091862, 3823351211,  753448970, 4045045500, 1274127772,
352    1124182256,   92039808, 2126345552,  425973257,  386287896,
353    2589870191, 1987762798, 4084826973, 2172456685, 3366583455,
354    3602966653, 2378803535, 2901764433, 3716929006, 3710159000,
355    2653449155, 3469742630, 3096444476, 3932564653, 2595257433,
356     318974657, 3146202484,  853571438,  144400272, 3768408841,
357     782634401, 2161109003,  570039522, 1886241521,   14249488,
358    2230804228, 1604941699, 3928713335, 3921942509, 2155806892,
359     134366254,  430507376, 1924011722,  276713377,  196481886,
360    3614810992, 1610021185, 1785757066,  851346168, 3761148643,
361    2918835642, 3364422385, 3012284466, 3735958851, 2643153892,
362    3778608231, 1164289832,  205853021, 2876112231, 3503398282,
363    3078397001, 3472037921, 1748894853, 2740861475,  316056182,
364    1660426908,  168885906,  956005527, 3984354789,  566521563,
365    1001109523, 1216710575, 2952284757, 3834433081, 3842608301,
366    2467352408, 3974441264, 3256601745, 1409353924, 1329904859,
367    2307560293, 3125217879, 3622920184, 3832785684, 3882365951,
368    2308537115, 2659155028, 1450441945, 3532257603, 3186324194,
369    1225603425, 1124246549,  175808705, 3009142319, 2796710159,
370    3651990107,  160762750, 1902254979, 1698648476, 1134980669,
371     497144426, 3302689335, 4057485630, 3603530763, 4087252587,
372     427812652,  286876201,  823134128, 1627554964, 3745564327,
373    2589226092, 4202024494,   62878473, 3275585894, 3987124064,
374    2791777159, 1916869511, 2585861905, 1375038919, 1403421920,
375      60249114, 3811870450, 3021498009, 2612993202,  528933105,
376    2757361321, 3341402964, 2621861700,  273128190, 4015252178,
377    3094781002, 1621621288, 2337611177, 1796718448, 1258965619,
378    4241913140, 2138560392, 3022190223, 4174180924,  450094611,
379    3274724580,  617150026, 2704660665, 1469700689, 1341616587,
380     356715071, 1188789960, 2278869135, 1766569160, 2795896635,
381      57824704, 2893496380, 1235723989, 1630694347, 3927960522,
382     428891364, 1814070806, 2287999787, 4125941184, 3968103889,
383    3548724050, 1025597707, 1404281500, 2002212197,   92429143,
384    2313943944, 2403086080, 3006180634, 3561981764, 1671860914,
385    1768520622, 1803542985,  844848113, 3006139921, 1410888995,
386    1157749833, 2125704913, 1789979528, 1799263423,  741157179,
387    2405862309,  767040434, 2655241390, 3663420179, 2172009096,
388    2511931187, 1680542666,  231857466, 1154981000,  157168255,
389    1454112128, 3505872099, 1929775046, 2309422350, 2143329496,
390    2960716902,  407610648, 2938108129, 2581749599,  538837155,
391    2342628867,  430543915,  740188568, 1937713272, 3315215132,
392    2085587024, 4030765687,  766054429, 3517641839,  689721775,
393    1294158986, 1753287754, 4202601348, 1974852792,   33459103,
394    3568087535, 3144677435, 1686130825, 4134943013, 3005738435,
395    3599293386,  426570142,  754104406, 3660892564, 1964545167,
396     829466833,  821587464, 1746693036, 1006492428, 1595312919,
397    1256599985, 1024482560, 1897312280, 2902903201,  691790057,
398    1037515867, 3176831208, 1968401055, 2173506824, 1089055278,
399    1748401123, 2941380082,  968412354, 1818753861, 2973200866,
400    3875951774, 1119354008, 3988604139, 1647155589, 2232450826,
401    3486058011, 3655784043, 3759258462,  847163678, 1082052057,
402     989516446, 2871541755, 3196311070, 3929963078,  658187585,
403    3664944641, 2175149170, 2203709147, 2756014689, 2456473919,
404    3890267390, 1293787864, 2830347984, 3059280931, 4158802520,
405    1561677400, 2586570938,  783570352, 1355506163,   31495586,
406    3789437343, 3340549429, 2092501630,  896419368,  671715824,
407    3530450081, 3603554138, 1055991716, 3442308219, 1499434728,
408    3130288473, 3639507000,   17769680, 2259741420,  487032199,
409    4227143402, 3693771256, 1880482820, 3924810796,  381462353,
410    4017855991, 2452034943, 2736680833, 2209866385, 2128986379,
411     437874044,  595759426,  641721026, 1636065708, 3899136933,
412     629879088, 3591174506,  351984326, 2638783544, 2348444281,
413    2341604660, 2123933692,  143443325, 1525942256,  364660499,
414     599149312,  939093251, 1523003209,  106601097,  376589484,
415    1346282236, 1297387043,  764598052, 3741218111,  933457002,
416    1886424424, 3219631016,  525405256, 3014235619,  323149677,
417    2038881721, 4100129043, 2851715101, 2984028078, 1888574695,
418    2014194741, 3515193880, 4180573530, 3461824363, 2641995497,
419    3179230245, 2902294983, 2217320456, 4040852155, 1784656905,
420    3311906931,   87498458, 2752971818, 2635474297, 2831215366,
421    3682231106, 2920043893, 3772929704, 2816374944,  309949752,
422    2383758854,  154870719,  385111597, 1191604312, 1840700563,
423     872191186, 2925548701, 1310412747, 2102066999, 1504727249,
424    3574298750, 1191230036, 3330575266, 3180292097, 3539347721,
425     681369118, 3305125752, 3648233597,  950049240, 4173257693,
426    1760124957,  512151405,  681175196,  580563018, 1169662867,
427    4015033554, 2687781101,  699691603, 2673494188, 1137221356,
428     123599888,  472658308, 1053598179, 1012713758, 3481064843,
429    3759461013, 3981457956, 3830587662, 1877191791, 3650996736,
430     988064871, 3515461600, 4089077232, 2225147448, 1249609188,
431    2643151863, 3896204135, 2416995901, 1397735321, 3460025646);
432
433# Known test values for rand()
434my @base_doub = ($Config{'uvsize'} == 8) ?
435    # 64-bit randoms
436  qw/
437    0.35252031 0.51052342 0.79771733 0.39300273 0.27216673
438    0.72151068 0.43144703 0.38522290 0.20270676 0.58227313
439    0.80812143 0.83767297 0.92401619 0.84065425 0.00852052
440    0.13975395 0.35250930 0.71196972 0.14627395 0.17775331
441    0.61046382 0.49623272 0.23292425 0.25038837 0.04380664
442    0.43275994 0.74540936 0.33830700 0.68832616 0.68744230
443    0.63626548 0.85932936 0.37089670 0.50756304 0.69925960
444    0.83481025 0.09053196 0.09523253 0.17783108 0.78027239
445    0.70071054 0.51879252 0.83027285 0.92895011 0.72144803
446    0.18868644 0.83655674 0.20358945 0.99852143 0.88340103
447    0.46729949 0.96993433 0.00162682 0.46829774 0.59080423
448    0.54921999 0.42516462 0.54952196 0.99534722 0.04473888
449    0.71139235 0.91881407 0.33781561 0.45746234 0.78292126
450    0.69206723 0.66175448 0.07091147 0.18179208 0.38168454
451    0.38819527 0.42452711 0.22732724 0.16191307 0.36842667
452    0.13060083 0.68833248 0.60498705 0.19195304 0.26628584
453    0.17030858 0.23892426 0.38430236 0.28034283 0.76069020
454    0.21560653 0.78101667 0.90847812 0.06467974 0.18487868
455    0.23570471 0.29475460 0.65563767 0.10066446 0.57272419
456    0.88731391 0.60650995 0.96346079 0.32940100 0.29977746
457    0.03798193 0.18026822 0.22402746 0.45480119 0.98114604
458    0.25800668 0.94362433 0.17901062 0.36019313 0.45933644
459    0.68309457 0.28175454 0.00774729 0.77054527 0.99723413
460    0.59807532 0.10294164 0.32429228 0.54928986 0.18410980
461    0.08441555 0.14230333 0.58892064 0.94030475 0.35378784
462    0.77584320 0.71222448 0.83565208 0.47309248 0.23810761
463    0.74408520 0.08891527 0.09729786 0.38377368 0.05092308
464    0.69065638 0.10449489 0.45050670 0.92209534 0.80083714
465    0.27902692 0.26897142 0.50650468 0.80111472 0.54590012
466    0.96406097 0.63779553 0.81054357 0.75369248 0.47473037
467    0.89100315 0.89395984 0.09985519 0.34087631 0.22293557
468    0.24375510 0.31764191 0.04076993 0.06160830 0.41333434
469    0.11883030 0.04548820 0.01008040 0.25336184 0.07325432
470    0.49860151 0.07148695 0.89483338 0.87054457 0.15116809
471    0.59650469 0.47487776 0.43490298 0.36684681 0.16470796
472    0.76865078 0.42920071 0.20545481 0.87615922 0.80332404
473    0.36462506 0.49571309 0.51904488 0.15534589 0.43719893
474    0.16562157 0.37290862 0.91842631 0.21310523 0.87849154
475    0.18532269 0.81713354 0.52182344 0.51845619 0.96261204
476    0.18758718 0.68897600 0.61484764 0.46752993 0.05865458
477    0.11614359 0.90386866 0.45781805 0.70649579 0.50917048
478    0.21210656 0.97818608 0.00788342 0.61375222 0.67366318
479    0.24197878 0.66177985 0.10463932 0.67390799 0.50025262
480    0.88332650 0.77966851 0.13403622 0.54357114 0.97664854
481    0.06540961 0.24013176 0.67234032 0.91347883 0.35486839
482    0.87207865 0.43036581 0.23652488 0.81238450 0.72058432
483    0.42239916 0.80265764 0.03552838 0.61939480 0.50972420
484    0.21053832 0.59952743 0.36821802 0.45659617 0.12529468
485    0.76941623 0.99878168 0.08602783 0.81825937 0.39350710
486    0.86090923 0.36090230 0.75628888 0.45036982 0.44602266
487    0.20595631 0.62241953 0.36777732 0.47523727 0.50248178
488    0.73570362 0.48237781 0.45590948 0.73580783 0.96403851
489    0.94586342 0.48819868 0.48102038 0.94618182 0.90279924
490    0.78396650 0.85182389 0.92149394 0.32679198 0.83554856
491    0.28320609 0.34598409 0.82090005 0.40177958 0.38888785
492    0.77873931 0.23297931 0.75329335 0.30770340 0.71417540
493    0.68939065 0.36577776 0.50784857 0.50928090 0.02552055
494    0.85999075 0.26692089 0.01402799 0.67550392 0.48305605
495    0.74608351 0.63408891 0.58904230 0.44337996 0.42174728
496    0.74041679 0.72719148 0.19801992 0.66263633 0.10381594
497    0.32818760 0.68369661 0.56076212 0.68681921 0.91616269
498    0.39836106 0.39685027 0.97507945 0.91010563 0.27447360
499    0.95538357 0.76758522 0.60091060 0.37734461 0.82948248
500    0.06598078 0.50147615 0.08417763 0.18910044 0.51661735
501    0.55011011 0.64888175 0.82986845 0.15126656 0.92649390
502    0.25494941 0.73275293 0.94184393 0.84755226 0.45921936
503    0.72934054 0.43722403 0.34305596 0.10827860 0.29026676
504    0.01935431 0.46668573 0.83247509 0.26349603 0.01938542
505    0.43222250 0.18109983 0.29337450 0.16721917 0.94751650
506    0.67795254 0.56666228 0.20699452 0.23247262 0.19138610
507    0.73495506 0.85893600 0.83411526 0.93689655 0.91804752
508    0.99352333 0.03207550 0.28386071 0.48029543 0.18736013
509    0.31736452 0.72542230 0.57530912 0.04229918 0.84798296
510    0.21886935 0.98655615 0.52243102 0.22611020 0.42975741
511    0.21726739 0.10912048 0.96684473 0.01092456 0.12461901
512    0.57989070 0.39848707 0.06330277 0.62826828 0.01159081
513    0.23157320 0.64690912 0.44876902 0.04463930 0.18933780
514    0.21284518 0.61363480 0.67144845 0.38625586 0.75719122
515    0.40361050 0.26708873 0.54534727 0.90174015 0.58654140
516    0.44885346 0.35505544 0.65317830 0.26074572 0.39472912
517    0.54366914 0.75020660 0.76113614 0.24595582 0.03941247
518    0.60356153 0.23615721 0.01603475 0.72432457 0.39837424
519    0.04195329 0.81561058 0.34208440 0.00513953 0.92826234
520    0.11410393 0.86692030 0.25238726 0.98258626 0.53353856
521    0.72269001 0.71850984 0.66829681 0.03540769 0.01676450
522    0.23557835 0.78758497 0.85969589 0.14673207 0.28013860
523    0.17796942 0.69924087 0.44663597 0.62112513 0.44079883
524    0.48995231 0.18411497 0.18440877 0.74016388 0.28845694
525    0.22969080 0.76851164 0.15551473 0.28980810 0.40906710
526    0.47619039 0.72611392 0.55802939 0.69365597 0.85736313
527    0.83343150 0.21324760 0.45327806 0.33053855 0.98198279
528    0.53279389 0.76877035 0.20548656 0.37065042 0.59026910
529    0.67418036 0.23585843 0.98156397 0.27849804 0.56198954
530    0.68752287 0.30073445 0.69348664 0.72515585 0.40629047
531    0.09320027 0.24334978 0.91407662 0.97226538 0.33904970
532    0.01717092 0.60155725 0.03001652 0.50979706 0.80531036
533    0.17450719 0.84984399 0.00498130 0.51636405 0.14080868
534    0.62289701 0.07853030 0.70567541 0.79844050 0.63766566
535    0.03559031 0.40994535 0.08423996 0.00389626 0.50608347
536    0.19622681 0.90537903 0.75458034 0.75102094 0.81491673
537    0.92925931 0.38074332 0.54817053 0.72593246 0.02146791
538    0.57990460 0.87921074 0.59913886 0.66726893 0.24269154
539    0.73344575 0.71826052 0.92313935 0.05212996 0.93771536
540    0.69489385 0.57581887 0.48106155 0.06808800 0.33633940
541    0.69142320 0.46566781 0.70654143 0.16541368 0.76257631
542    0.82777900 0.62958327 0.34757935 0.10891487 0.79912728
543    0.01156543 0.23111261 0.58535640 0.87461956 0.21723454
544    0.80409615 0.33169686 0.72800785 0.31218099 0.13729737
545    0.41637635 0.01234597 0.58313811 0.66746028 0.05105595
546    0.14930937 0.56044864 0.76196851 0.98800104 0.37075949
547    0.88740864 0.40697115 0.96598278 0.86013661 0.85386784
548    0.23986516 0.39027464 0.59593927 0.00161530 0.31768197
549    0.65702729 0.66461914 0.62937471 0.92120758 0.87578958
550    0.37539860 0.59182615 0.12092214 0.55130437 0.86365117
551    0.38725162 0.28757657 0.42803199 0.39014405 0.50253853
552    0.85306128 0.92018995 0.71421618 0.54236780 0.96221157
553    0.22956898 0.96519876 0.06694102 0.11915854 0.01354308
554    0.24720070 0.71671739 0.00604305 0.65012352 0.71151390
555    0.46616159 0.99228224 0.20684576 0.62941006 0.84535326
556    0.30678993 0.55264568 0.50094784 0.39409122 0.15479416
557    0.36536318 0.51925656 0.65567178 0.67255519 0.55089659
558    0.42194295 0.27172413 0.79540954 0.71594806 0.88372598
559    0.29179452 0.66411306 0.57064687 0.42494633 0.73389255
560    0.12097313 0.53338622 0.38493233 0.79348021 0.01851341
561    0.58594454 0.88396240 0.04410730 0.67419924 0.62770011
562    0.64644200 0.40335135 0.17952644 0.55564678 0.56643922
563    0.37715015 0.87092180 0.56726159 0.34011210 0.13661819
564    0.11474177 0.93930097 0.48549077 0.28484289 0.13374371
565    0.40966056 0.73662873 0.37355323 0.65216092 0.27372469
566    0.56032082 0.14882684 0.95462890 0.17090266 0.92374766
567    0.98368259 0.68448367 0.02872548 0.68598279 0.04601084
568    0.17170501 0.08906644 0.23730372 0.02929037 0.38566261
569    0.68957569 0.53021050 0.44200157 0.32085701 0.72520053
570    0.17454174 0.19676599 0.88243877 0.87030228 0.15124486
571    0.78670160 0.51731632 0.56674531 0.20910664 0.84962640
572    0.05220467 0.91783159 0.19138968 0.68126378 0.79574471
573    0.14910848 0.28030331 0.98067264 0.31263980 0.67448964
574    0.69266650 0.40033551 0.22789781 0.78317066 0.55815261
575    0.11247054 0.47337901 0.46310033 0.53192452 0.56164078
576    0.41750378 0.43880622 0.69739327 0.11092778 0.18333765
577    0.67222441 0.12789170 0.88316806 0.37891271 0.14935268
578    0.64522185 0.93902079 0.62481092 0.21794927 0.71535266
579    0.62169579 0.65147153 0.01411645 0.96413465 0.01021578
580    0.50605180 0.51595053 0.03308040 0.01497870 0.07809658
581    0.35743383 0.58079701 0.11785557 0.89568677 0.38793964
582    0.37117709 0.13994133 0.11032813 0.99998594 0.06695042
583    0.79774786 0.11093584 0.23879095 0.85918615 0.16109636
584    0.63479696 0.75023359 0.29061187 0.53764772 0.30652318
585    0.51387302 0.81620973 0.82433610 0.18302488 0.79048957
586    0.07598187 0.27887732 0.37061042 0.36441016 0.93736882
587    0.77480946 0.02269132 0.40309874 0.16427650 0.13969296
588    0.57605029 0.00242426 0.56626691 0.84390990 0.87455806
589    0.12321023 0.87561663 0.60431578 0.35880839 0.50426282
590    0.50697689 0.06631164 0.14976092 0.89356018 0.91473662
591    0.04235237 0.50073724 0.75969690 0.91743994 0.79352335
592    0.58078351 0.91819984 0.53520520 0.18267367 0.05608828
593    0.68315721 0.27264599 0.41245634 0.69706222 0.69666203
594    0.08967342 0.64081905 0.22576796 0.69315628 0.53981640
595    0.76059129 0.56712344 0.94318621 0.44081094 0.31699284
596    0.29477911 0.80069824 0.28366921 0.96718081 0.85345644
597    0.11681215 0.47600710 0.33448255 0.31217271 0.35469241
598    0.59511650 0.49583692 0.48922303 0.20215259 0.60159380
599    0.17882055 0.77601258 0.71020391 0.41833503 0.71522856
600    0.87534517 0.43703394 0.43056077 0.64828071 0.43069441
601    0.39356849 0.32063367 0.92788963 0.16878266 0.56762591
602    0.56042446 0.84958464 0.79408949 0.08220340 0.13922856
603    0.82529019 0.27134959 0.00278080 0.66192389 0.01782933
604    0.95404763 0.50787645 0.85320521 0.83690362 0.83771227
605    0.46268665 0.31716742 0.01716647 0.68264674 0.01789888
606    0.30446846 0.14942271 0.26982182 0.74933947 0.50394161
607    0.78444542 0.40009256 0.40333422 0.16627342 0.01898760
608    0.04221829 0.77960213 0.66230976 0.56015996 0.49535426
609    0.38536259 0.40406773 0.99930568 0.00857945 0.16158390
610    0.64805163 0.20237524 0.59106326 0.76968277 0.96887042
611    0.29264851 0.97373775 0.16767633 0.33014482 0.27426548
612    0.10947014 0.75920652 0.37757457 0.13125207 0.00826451
613    0.96684342 0.69362226 0.22763554 0.20717541 0.42112268
614    0.22803038 0.33481806 0.14968742 0.71598558 0.55126711
615    0.64518015 0.65170197 0.89103003 0.72728361 0.24485454
616    0.09410780 0.79818029 0.54212409 0.17790462 0.64442619
617    0.62193511 0.51193256 0.02848781 0.05719604 0.45795152
618    0.03219332 0.28310254 0.85746127 0.64890240 0.20658356
619    0.50946422 0.80432490 0.08354468 0.09222723 0.67455943
620    0.44638771 0.76366629 0.99677267 0.89311242 0.11627279
621    0.09181302 0.44767077 0.16448724 0.26005539 0.28670391
622    0.52465703 0.43598116 0.41869096 0.98043420 0.01497272
623    0.51791571 0.61825308 0.85503436 0.63025655 0.02719292
624    0.09865668 0.30321729 0.56998039 0.14946350 0.64823918
625    0.19931639 0.14623555 0.54169913 0.68944135 0.73551005
626    0.46743658 0.04109096 0.26625801 0.09537298 0.98207890
627    0.58109721 0.70793680 0.84379365 0.42774726 0.12653597
628    0.08566633 0.53366781 0.33960092 0.11036831 0.84464510
629    0.16493476 0.92493443 0.87640673 0.52727644 0.57181349
630    0.65071340 0.00978637 0.31700693 0.69148222 0.85063311
631    0.06781819 0.30794534 0.65541667 0.16400484 0.06886223
632    0.96227205 0.09633060 0.34513153 0.31013900 0.78165882
633    0.39583699 0.86327936 0.69269199 0.11016575 0.67358419
634    0.81775427 0.50052824 0.30068582 0.16606837 0.62243724
635    0.47863741 0.68796498 0.31526949 0.41180883 0.23022147
636    0.82342139 0.83003381 0.53571829 0.41081533 0.48600142/
637  :
638    # 32-bit randoms
639  qw/
640    0.76275443 0.99000644 0.98670464 0.10143112 0.27933125
641    0.69867227 0.94218740 0.03427201 0.78842173 0.28180608
642    0.92179002 0.20785655 0.54534773 0.69644020 0.38107718
643    0.23978165 0.65286910 0.07514568 0.22765211 0.94872929
644    0.74557914 0.62664415 0.54708246 0.90959343 0.42043116
645    0.86334511 0.19189126 0.14718544 0.70259889 0.63426346
646    0.77408121 0.04531601 0.04605807 0.88595519 0.69398270
647    0.05377184 0.61711170 0.05565708 0.10133577 0.41500776
648    0.91810699 0.22320679 0.23353705 0.92871862 0.98897234
649    0.19786706 0.80558809 0.06961067 0.55840445 0.90479405
650    0.63288060 0.95009721 0.54948447 0.20645042 0.45000959
651    0.87050869 0.70806991 0.19406895 0.79286390 0.49332866
652    0.78483914 0.75145146 0.12341941 0.42030252 0.16728160
653    0.59906494 0.37575460 0.97815160 0.39815952 0.43595080
654    0.04952478 0.33917805 0.76509902 0.61034321 0.90654701
655    0.92915732 0.85365931 0.18812377 0.65913428 0.28814566
656    0.59476081 0.27835931 0.60722542 0.68310435 0.69387186
657    0.03699800 0.65897714 0.17527003 0.02889304 0.86777366
658    0.12352068 0.91439461 0.32022990 0.44445731 0.34903686
659    0.74639273 0.65918367 0.92492794 0.31872642 0.77749724
660    0.85413832 0.76385624 0.32744211 0.91326300 0.27458185
661    0.22190155 0.19865383 0.31227402 0.85321225 0.84243342
662    0.78544200 0.71854080 0.92503892 0.82703064 0.88306297
663    0.47284073 0.70059042 0.48003761 0.38671694 0.60465770
664    0.41747204 0.47163243 0.72750808 0.65830223 0.10955369
665    0.64215401 0.23456345 0.95944940 0.72822249 0.40888451
666    0.69980355 0.26677428 0.57333635 0.39791582 0.85377858
667    0.76962816 0.72004885 0.90903087 0.51376506 0.37732665
668    0.12691640 0.71249738 0.81217908 0.37037313 0.32772374
669    0.14238259 0.05614811 0.74363008 0.39773267 0.94859135
670    0.31452454 0.11730313 0.62962618 0.33334237 0.45547255
671    0.10089665 0.56550662 0.60539371 0.16027624 0.13245301
672    0.60959939 0.04671662 0.99356286 0.57660859 0.40269560
673    0.45274629 0.06699735 0.85064246 0.87742744 0.54508392
674    0.87242982 0.29321385 0.67660627 0.68230715 0.79052073
675    0.48592054 0.25186266 0.93769755 0.28565487 0.47219067
676    0.99054882 0.13155240 0.47110470 0.98556600 0.84397623
677    0.12875246 0.90953202 0.49129015 0.23792727 0.79481194
678    0.44337770 0.96564297 0.67749118 0.55684872 0.27286897
679    0.79538393 0.61965356 0.22487929 0.02226018 0.49248200
680    0.42247006 0.91797788 0.99250134 0.23449967 0.52531508
681    0.10246337 0.78685622 0.34310922 0.89892996 0.40454552
682    0.68608407 0.30752487 0.83601319 0.54956031 0.63777550
683    0.82199797 0.24890696 0.48801123 0.48661910 0.51223987
684    0.32969635 0.31075073 0.21393155 0.73453207 0.15565705
685    0.58584522 0.28976728 0.97621478 0.61498701 0.23891470
686    0.28518540 0.46809591 0.18371914 0.37597910 0.13492176
687    0.66849449 0.82811466 0.56240330 0.37548956 0.27562998
688    0.27521910 0.74096121 0.77176757 0.13748143 0.99747138
689    0.92504502 0.09175241 0.21389176 0.21766512 0.31183245
690    0.23271221 0.21207367 0.57903312 0.77523344 0.13242613
691    0.31037988 0.01204835 0.71652949 0.84487594 0.14982178
692    0.57423142 0.45677888 0.48420169 0.53465428 0.52667473
693    0.46880526 0.49849733 0.05670710 0.79022476 0.03872047
694    0.21697212 0.20443086 0.28949326 0.81678186 0.87629474
695    0.92297064 0.27373097 0.84625273 0.51505586 0.00582792
696    0.33295971 0.91848412 0.92537226 0.91760033 0.07541125
697    0.71745848 0.61158698 0.00941650 0.03135554 0.71527471
698    0.24821915 0.63636652 0.86159918 0.26450229 0.60160194
699    0.35557725 0.24477500 0.07186456 0.51757096 0.62120362
700    0.97981062 0.69954667 0.21065616 0.13382753 0.27693186
701    0.59644095 0.71500764 0.04110751 0.95730081 0.91600724
702    0.47704678 0.26183479 0.34706971 0.07545431 0.29398385
703    0.93236070 0.60486023 0.48015011 0.08870451 0.45548581
704    0.91872718 0.38142712 0.10668643 0.01397541 0.04520355
705    0.93822273 0.18011940 0.57577277 0.91427606 0.30911399
706    0.95853475 0.23611214 0.69619891 0.69601980 0.76765372
707    0.58515930 0.49479057 0.11288752 0.97187699 0.32095365
708    0.57563608 0.40760618 0.78703383 0.43261152 0.90877651
709    0.84686346 0.10599030 0.72872803 0.19315490 0.66152912
710    0.10210518 0.06257876 0.47950688 0.47062066 0.72701157
711    0.48915116 0.66110261 0.60170685 0.24516994 0.12726050
712    0.03451185 0.90864994 0.83494878 0.94800035 0.91035206
713    0.14480751 0.88458997 0.53498312 0.15963215 0.55378627
714    0.35171349 0.28719791 0.09097957 0.00667896 0.32309622
715    0.87561479 0.42534520 0.91748977 0.73908457 0.41793223
716    0.99279792 0.87908370 0.28458072 0.59132853 0.98672190
717    0.28547393 0.09452165 0.89910674 0.53681109 0.37931425
718    0.62683489 0.56609740 0.24801549 0.52948179 0.98328855
719    0.66403523 0.55523786 0.75886666 0.84784685 0.86829981
720    0.71448906 0.84670080 0.43922919 0.20771016 0.64157936
721    0.25664246 0.73055695 0.86395782 0.65852932 0.99061803
722    0.40280575 0.39146298 0.07291005 0.97200603 0.20555729
723    0.59616495 0.08138254 0.45796388 0.33681125 0.33989127
724    0.18717090 0.53545811 0.60550838 0.86520709 0.34290701
725    0.72743276 0.73023855 0.34195926 0.65019733 0.02765254
726    0.72575740 0.32709576 0.03420866 0.26061893 0.56997511
727    0.28439072 0.84422744 0.77637570 0.55982168 0.06720327
728    0.58449067 0.71657369 0.15819609 0.58042821 0.07947911
729    0.40193792 0.11376012 0.88762938 0.67532159 0.71223735
730    0.27829114 0.04806073 0.21144026 0.58830274 0.04140071
731    0.43215628 0.12952729 0.94668759 0.87391019 0.98382450
732    0.27750768 0.90849647 0.90962737 0.59269720 0.96102026
733    0.49544979 0.32007095 0.62585546 0.03119821 0.85953001
734    0.22017528 0.05834068 0.80731217 0.53799961 0.74166948
735    0.77426600 0.43938444 0.54862081 0.58575513 0.15886492
736    0.73214332 0.11649057 0.77463977 0.85788827 0.17061997
737    0.66838056 0.96076133 0.07949296 0.68521946 0.89986254
738    0.05667410 0.12741385 0.83470977 0.63969104 0.46612929
739    0.10200126 0.01194925 0.10476340 0.90285217 0.31221221
740    0.32980614 0.46041971 0.52024973 0.05425470 0.28330912
741    0.60426543 0.00598243 0.97244013 0.21135841 0.78561597
742    0.78428734 0.63422849 0.32909934 0.44771136 0.27380750
743    0.14966697 0.18156268 0.65686758 0.28726350 0.97074787
744    0.63676171 0.96649494 0.24526295 0.08297372 0.54257548
745    0.03166785 0.33735355 0.15946671 0.02102971 0.46228045
746    0.11892296 0.33408336 0.29875681 0.29847692 0.73767569
747    0.02080745 0.62980060 0.08082293 0.22993106 0.25031439
748    0.87787525 0.45150053 0.13673441 0.63407612 0.97907688
749    0.52241942 0.50580158 0.06273902 0.05270283 0.77031811
750    0.05113352 0.24393329 0.75036441 0.37436336 0.22877652
751    0.59975358 0.85707591 0.88691457 0.85547165 0.36641027
752    0.58720133 0.45462835 0.09243817 0.32981586 0.07820411
753    0.25421519 0.36004706 0.60092307 0.46192412 0.36758683
754    0.98424170 0.08019934 0.68594024 0.45826386 0.29962317
755    0.79365413 0.89231296 0.49478547 0.87645944 0.23590734
756    0.28106737 0.75026285 0.08136314 0.79582424 0.76010628
757    0.82792971 0.27947652 0.72482861 0.82191216 0.46171689
758    0.79189752 0.96043686 0.51609668 0.88995725 0.28998963
759    0.55191845 0.03934737 0.83033700 0.49553013 0.98009549
760    0.19017594 0.98347750 0.33452066 0.87144372 0.72106301
761    0.71272114 0.71465963 0.88361677 0.85571283 0.73782329
762    0.20920458 0.34855153 0.46766817 0.02780062 0.74898344
763    0.03680650 0.44866557 0.77426312 0.91025891 0.25195236
764    0.87319953 0.63265037 0.25552148 0.27422476 0.95217406
765    0.39281839 0.66441573 0.09158900 0.94515992 0.07800798
766    0.02507888 0.39901462 0.17382573 0.12141278 0.85502334
767    0.19902911 0.02160210 0.44460522 0.14688742 0.68020336
768    0.71323733 0.60922473 0.95400380 0.99611159 0.90897777
769    0.41073520 0.66206647 0.32064685 0.62805003 0.50677209
770    0.52690101 0.87473387 0.73918362 0.39826974 0.43683919
771    0.80459118 0.32422684 0.01958019 0.95319576 0.98326137
772    0.83931735 0.69060863 0.33671416 0.68062550 0.65152380
773    0.33392969 0.03451730 0.95227244 0.68200635 0.85074171
774    0.64721009 0.51234433 0.73402047 0.00969637 0.93835057
775    0.80803854 0.31485260 0.20089527 0.01323282 0.59933780
776    0.31584602 0.20209563 0.33754800 0.68604181 0.24443049
777    0.19952227 0.78162632 0.10336988 0.11360736 0.23536740
778    0.23262256 0.67803776 0.48749791 0.74658435 0.92156640
779    0.56706407 0.36683221 0.99157136 0.23421374 0.45183767
780    0.91609720 0.85573315 0.37706276 0.77042618 0.30891908
781    0.40709595 0.06944866 0.61342849 0.88817388 0.58734506
782    0.98711323 0.14744128 0.63242656 0.87704136 0.68347125
783    0.84446569 0.43265239 0.25146321 0.04130111 0.34259839
784    0.92697368 0.40878778 0.56990338 0.76204273 0.19820348
785    0.66314909 0.02482844 0.06669207 0.50205581 0.26084093
786    0.65139159 0.41650223 0.09733904 0.56344203 0.62651696
787    0.67332139 0.58037374 0.47258086 0.21010758 0.05713135
788    0.89390629 0.10781246 0.32037450 0.07628388 0.34227964
789    0.42190597 0.58201860 0.77363549 0.49595133 0.86031236
790    0.83906769 0.81098161 0.26694195 0.14215941 0.88210306
791    0.53634237 0.12090720 0.82480459 0.75930318 0.31847147
792    0.92768077 0.01037616 0.56201727 0.88107122 0.35925856
793    0.85860762 0.61109408 0.70408301 0.58434977 0.92192494
794    0.62667915 0.75988365 0.06858761 0.36156496 0.58057195
795    0.13636150 0.57719713 0.59340255 0.63530602 0.22976282
796    0.71915530 0.41162531 0.63979565 0.09931342 0.79344045
797    0.10893790 0.84450224 0.23122236 0.99485593 0.73637397
798    0.17276368 0.13357764 0.74965804 0.64991737 0.61990341
799    0.41523170 0.05878239 0.05687301 0.05497131 0.42868366
800    0.42571090 0.25810502 0.89642955 0.30439758 0.39310223
801    0.11357431 0.04288255 0.23397550 0.11200634 0.85621396
802    0.89733974 0.37508865 0.42077265 0.68597384 0.72781399
803    0.19296476 0.61699087 0.31667128 0.67756410 0.00177323
804    0.05725176 0.79474693 0.18885238 0.06724856 0.68193156
805    0.42202167 0.22082041 0.28554673 0.64995708 0.87851940
806    0.29124547 0.61009521 0.87374537 0.05743712 0.69902994
807    0.81925115 0.45653873 0.37236821 0.31118709 0.52734307
808    0.39672836 0.38185294 0.30163915 0.17374510 0.04913278
809    0.90404879 0.25742801 0.58266467 0.97663209 0.79823377
810    0.36437958 0.15206043 0.26529938 0.22690047 0.05839021
811    0.84721160 0.18622435 0.37809403 0.55706977 0.49828704
812    0.47659049 0.24289680 0.88477595 0.07807463 0.56245739
813    0.73490635 0.21099431 0.13164942 0.75840044 0.66877037
814    0.28988183 0.44046090 0.24967434 0.80048356 0.26029740
815    0.30416821 0.64151867 0.52067892 0.12880774 0.85465381
816    0.02690525 0.19149288 0.49630295 0.79682619 0.43566145
817    0.00288078 0.81484193 0.03763639 0.68529083 0.01339574
818    0.38405386 0.30537067 0.22994703 0.44000045 0.27217985
819    0.53831243 0.02870435 0.86282045 0.61831306 0.09164956
820    0.25609707 0.07445781 0.72185784 0.90058883 0.30070608
821    0.94476583 0.56822213 0.21933909 0.96772793 0.80063440
822    0.26307906 0.31183306 0.16501252 0.55436179 0.68562285
823    0.23829083 0.86511559 0.57868991 0.81888344 0.20126869
824    0.93172350 0.66028129 0.21786948 0.78515828 0.10262106
825    0.35390326 0.79303876 0.63427924 0.90479631 0.31024934
826    0.60635447 0.56198079 0.63573813 0.91854197 0.99701497
827    0.83085849 0.31692291 0.01925964 0.97446405 0.98751283
828    0.60944293 0.13751018 0.69519957 0.68956636 0.56969015
829    0.46440193 0.88341765 0.36754434 0.89223647 0.39786427
830    0.85055280 0.12749961 0.79452122 0.89449784 0.14567830
831    0.45716830 0.74822309 0.28200437 0.42546044 0.17464886
832    0.68308746 0.65496587 0.52935411 0.12736159 0.61523955
833    0.81590528 0.63107864 0.39786553 0.20102294 0.53292914
834    0.75485590 0.59847044 0.32861691 0.12125866 0.58917183
835    0.07638293 0.86845380 0.29192617 0.03989733 0.52180460
836    0.32503407 0.64071852 0.69516575 0.74254998 0.54587026
837    0.48713246 0.32920155 0.08719954 0.63497059 0.54328459
838    0.64178757 0.45583809 0.70694291 0.85212760 0.86074305
839    0.33163422 0.85739792 0.59908488 0.74566046 0.72157152/;
840
841
842### - Standalone PRNG - ###
843
844# Set predetermined seed for verification test
845my @base_seed = ($Config{'uvsize'} == 8)
846                    ? (0x12345, 0x23456, 0x34567, 0x45678)
847                    : (0x123, 0x234, 0x345, 0x456);
848sub myseed
849{
850    my $seed = $_[0];
851    my $need = $_[1];  # Ignored
852
853    push(@$seed, @base_seed);
854}
855eval { srand(\&myseed); };
856if (! ok(! $@, 'srand(\&sub) works')) {
857    diag('srand(\&sub) died: ' . $@);
858}
859
860# Check for warnings
861@WARN = grep { $_ !~ /Partial seed/ } @WARN;
862if (! ok(! @WARN, 'Acquired seed data')) {
863    diag('Seed warnings: ' . join(' | ', @WARN));
864}
865undef(@WARN);
866
867# Fetch and verify seed
868my @seed;
869eval { @seed = get_seed(); };
870if (! ok(! $@, 'get_seed() works')) {
871    diag('get_seed() died: ' . $@);
872}
873is_deeply(\@base_seed, \@seed, 'Seed is correct');
874
875# Create PRNG object using state of standalone PRNG
876my $prng2;
877eval {
878    my @state = get_state();
879    $prng2 = Math::Random::MT::Auto->new('STATE' => \@state);
880};
881if (! ok(! $@, 'SA cloning works')) {
882    diag('SA cloning died: ' . $@);
883}
884isa_ok($prng2, 'Math::Random::MT::Auto');
885can_ok($prng2, qw(rand irand gaussian exponential erlang poisson binomial
886                  shuffle srand get_seed set_seed get_state set_state));
887
888# Verify hidden 'init' subroutine
889if ($] > 5.006) {
890    eval { $prng2->_init({}); };
891    if (my $e = OIO->caught()) {
892        ok($e->error =~ /hidden/i, '->_init() hidden: ' . $e->error);
893    } else {
894        ok($@, '->_init() visible - this is bad');
895    }
896} else {
897    ok(1, 'SKIPPED');
898}
899
900# Test for known output from PRNG for irand()
901my @test_rint;
902for (1 .. 500) {
903    push(@test_rint, irand());
904}
905
906# Save the current PRNG state
907my @state;
908eval { @state = get_state(); };
909ok(! $@, 'get_state() died: ' . $@);
910
911# Reset the seed
912eval { set_seed(\@seed); };
913ok(! $@, 'set_seed() died: ' . $@);
914
915# Test again with reset seed
916my @test2_rint;
917for (1 .. 1000) {
918    push(@test2_rint, irand());
919}
920is_deeply(\@test2_rint, \@base_rint, '1000 ints');
921
922# Restore previous state
923eval { set_state(\@state); };
924ok(! $@, 'set_state() died: ' . $@);
925
926# Continue from previous state
927for (501 .. 1000) {
928    push(@test_rint, Math::Random::MT::Auto::irand());
929}
930is_deeply(\@test_rint, \@base_rint, '500 ints');
931
932# Test for known output from PRNG
933#  for rand() and Math::Random::MT::Auto::rand()
934my @test_doub;
935for (1 .. 500) {
936    push(@test_doub, sprintf('%0.8f', rand()));
937}
938for (501 .. 1000) {
939    push(@test_doub, sprintf('%0.8f', Math::Random::MT::Auto::rand()));
940}
941is_deeply(\@test_doub, \@base_doub, '1000 doubles');
942
943### - OO INterface - ###
944
945# Create binary seed file
946if (open(FH, '>seed_data.tmp')) {
947    if ($Config{'uvsize'} == 8) {
948        print(FH pack('Q4', 0x12345, 0x23456, 0x34567, 0x45678));
949    } else {
950        print(FH pack('L4', 0x123, 0x234, 0x345, 0x456));
951    }
952    close(FH);
953} else {
954    diag('Failure writing seed to file');
955}
956
957# Create PRNG object
958my $prng;
959eval { $prng = Math::Random::MT::Auto->new('src' => 'seed_data.tmp'); };
960unlink('seed_data.tmp');
961if (! ok(! $@, '->new works')) {
962    diag('->new died: ' . $@);
963}
964isa_ok($prng, 'Math::Random::MT::Auto');
965
966# Check for warnings
967@WARN = grep { $_ !~ /exhausted/  &&  $_ !~ /Partial seed/ } @WARN;
968if (! ok(! @WARN, 'Acquired seed data')) {
969    diag('Seed warnings: ' . join(' | ', @WARN));
970}
971undef(@WARN);
972
973# Fetch and verify seed
974eval { @seed = @{$prng->get_seed()}; };
975if (! ok(! $@, '$prng->get_seed() works')) {
976    diag('$prng->get_seed() died: ' . $@);
977}
978is_deeply(\@base_seed, \@seed, 'Seed is correct');
979
980
981# Test for known output from PRNG for $prng->irand()
982@test_rint = ();
983for (1 .. 500) {
984    push(@test_rint, $prng->irand());
985}
986
987
988# Save the current PRNG state
989eval { @state = $prng->get_state(); };
990ok(! $@, '$prng->get_state() died: ' . $@);
991
992# Reset the seed
993eval { $prng->set_seed(\@seed); };
994ok(! $@, '$prng->set_seed() died: ' . $@);
995
996# Test again with reset seed
997@test2_rint = ();
998for (1 .. 1000) {
999    push(@test2_rint, $prng->irand());
1000}
1001is_deeply(\@test2_rint, \@base_rint, '1000 ints');
1002
1003# Restore previous state
1004eval { $prng->set_state(\@state); };
1005ok(! $@, '$prng->set_state() died: ' . $@);
1006
1007
1008# Continue from previous state
1009for (501 .. 1000) {
1010    push(@test_rint, $prng->irand());
1011}
1012is_deeply(\@test_rint, \@base_rint, '1000 ints');
1013
1014# Test for known output from PRNG for $prng->rand()
1015@test_doub = ();
1016for (1 .. 1000) {
1017    push(@test_doub, sprintf('%0.8f', $prng->rand()));
1018}
1019is_deeply(\@test_doub, \@base_doub, '1000 doubles');
1020
1021
1022### - Cloning Tests - ###
1023
1024# Create PRNG object using state of another PRNG object
1025my $prng3;
1026eval { $prng3 = $prng2->clone(); };
1027unlink('seed_data.tmp');
1028if (! ok(! $@, '->clone() works')) {
1029    diag('->clone() died: ' . $@);
1030}
1031isa_ok($prng3, 'Math::Random::MT::Auto');
1032
1033# Test OO copy of SA PRNG
1034@test_rint = ();
1035for (1 .. 1000) {
1036    push(@test_rint, $prng2->irand());
1037}
1038is_deeply(\@test_rint, \@base_rint, '1000 ints');
1039
1040# Test OO copy of OO PRNG
1041@test_rint = ();
1042for (1 .. 1000) {
1043    push(@test_rint, $prng3->irand());
1044}
1045is_deeply(\@test_rint, \@base_rint, '1000 ints');
1046
1047
1048### Test 'readonly'
1049
1050if ($] >= 5.008003) {
1051    eval{
1052        my $old = $$prng;
1053        $$prng = 99;
1054        $$prng = $old;   # Just in case
1055    };
1056    ok($@, "Readonly: $@");
1057} else {
1058    ok(1, 'SKIPPED');
1059}
1060
1061exit(0);
1062
1063# EOF
1064