-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
UnitTest1.cs
131 lines (119 loc) · 7.06 KB
/
UnitTest1.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
using NUnit.Framework;
using System;
namespace TinyMT
{
public class Tests
{
Random rand;
[SetUp]
public void Setup()
{
rand = new Random(1);
}
[Test]
public void Test1()
{
// test cases from original tinymt/check64.c.
var wants = new UInt64[]
{
15503804787016557143, 17280942441431881838, 2177846447079362065,
10087979609567186558, 8925138365609588954, 13030236470185662861,
4821755207395923002, 11414418928600017220, 18168456707151075513,
1749899882787913913, 2383809859898491614, 4819668342796295952,
11996915412652201592, 11312565842793520524, 995000466268691999,
6363016470553061398, 7460106683467501926, 981478760989475592,
11852898451934348777, 5976355772385089998, 16662491692959689977,
4997134580858653476, 11142084553658001518, 12405136656253403414,
10700258834832712655, 13440132573874649640, 15190104899818839732,
14179849157427519166, 10328306841423370385, 9266343271776906817,
};
for (var i=0; i<wants.Length; i++)
{
var n = rand.NextUInt64();
Assert.AreEqual(wants[i], n);
}
var wants2 = new string[]
{
"0.125567123229521", "0.818262400607750", "0.308221102032817", "0.825591822990855",
"0.255551787703622", "0.882641560891436", "0.211523616852565", "0.319106958147134",
"0.873193845531558", "0.756344217961701", "0.962686707495863", "0.127491309895908",
"0.670174093132914", "0.093215198419963", "0.475257450295932", "0.426065629614613",
"0.834258249808520", "0.279033971317979", "0.514947869505974", "0.036174029320189",
"0.889724422387498", "0.251782205931186", "0.387449542977238", "0.086125043491032",
"0.765348786475184", "0.571055657991772", "0.322252271090458", "0.024030740501581",
"0.088528833247372", "0.963418050080101", "0.453251887315304", "0.979463973099228",
"0.595935514667881", "0.527137096204258", "0.409584764706731", "0.004006194821550",
"0.200313759051736", "0.454282350186445", "0.713777124755221", "0.807915281176204",
"0.127564256523087", "0.986357723272511", "0.537187821765985", "0.235440989484918",
"0.700006353662877", "0.858045024531560", "0.130565018914094", "0.173965903195659",
};
rand = new Random(new ulong[]{1});
for (var i=0; i<wants2.Length; i++)
{
var n = rand.NextDouble();
Assert.AreEqual(wants2[i], $"{n:F15}");
}
var wants3 = new string[]
{
"1.437679237017648", "1.239536785901373", "1.140298949383057", "1.776408301859232",
"1.152013609994736", "1.791233026870471", "1.212111221146196", "1.829985488180836",
"1.081512125943717", "1.363201836673650", "1.417933283495315", "1.814826826183523",
"1.969922345279833", "1.053208264502199", "1.741205427976973", "1.837349090361589",
"1.406622310957582", "1.510698317360325", "1.829965206684917", "1.859153888163104",
"1.759271635641173", "1.824888617384633", "1.237637472413003", "1.367109059723164",
"1.976389381199251", "1.989991431835970", "1.044503045383735", "1.769751873156083",
"1.859046544898330", "1.218170930629463", "1.308291384260259", "1.694324347868131",
"1.458264916022492", "1.128833025697983", "1.205547655611532", "1.909188848740936",
"1.562083063485982", "1.333329220907858", "1.665680038183793", "1.001161742007127",
"1.667546697634258", "1.296057871298311", "1.461095987795535", "1.459580681054313",
"1.556093077958318", "1.916051394545249", "1.267046730316243", "1.147033584842960",
};
for (var i=0; i<wants3.Length; i++)
{
var n = rand.NextDouble12();
Assert.AreEqual(wants3[i], $"{n:F15}");
}
var wants4 = new string[]
{
"0.231189305675805", "0.800078680337062", "0.839012626265816", "0.439830027924101",
"0.287094637016178", "0.588065859945908", "0.979935435454641", "0.153150392249384",
"0.730008781559804", "0.811897304025850", "0.213940001686070", "0.803418052576349",
"0.872859727831960", "0.620437548528132", "0.978150212926246", "0.101173021131322",
"0.910550586203282", "0.225948191636215", "0.374316722183833", "0.305990832583114",
"0.349868211955804", "0.617675089001072", "0.977990275060935", "0.453879799720974",
"0.894692817941832", "0.247166853705171", "0.639918430646982", "0.187528433375713",
"0.098449225468909", "0.630303237374302", "0.080830809996716", "0.578706622599148",
"0.734493648961771", "0.082578413837076", "0.287252902600609", "0.148892860351310",
"0.032585155152626", "0.974545363240716", "0.115296495734384", "0.779122282518212",
"0.217374280466345", "0.109080092606533", "0.926570354675966", "0.740322917071261",
"0.751484666825263", "0.287404891102534", "0.652825666825707", "0.715421981731271",
};
for (var i=0; i<wants4.Length; i++)
{
var n = rand.NextDoubleOC();
Assert.AreEqual(wants4[i], $"{n:F15}");
}
var wants5 = new string[]
{
"0.777528512172794", "0.427164705471249", "0.646272649811224", "0.544192399276788",
"0.055887665337890", "0.341700406526459", "0.711593276934271", "0.834779506059920",
"0.300433789431423", "0.551665825454914", "0.408923581859956", "0.087661367648074",
"0.778332952183721", "0.987791992333503", "0.372489630499866", "0.814160794049290",
"0.729786510846933", "0.759103094898038", "0.126259258963777", "0.126254138650957",
"0.959804243067140", "0.297513369134440", "0.080559577448319", "0.759676389010768",
"0.299289034712620", "0.930880432389953", "0.453686608702271", "0.051097960521366",
"0.190779343357538", "0.668131291883840", "0.568395939590751", "0.051087427533098",
"0.531001654494900", "0.863620810621520", "0.713312386789292", "0.079647214591833",
"0.503865458699875", "0.649652561747019", "0.651303365948799", "0.423447062299514",
"0.383204776309473", "0.325776002558352", "0.917474566663556", "0.612145094607316",
"0.785176513330525", "0.046217567933767", "0.445326162565375", "0.426594677789800",
};
for (var i=0; i<wants5.Length; i++)
{
var n = rand.NextDoubleOO();
Assert.AreEqual(wants5[i], $"{n:F15}");
}
Assert.Pass();
}
}
}