Commit 7b6156ba authored by sof's avatar sof
Browse files

[project @ 1999-03-10 11:03:48 by sof]

Neural network regression test app; contains painfully long list of
constants.
parent daa33e80
module Main(main) where
newtype RNG_State = RNG_State (Int, Int, Int)
new_random i = RNG_State (i `mod` 30269, i `mod` 30307, i `mod` 30323)
next_unit_random (RNG_State (a,b,c)) =
(r, RNG_State (a1,b1,c1))
where a1 = (a * 171) `mod` 30269
b1 = (b * 172) `mod` 30307
c1 = (c * 170) `mod` 30323
t = fromInt a1/30269.0 +
fromInt b1/30307.0 +
fromInt c1/30323.0
r = t - fromInt (truncate t)
next_random_bool p s =
(r < p, s1)
where (r,s1) = next_unit_random s
next_random_list f n s =
loop [] n s
where loop ps 0 s = (ps, s)
loop ps m s = loop (p:ps) (m-1) s1
where (p,s1) = f s
rpart [] _ _ ps qs s = ((ps, qs), s)
rpart (x:xs) n d ps qs s =
if d*r < n
then rpart xs (n-1.0) (d-1.0) (x:ps) qs s1
else rpart xs n (d-1.0) ps (x:qs) s1
where (r, s1) = next_unit_random s
random_permutation xs s =
rperm xs (length xs) [] s
where rperm [] 0 ps s = (ps, s)
rperm [x1] 1 ps s = ((x1:ps), s)
rperm [x1,x2] 2 ps s =
if b then (x1:x2:ps, s1) else (x2:x1:ps, s1)
where (b, s1) = next_random_bool 0.5 s
rperm xs d ps s =
let n = d `div` 2
((ys, zs), s1) = rpart xs (fromInt n) (fromInt d) [] [] s
(zps, s2) = rperm zs (d-n) ps s1
in rperm ys n zps s2
minit m n g =
outer (m-1) []
where outer (-1) xss = xss
outer m xss = outer (m-1) (inner (n-1) [] : xss)
where inner (-1) xs = xs
inner n xs = inner (n-1) (g m n : xs)
vadd [] [] = []
vadd (x:xs) (y:ys) = x+y : vadd xs ys
madd [] [] = []
madd (xs:xss) (ys:yss) = vadd xs ys : madd xss yss
vaddx [] [] _ = []
vaddx (x:xs) (y:ys) a = x+y*a : vaddx xs ys a
vsub [] [] = []
vsub (x:xs) (y:ys) = x-y : vsub xs ys
vmulx [] _ = []
vmulx (x:xs) a = x*a : vmulx xs a
mmulx [] _ = []
mmulx (xs:xss) a = vmulx xs a : mmulx xss a
vdist xs ys =
loop xs ys 0.0
where loop [] [] s = s
loop (x:xs) (y:ys) s = loop xs ys (s+d*d)
where d = x-y
vdot xs ys =
loop xs ys 0.0
where loop [] [] s = s
loop (x:xs) (y:ys) s = loop xs ys (s+x*y)
vmmul [] [] = []
vmmul (x:xs) (r:rs) =
loop xs rs (vmulx r x)
where loop [] [] ws = ws
loop (x:xs) (r:rs) ws = loop xs rs (vaddx ws r x)
vupdate [] _ [] _ = []
vupdate (r:rs) xs (y:ys) c = vaddx r xs (y*c) : vupdate rs xs ys c
vscale [] [] = []
vscale (x:xs) (y:ys) = x*y*(1.0-y) : vscale xs ys
sigmoid x = 1.0/(1.0 + exp (0.0-x))
mrand m n l u s =
next_random_list (next_random_list f n) m s
where f s = (l + (u-l)*r, s1)
(r, s1) = next_unit_random s
train pats i_h_wt i_h_ch h_o_wt h_o_ch epochs s =
loop pats1 i_h_ch h_o_ch 0.0
where
(pats1, s1) = random_permutation pats s
loop [] i_h_ch h_o_ch e0
| e < criterion = ((e,0,i_h_wt,h_o_wt), s1)
| epochs <= 0 = ((e,1,i_h_wt,h_o_wt), s1)
| True =
train pats (madd i_h_wt i_h_ch) (mmulx i_h_ch momentum)
(madd h_o_wt h_o_ch) (mmulx h_o_ch momentum) (epochs-1) s1
where e = e0/(fromInt (length pats) * fromInt (length h_o_wt))
loop ((in_pat, out_pat):ps) i_h_ch h_o_ch e =
loop ps (vupdate i_h_ch in_act (tail hid_err) rate)
(vupdate h_o_ch hid_act out_err rate)
(e + vdist out_pat out_act)
where
in_act = 1.0:in_pat
hid_act = 1.0:map (\w -> sigmoid (vdot in_act w)) i_h_wt
out_act = map (\w -> sigmoid (vdot hid_act w)) h_o_wt
out_err = vscale (vsub out_pat out_act) out_act
hid_err = vscale (vmmul out_err h_o_wt) hid_act
main = ans
where (in1,out1) = head patterns
nin = length in1
nhid = nin
nout = length out1
s0 = new_random 353721
(i_h_wt, s1) = mrand nhid (nin +1) (0.0-0.3) 0.3 s0
i_h_ch = minit nhid (nin +1) (\i j -> 0.0)
(h_o_wt, s2) = mrand nout (nhid+1) (0.0-0.3) 0.3 s1
h_o_ch = minit nout (nhid+1) (\i j -> 0.0)
(ans, _) = train patterns i_h_wt i_h_ch h_o_wt h_o_ch epochs s2
rate = 0.05
momentum = 0.9
criterion = 0.01
--epochs = 100
--patterns = [([1.0,0.0],[1.0]),
-- ([0.0,1.0],[1.0]),
-- ([0.0,0.0],[0.0]),
-- ([1.0,1.0],[0.0])]
epochs = 90
patterns =
[([0.955809, 0.095706, 0.269204, 0.824671, 0.448012, 0.722709,
0.327677, 0.148595, 0.063143, 0.007019, 0.135166, 0.928800, 0.298593,
0.931150, 0.711234, 0.432630, 0.913450, 0.545061, 0.651082, 0.692984,
0.371532, 0.940641, 0.202521, 0.064852, 0.965941, 0.523637, 0.914884,
0.159062, 0.031648, 0.866848, 0.516526, 0.684317, 0.152135, 0.923734,
0.177435, 0.228339, 0.766503, 0.885159, 0.812220, 0.510208, 0.082949,
0.459792, 0.580920, 0.134190, 0.705741, 0.859523, 0.243171, 0.377117,
0.880551, 0.271218, 0.521989, 0.039888, 0.765862, 0.096347, 0.133702,
0.895138, 0.635548, 0.738853, 0.640126, 0.761162, 0.419599, 0.223579,
0.779260, 0.734947, 0.488937, 0.426038, 0.430799, 0.613788, 0.090487,
0.194372, 0.872494, 0.038179, 0.339183, 0.145482, 0.483932, 0.386425,
0.172430, 0.416150, 0.553850, 0.952422, 0.174200, 0.150365, 0.347056,
0.438063, 0.674154, 0.004456, 0.087527, 0.291269, 0.028474, 0.450819,
0.013642, 0.920896, 0.488815, 0.161840, 0.162084, 0.319803, 0.564989,
0.255287, 0.036348, 0.127750, 0.288461, 0.681906, 0.816370, 0.664449,
0.282235, 0.537126, 0.265328, 0.964965, 0.043672, 0.577898, 0.990173,
0.348186, 0.346446, 0.725700, 0.211463, 0.549821, 0.167943, 0.837062,
0.700003, 0.950896, 0.048341, 0.523087, 0.034761, 0.933439, 0.287393,
0.299081, 0.840144, 0.894284, 0.885464, 0.845302, 0.157476, 0.948210,
0.635060, 0.660421, 0.607990, 0.852107, 0.268868, 0.888760, 0.502518,
0.180609, 0.070650, 0.602802, 0.555223, 0.285440, 0.855495, 0.321665,
0.356700, 0.068758, 0.725059, 0.047487, 0.263344, 0.102695, 0.504959,
0.600452, 0.858974, 0.125217, 0.269662, 0.533982, 0.644642, 0.444838,
0.861721, 0.411145, 0.113712, 0.284371, 0.811182, 0.723930, 0.867702,
0.595538, 0.561968, 0.235847, 0.929167, 0.375408, 0.410901, 0.030122,
0.908536, 0.016297, 0.065859, 0.043977, 0.180425, 0.719810, 0.229469,
0.370403, 0.726096, 0.506699, 0.114353, 0.108921, 0.797998, 0.853908,
0.296274, 0.046419, 0.063143, 0.489364, 0.811396, 0.949217, 0.380902,
0.376751, 0.903958, 0.747703, 0.872127, 0.420392, 0.330729, 0.395032,
0.435102, 0.922697, 0.628071, 0.680502, 0.365703, 0.324259, 0.248299,
0.779656, 0.236610, 0.258950, 0.971496, 0.821680, 0.692892, 0.454146,
0.498856, 0.255776, 0.319895, 0.508377, 0.634022, 0.297617, 0.239479,
0.076937, 0.958342, 0.237007, 0.591144, 0.497055, 0.406842, 0.888241,
0.554064, 0.383587, 0.650624],
[0.234896, 0.423061, 0.263443, 0.123426,
0.794525, 0.243195, 0.176474, 0.282455, 0.620580, 0.126517, 0.858114,
0.150592, 0.351949, 0.153976, 0.480803, 0.272537, 0.062543, 0.525171,
0.896010, 0.872203, 0.431661, 0.702341, 0.385838, 0.951113, 0.058039,
0.563982, 0.981357, 0.319594, 0.190779, 0.159156, 0.182152, 0.912154,
0.046355, 0.322471, 0.190853, 0.146977, 0.556987, 0.432033, 0.849777,
0.397618, 0.800925, 0.817440, 0.103982, 0.417800, 0.982832, 0.123455,
0.075878, 0.578246, 0.575774, 0.662847, 0.121769, 0.310270, 0.451505,
0.871721, 0.263607, 0.963375, 0.198854, 0.249971, 0.273863, 0.592648,
0.133579, 0.119994, 0.679855, 0.626287, 0.174323, 0.164256, 0.841121,
0.752313, 0.501021, 0.569367, 0.804985, 0.639864, 0.272153, 0.055158,
0.281015, 0.090302, 0.648710, 0.526850, 0.121161, 0.620315, 0.383709,
0.487889, 0.739381, 0.609108, 0.181023, 0.419480, 0.453455, 0.658062,
0.054643, 0.832708, 0.255309, 0.744293, 0.909823, 0.895573, 0.934952,
0.332162, 0.514298, 0.129617, 0.568588, 0.459891, 0.512871, 0.708730,
0.244905, 0.504490, 0.408360, 0.724549, 0.263859, 0.126921, 0.917366,
0.128843, 0.761606, 0.295994, 0.485532, 0.364426, 0.209157, 0.331918,
0.923155, 0.832404, 0.344705, 0.992287, 0.797664, 0.513933, 0.197295,
0.898075, 0.321190, 0.766076, 0.896433, 0.510118, 0.555644, 0.731407,
0.336166, 0.961858, 0.108792, 0.274650, 0.447974, 0.322401, 0.519439,
0.127972, 0.743228, 0.095587, 0.442358, 0.065578, 0.427339, 0.867874,
0.115209, 0.391970, 0.222726, 0.427568, 0.562064, 0.073965, 0.500635,
0.103580, 0.193423, 0.463678, 0.352990, 0.872354, 0.266832, 0.066053,
0.567679, 0.465254, 0.715300, 0.890676, 0.962122, 0.823967, 0.085568,
0.195321, 0.730473, 0.142718, 0.589829, 0.954951, 0.190184, 0.350517,
0.593301, 0.582699, 0.060864, 0.072237, 0.305630, 0.417032, 0.670941,
0.430787, 0.876681, 0.244844, 0.060370, 0.274557, 0.598552, 0.194049,
0.661775, 0.251685, 0.143953, 0.228740, 0.268005, 0.353289, 0.234517,
0.866899, 0.382406, 0.826395, 0.551468, 0.910383, 0.677785, 0.487901,
0.408431, 0.465832, 0.226357, 0.897554, 0.717515, 0.630160, 0.664560,
0.807919, 0.184460, 0.314334, 0.122805, 0.073591, 0.617129, 0.220999,
0.050125, 0.388057, 0.262980, 0.898668, 0.103295, 0.798561, 0.110919,
0.451100, 0.852923, 0.263962, 0.169917, 0.891759, 0.902670, 0.074144,
0.746980, 0.667262, 0.158418, 0.192804, 0.468950]),
([0.964202, 0.066500, 0.226936, 0.692160, 0.655660, 0.898740, 0.524033,
0.579821, 0.196814, 0.235450, 0.473617, 0.647664, 0.698416, 0.424787,
0.767571, 0.187048, 0.029542, 0.048921, 0.508835, 0.956023, 0.030000,
0.973724, 0.787866, 0.432691, 0.833460, 0.532731, 0.948271, 0.219459,
0.583239, 0.502701, 0.073183, 0.503311, 0.322489, 0.025788, 0.723991,
0.979400, 0.338694, 0.135716, 0.461501, 0.143620, 0.745018, 0.043428,
0.182409, 0.360729, 0.578967, 0.839015, 0.800714, 0.613727, 0.199988,
0.765618, 0.306711, 0.341594, 0.267281, 0.722098, 0.733726, 0.270852,
0.078555, 0.150273, 0.064547, 0.647755, 0.551744, 0.963408, 0.608631,
0.776727, 0.630360, 0.671590, 0.880856, 0.272225, 0.393933, 0.361126,
0.513932, 0.929319, 0.654927, 0.683248, 0.235145, 0.619770, 0.322947,
0.509049, 0.438612, 0.119938, 0.318155, 0.406720, 0.384625, 0.276345,
0.314371, 0.597186, 0.557329, 0.415448, 0.093722, 0.544572, 0.211493,
0.403851, 0.794000, 0.837703, 0.640553, 0.265084, 0.829402, 0.518754,
0.195807, 0.759392, 0.766900, 0.515610, 0.589740, 0.832545, 0.938505,
0.333811, 0.512986, 0.340007, 0.071291, 0.664602, 0.097476, 0.953063,
0.716330, 0.065249, 0.256539, 0.652181, 0.757408, 0.367809, 0.432722,
0.715354, 0.781518, 0.972747, 0.785791, 0.606159, 0.591449, 0.683523,
0.350780, 0.668813, 0.642537, 0.238472, 0.198431, 0.035859, 0.684408,
0.196112, 0.128605, 0.655354, 0.388958, 0.330393, 0.928220, 0.843074,
0.246040, 0.191717, 0.724906, 0.266549, 0.507981, 0.990509, 0.467574,
0.767113, 0.463881, 0.458998, 0.065279, 0.925687, 0.825770, 0.848079,
0.215400, 0.779382, 0.506851, 0.714957, 0.452528, 0.594592, 0.573901,
0.658132, 0.449507, 0.102847, 0.654500, 0.655812, 0.101474, 0.105991,
0.580767, 0.164403, 0.424482, 0.856655, 0.550645, 0.632588, 0.799554,
0.120334, 0.587909, 0.587939, 0.594195, 0.325510, 0.582446, 0.952055,
0.691580, 0.707785, 0.691580, 0.740196, 0.959563, 0.854366, 0.384228,
0.802393, 0.190100, 0.555376, 0.908933, 0.761345, 0.541063, 0.367840,
0.466506, 0.804132, 0.010590, 0.799005, 0.869655, 0.483566, 0.976623,
0.514817, 0.969665, 0.185705, 0.331492, 0.480422, 0.632160, 0.419385,
0.244026, 0.438002, 0.543016, 0.584490, 0.079379, 0.629322, 0.625263,
0.374889, 0.508713, 0.168279, 0.348827, 0.472396, 0.339213, 0.970336,
0.714225, 0.688009, 0.096377, 0.644551, 0.190954, 0.206671, 0.889401,
0.255043, 0.392529],
[ 0.347267, 0.395278, 0.312221, 0.271034, 0.606466,
0.281430, 0.206116, 0.433894, 0.811608, 0.149699, 0.930589, 0.131576,
0.606860, 0.168244, 0.510042, 0.318780, 0.017318, 0.390086, 0.887702,
0.856325, 0.410205, 0.731879, 0.429107, 0.951366, 0.090044, 0.460008,
0.982247, 0.365122, 0.274204, 0.137115, 0.153039, 0.951211, 0.065363,
0.265502, 0.089683, 0.080594, 0.583010, 0.702345, 0.741734, 0.195394,
0.694880, 0.634725, 0.110399, 0.510145, 0.984661, 0.095715, 0.060022,
0.603920, 0.771879, 0.818352, 0.082082, 0.618599, 0.573476, 0.893264,
0.229809, 0.985823, 0.317123, 0.178742, 0.319886, 0.742494, 0.070001,
0.097983, 0.799138, 0.627735, 0.234819, 0.174270, 0.832352, 0.747531,
0.647704, 0.705891, 0.773991, 0.515965, 0.364954, 0.068576, 0.245708,
0.052415, 0.660207, 0.516471, 0.116974, 0.402301, 0.668778, 0.478975,
0.759934, 0.675118, 0.254879, 0.420252, 0.301185, 0.501663, 0.106245,
0.885773, 0.233874, 0.852706, 0.920644, 0.903723, 0.918905, 0.397496,
0.508660, 0.350752, 0.525033, 0.525978, 0.501128, 0.591062, 0.327965,
0.501709, 0.383894, 0.685330, 0.354505, 0.031559, 0.873401, 0.127268,
0.798431, 0.353377, 0.460709, 0.275419, 0.208795, 0.362425, 0.876697,
0.927418, 0.263693, 0.985030, 0.725649, 0.371198, 0.304175, 0.897437,
0.436677, 0.633838, 0.883890, 0.471352, 0.563572, 0.763623, 0.364169,
0.958443, 0.068425, 0.260482, 0.313543, 0.394317, 0.443647, 0.121875,
0.780465, 0.211723, 0.268817, 0.067533, 0.660574, 0.821465, 0.084727,
0.520244, 0.288125, 0.675550, 0.580184, 0.116487, 0.701141, 0.082960,
0.262049, 0.478233, 0.452062, 0.902427, 0.540173, 0.098391, 0.338498,
0.422226, 0.634723, 0.927242, 0.954212, 0.803277, 0.096551, 0.200374,
0.689030, 0.291707, 0.580938, 0.939620, 0.151359, 0.232785, 0.503464,
0.695066, 0.052623, 0.060584, 0.175948, 0.382867, 0.590377, 0.137340,
0.854693, 0.227445, 0.042913, 0.300106, 0.598812, 0.232287, 0.684412,
0.365377, 0.094614, 0.097589, 0.241374, 0.555737, 0.246608, 0.794405,
0.244149, 0.733437, 0.394148, 0.893992, 0.702754, 0.580066, 0.313107,
0.633119, 0.305982, 0.934299, 0.642923, 0.551348, 0.624630, 0.790857,
0.331221, 0.474498, 0.189123, 0.110964, 0.484088, 0.151825, 0.119752,
0.369902, 0.186865, 0.815287, 0.074211, 0.710128, 0.272505, 0.428258,
0.913809, 0.370850, 0.101142, 0.907882, 0.813830, 0.169027, 0.828513,
0.535021, 0.157700, 0.154209, 0.657740] ),
([0.091800, 0.590747, 0.357860, 0.768944, 0.705832, 0.861995, 0.219123,
0.097995, 0.202826, 0.055971, 0.621387, 0.056795, 0.750175, 0.527818,
0.164159, 0.654408, 0.634266, 0.384625, 0.464583, 0.807123, 0.907865,
0.206702, 0.164922, 0.837733, 0.734306, 0.770074, 0.152898, 0.179693,
0.085452, 0.302530, 0.901242, 0.067660, 0.949400, 0.304209, 0.332316,
0.495651, 0.703909, 0.463515, 0.115024, 0.223945, 0.812586, 0.700278,
0.798822, 0.116245, 0.499100, 0.867183, 0.692465, 0.587878, 0.556658,
0.140294, 0.892911, 0.446852, 0.947905, 0.630696, 0.370830, 0.908597,
0.352580, 0.247810, 0.519211, 0.065737, 0.318644, 0.345988, 0.070711,
0.594501, 0.172735, 0.185614, 0.790979, 0.978179, 0.347209, 0.739830,
0.852931, 0.029786, 0.279061, 0.878292, 0.299570, 0.995025, 0.537614,
0.459029, 0.500534, 0.015748, 0.336619, 0.359905, 0.009095, 0.237007,
0.087802, 0.980621, 0.726005, 0.337168, 0.151524, 0.246712, 0.775872,
0.763451, 0.440596, 0.646962, 0.003052, 0.453749, 0.034516, 0.334819,
0.492813, 0.326060, 0.459212, 0.825983, 0.023896, 0.316568, 0.789178,
0.322672, 0.859310, 0.248024, 0.228217, 0.196203, 0.781091, 0.309366,
0.324992, 0.658956, 0.775445, 0.427870, 0.479324, 0.157048, 0.274606,
0.315165, 0.895993, 0.515091, 0.361614, 0.468337, 0.642048, 0.363872,
0.844020, 0.907407, 0.963775, 0.882931, 0.603198, 0.930235, 0.519639,
0.388195, 0.125248, 0.666524, 0.685812, 0.797388, 0.619831, 0.711478,
0.589740, 0.502792, 0.632923, 0.621326, 0.028840, 0.684194, 0.560228,
0.550920, 0.930204, 0.591937, 0.967132, 0.815455, 0.507126, 0.832453,
0.121433, 0.657216, 0.769890, 0.186468, 0.645528, 0.998627, 0.545610,
0.992279, 0.693594, 0.462813, 0.664510, 0.624012, 0.560564, 0.443159,
0.468307, 0.097537, 0.129246, 0.502792, 0.297189, 0.334117, 0.061190,
0.885464, 0.111545, 0.113559, 0.138157, 0.418867, 0.904599, 0.248360,
0.660176, 0.592181, 0.062349, 0.009522, 0.306528, 0.088137, 0.327311,
0.335643, 0.365917, 0.551897, 0.521531, 0.856471, 0.741783, 0.877163,
0.686026, 0.262154, 0.639637, 0.791314, 0.792169, 0.049593, 0.341929,
0.020661, 0.681936, 0.176702, 0.977325, 0.816828, 0.392651, 0.656301,
0.690176, 0.125736, 0.522843, 0.620746, 0.116733, 0.180731, 0.795282,
0.888485, 0.574419, 0.800439, 0.473739, 0.563616, 0.869655, 0.172918,
0.789270, 0.700369, 0.131840, 0.407849, 0.032655, 0.562670, 0.578539,
0.636982, 0.469131],
[0.250121, 0.483413, 0.264094, 0.307941, 0.733994,
0.238909, 0.172450, 0.289615, 0.639522, 0.156406, 0.927321, 0.115653,
0.439196, 0.138059, 0.430463, 0.210567, 0.043311, 0.427593, 0.713422,
0.874737, 0.349128, 0.641711, 0.307643, 0.960792, 0.057629, 0.274816,
0.959588, 0.398889, 0.271323, 0.171029, 0.242094, 0.978259, 0.096858,
0.335654, 0.139114, 0.149906, 0.430454, 0.483910, 0.630219, 0.285243,
0.744639, 0.707501, 0.128506, 0.505621, 0.986704, 0.086747, 0.267839,
0.638377, 0.606427, 0.850217, 0.108584, 0.368790, 0.415063, 0.828986,
0.366711, 0.960958, 0.215415, 0.253284, 0.268513, 0.436681, 0.111406,
0.103739, 0.653758, 0.511406, 0.359645, 0.142705, 0.886096, 0.729033,
0.570775, 0.475699, 0.781399, 0.624880, 0.453394, 0.105905, 0.258093,
0.043573, 0.695208, 0.381172, 0.131100, 0.470651, 0.494271, 0.329024,
0.677485, 0.566830, 0.452777, 0.283240, 0.187764, 0.614069, 0.110264,
0.810169, 0.297650, 0.804280, 0.875188, 0.876858, 0.950973, 0.347310,
0.568015, 0.203545, 0.636385, 0.402638, 0.561527, 0.704415, 0.335657,
0.416779, 0.371755, 0.656713, 0.245263, 0.069130, 0.858867, 0.117609,
0.814266, 0.357809, 0.368650, 0.195525, 0.253112, 0.273989, 0.897546,
0.737842, 0.188547, 0.991165, 0.751005, 0.552062, 0.267549, 0.903292,
0.309227, 0.766666, 0.885213, 0.570977, 0.382676, 0.564119, 0.461571,
0.938216, 0.127708, 0.189827, 0.276506, 0.377828, 0.537514, 0.231975,
0.575255, 0.211339, 0.194267, 0.110436, 0.330972, 0.823506, 0.087909,
0.405803, 0.398364, 0.585681, 0.676848, 0.126466, 0.459028, 0.068184,
0.229350, 0.508934, 0.295492, 0.876380, 0.290811, 0.034688, 0.401911,
0.337465, 0.767958, 0.852948, 0.981002, 0.763970, 0.070562, 0.312852,
0.691511, 0.244069, 0.497265, 0.912701, 0.104435, 0.312821, 0.663720,
0.688728, 0.072052, 0.040471, 0.113943, 0.208670, 0.557001, 0.255511,
0.744639, 0.166425, 0.049652, 0.223302, 0.492090, 0.229562, 0.573484,
0.590362, 0.206928, 0.294928, 0.183751, 0.270976, 0.310734, 0.917243,
0.200381, 0.691783, 0.425492, 0.882956, 0.635164, 0.618051, 0.253056,
0.505014, 0.434698, 0.910271, 0.737867, 0.553463, 0.588869, 0.748615,
0.244402, 0.282370, 0.257965, 0.119861, 0.620997, 0.124454, 0.112210,
0.383214, 0.245615, 0.853594, 0.145247, 0.776892, 0.166819, 0.548061,
0.802385, 0.142570, 0.098268, 0.887335, 0.906549, 0.087140, 0.690883,
0.731714, 0.239845, 0.207338, 0.304361] ),
([0.511246, 0.618427, 0.945036, 0.731468, 0.048402, 0.198859, 0.911771,
0.848018, 0.052889, 0.803369, 0.046754, 0.561571, 0.734703, 0.006043,
0.897824, 0.095798, 0.342509, 0.988769, 0.114628, 0.024812, 0.153844,
0.927488, 0.248695, 0.402722, 0.780084, 0.654073, 0.570818, 0.809198,
0.316813, 0.499557, 0.687429, 0.467269, 0.371319, 0.725608, 0.237007,
0.089572, 0.498337, 0.449721, 0.447890, 0.609638, 0.075076, 0.471175,
0.838435, 0.453658, 0.147130, 0.903470, 0.841304, 0.510117, 0.276162,
0.019532, 0.632557, 0.452528, 0.921018, 0.216407, 0.947417, 0.572161,
0.382977, 0.504929, 0.163121, 0.776605, 0.847072, 0.431288, 0.431196,
0.910825, 0.550035, 0.836573, 0.139134, 0.056368, 0.606738, 0.360027,
0.484054, 0.965941, 0.525834, 0.093295, 0.438520, 0.288186, 0.946165,
0.290719, 0.890316, 0.740532, 0.625294, 0.543016, 0.237251, 0.885006,
0.211066, 0.319712, 0.218513, 0.663961, 0.827631, 0.287240, 0.263222,
0.352092, 0.007172, 0.308573, 0.138035, 0.080264, 0.998840, 0.530656,
0.174993, 0.588122, 0.985260, 0.466170, 0.860317, 0.361461, 0.239326,
0.475600, 0.065981, 0.810541, 0.751152, 0.555773, 0.705252, 0.645741,
0.356883, 0.841639, 0.093051, 0.106632, 0.901242, 0.726859, 0.792779,
0.200873, 0.463912, 0.010041, 0.230628, 0.609210, 0.182226, 0.972442,
0.859035, 0.412427, 0.700308, 0.793481, 0.149602, 0.297342, 0.776666,
0.210761, 0.198004, 0.397015, 0.081118, 0.830256, 0.221076, 0.422315,
0.712790, 0.992767, 0.727836, 0.240638, 0.469253, 0.604083, 0.645497,
0.558153, 0.399884, 0.833644, 0.182073, 0.861904, 0.672903, 0.088626,
0.706290, 0.277627, 0.288400, 0.170141, 0.426405, 0.500320, 0.668447,
0.016816, 0.149052, 0.452895, 0.655019, 0.942717, 0.899747, 0.829737,
0.947935, 0.775628, 0.685324, 0.181372, 0.512894, 0.802149, 0.180853,
0.696341, 0.991943, 0.925413, 0.621357, 0.336467, 0.646809, 0.942015,
0.679678, 0.482131, 0.867000, 0.344493, 0.612293, 0.743370, 0.773278,
0.555376, 0.453688, 0.093204, 0.948363, 0.998871, 0.540880, 0.979797,
0.825709, 0.917112, 0.149327, 0.572924, 0.767724, 0.336436, 0.521439,
0.801843, 0.364666, 0.090609, 0.068575, 0.340251, 0.985717, 0.306742,
0.028718, 0.194739, 0.112888, 0.260231, 0.360057, 0.053102, 0.489731,
0.005432, 0.151982, 0.048616, 0.615528, 0.687857, 0.335643, 0.096561,
0.616504, 0.943907, 0.973693, 0.459304, 0.025239, 0.295297, 0.911924,
0.696127, 0.499680],
[0.372363, 0.313207, 0.276106, 0.279324, 0.820741,
0.205839, 0.328552, 0.399419, 0.774962, 0.215105, 0.853020, 0.226282,
0.571785, 0.173005, 0.436688, 0.238419, 0.019348, 0.460500, 0.847289,
0.878880, 0.228861, 0.695937, 0.239922, 0.971454, 0.036638, 0.461105,
0.972190, 0.455536, 0.254031, 0.210429, 0.335951, 0.912823, 0.057891,
0.222266, 0.176725, 0.124067, 0.581808, 0.736316, 0.652302, 0.248547,
0.704722, 0.716806, 0.087022, 0.515832, 0.973141, 0.095332, 0.098511,
0.549793, 0.810595, 0.823819, 0.070312, 0.561088, 0.364184, 0.852806,
0.259421, 0.961891, 0.135451, 0.210059, 0.366696, 0.553164, 0.115941,
0.097627, 0.862905, 0.499057, 0.464813, 0.240171, 0.903088, 0.744335,
0.613677, 0.796010, 0.774554, 0.611191, 0.427484, 0.043273, 0.272693,
0.091735, 0.626866, 0.598557, 0.314647, 0.606310, 0.660126, 0.401762,
0.782298, 0.587858, 0.140014, 0.598725, 0.358832, 0.437350, 0.217892,
0.874923, 0.189696, 0.806172, 0.853777, 0.849070, 0.872760, 0.442148,
0.530084, 0.230444, 0.608441, 0.564128, 0.408068, 0.732274, 0.456723,
0.421654, 0.596509, 0.737912, 0.407249, 0.036761, 0.856259, 0.132400,
0.832515, 0.371338, 0.573567, 0.425011, 0.247448, 0.522633, 0.942719,
0.907415, 0.228517, 0.986824, 0.848198, 0.284663, 0.271171, 0.915369,
0.547810, 0.745923, 0.881908, 0.504883, 0.428851, 0.661564, 0.298134,
0.974143, 0.105652, 0.342785, 0.412873, 0.440510, 0.350132, 0.211733,
0.810887, 0.132996, 0.237006, 0.051134, 0.598440, 0.778627, 0.090580,
0.634583, 0.339945, 0.511342, 0.660187, 0.184938, 0.614215, 0.064794,
0.270805, 0.456836, 0.536392, 0.940503, 0.295905, 0.129487, 0.447837,
0.526879, 0.729304, 0.910458, 0.972890, 0.761394, 0.249717, 0.346499,
0.779652, 0.299671, 0.729285, 0.934442, 0.192382, 0.281585, 0.555343,
0.601925, 0.071142, 0.063458, 0.207701, 0.356162, 0.631022, 0.165572,
0.760330, 0.131365, 0.021257, 0.262862, 0.640069, 0.250123, 0.642715,
0.204412, 0.149900, 0.125013, 0.202026, 0.475843, 0.260838, 0.853036,
0.272570, 0.625518, 0.496405, 0.928861, 0.852380, 0.627557, 0.282402,
0.475618, 0.273318, 0.944023, 0.592831, 0.608529, 0.662162, 0.839359,
0.161527, 0.473947, 0.200285, 0.107977, 0.738683, 0.100967, 0.083270,
0.366952, 0.199829, 0.879304, 0.068496, 0.810832, 0.152595, 0.411953,
0.930309, 0.339304, 0.144649, 0.935868, 0.843733, 0.110269, 0.859667,
0.592107, 0.216361, 0.175124, 0.385298] ),
([0.943571, 0.073397, 0.654073, 0.012421, 0.871151, 0.176305, 0.656026,
0.542619, 0.655629, 0.156926, 0.542405, 0.800378, 0.902829, 0.078860,
0.722526, 0.016022, 0.705557, 0.810053, 0.891964, 0.325236, 0.033692,
0.248329, 0.572222, 0.780511, 0.462539, 0.377392, 0.129032, 0.521500,
0.144963, 0.933775, 0.425214, 0.134312, 0.434156, 0.966491, 0.764672,
0.731895, 0.062868, 0.070772, 0.283547, 0.786004, 0.285745, 0.576525,
0.445143, 0.242653, 0.890561, 0.473159, 0.794336, 0.951994, 0.485031,
0.352306, 0.628040, 0.943632, 0.965209, 0.149022, 0.738151, 0.579333,
0.571642, 0.963286, 0.882778, 0.113498, 0.439985, 0.742515, 0.142247,
0.693381, 0.051637, 0.107181, 0.816492, 0.329875, 0.491256, 0.099826,
0.018921, 0.870327, 0.917081, 0.139225, 0.624866, 0.504471, 0.150365,
0.961089, 0.728721, 0.834925, 0.790429, 0.825892, 0.267861, 0.043214,
0.760887, 0.776238, 0.968657, 0.183111, 0.694266, 0.223640, 0.270516,
0.131596, 0.060457, 0.646962, 0.385601, 0.229835, 0.445692, 0.683218,
0.148625, 0.144536, 0.887997, 0.392621, 0.814661, 0.981414, 0.675863,
0.978240, 0.459761, 0.181738, 0.515610, 0.742088, 0.142125, 0.233406,
0.474563, 0.559130, 0.478713, 0.727805, 0.605640, 0.649739, 0.794183,
0.793298, 0.659810, 0.932279, 0.498611, 0.437361, 0.792779, 0.737205,
0.849818, 0.827906, 0.672170, 0.163610, 0.756523, 0.045228, 0.891018,
0.859615, 0.779260, 0.336314, 0.094516, 0.507736, 0.984222, 0.401685,
0.725700, 0.796930, 0.807337, 0.747398, 0.796442, 0.161718, 0.584033,
0.632344, 0.590472, 0.070559, 0.901578, 0.642506, 0.703818, 0.144047,
0.429609, 0.423597, 0.329569, 0.884640, 0.385693, 0.603046, 0.193243,
0.298593, 0.291696, 0.432661, 0.044496, 0.192328, 0.177679, 0.183294,
0.111820, 0.423322, 0.888943, 0.822748, 0.426374, 0.887570, 0.653188,
0.007904, 0.421369, 0.524461, 0.563555, 0.923124, 0.712760, 0.120975,
0.133824, 0.994690, 0.468154, 0.195196, 0.582293, 0.014374, 0.269692,
0.741783, 0.000336, 0.702048, 0.877377, 0.119633, 0.062075, 0.238655,
0.798944, 0.863826, 0.431074, 0.801965, 0.072726, 0.701865, 0.520829,
0.634602, 0.169713, 0.557176, 0.765007, 0.677358, 0.420850, 0.819544,
0.053285, 0.297617, 0.876003, 0.664510, 0.490219, 0.144963, 0.000885,
0.703085, 0.131718, 0.665090, 0.118290, 0.742485, 0.857143, 0.302835,
0.999176, 0.939543, 0.031739, 0.926389, 0.510941, 0.128086, 0.116794,
0.503006, 0.728446],
[0.351222, 0.278591, 0.283138, 0.122628, 0.763695,
0.308245, 0.231191, 0.327072, 0.669178, 0.237753, 0.933039, 0.161955,
0.527918, 0.162872, 0.276862, 0.338759, 0.013447, 0.500357, 0.758393,
0.890117, 0.286404, 0.614922, 0.471315, 0.955186, 0.089488, 0.366257,
0.978455, 0.616409, 0.306164, 0.160409, 0.159356, 0.978049, 0.097219,
0.344033, 0.186289, 0.116885, 0.728207, 0.627205, 0.714860, 0.208562,
0.727131, 0.828565, 0.158439, 0.466829, 0.971232, 0.121343, 0.161650,
0.661611, 0.618124, 0.841358, 0.046860, 0.452121, 0.341010, 0.865947,
0.152254, 0.966536, 0.213056, 0.304055, 0.335217, 0.523691, 0.087881,
0.064809, 0.795485, 0.452027, 0.317999, 0.116250, 0.898968, 0.803284,
0.544429, 0.616822, 0.841354, 0.611205, 0.371687, 0.033215, 0.256717,
0.064430, 0.627021, 0.627504, 0.191870, 0.526017, 0.501716, 0.287086,
0.784309, 0.622639, 0.183675, 0.468426, 0.212266, 0.355046, 0.108475,
0.889961, 0.275599, 0.872669, 0.942839, 0.877238, 0.920511, 0.392231,
0.563621, 0.144615, 0.633087, 0.349760, 0.505776, 0.827315, 0.389287,
0.540466, 0.506721, 0.612825, 0.373225, 0.041362, 0.902200, 0.092558,
0.739404, 0.272585, 0.388132, 0.298448, 0.321686, 0.374587, 0.935410,
0.898459, 0.192054, 0.991002, 0.725184, 0.382465, 0.319403, 0.858241,
0.597066, 0.710496, 0.882099, 0.531761, 0.456813, 0.845161, 0.499102,
0.969086, 0.106525, 0.332143, 0.326130, 0.364720, 0.654414, 0.171305,
0.596477, 0.110804, 0.178501, 0.057372, 0.576870, 0.814650, 0.061785,
0.478826, 0.367008, 0.320375, 0.650806, 0.181174, 0.468965, 0.037388,
0.270917, 0.385496, 0.362564, 0.833518, 0.339478, 0.046834, 0.462328,
0.608506, 0.601353, 0.894656, 0.955409, 0.723455, 0.147482, 0.237962,
0.735452, 0.206749, 0.757557, 0.933967, 0.214645, 0.375817, 0.574143,
0.817046, 0.041647, 0.069035, 0.130061, 0.486610, 0.681156, 0.481305,
0.869591, 0.204328, 0.104596, 0.343107, 0.564518, 0.275226, 0.611070,
0.249097, 0.084293, 0.199324, 0.278827, 0.330948, 0.206980, 0.806283,
0.256766, 0.588891, 0.445696, 0.906602, 0.709172, 0.561304, 0.262893,
0.710889, 0.551355, 0.953251, 0.692670, 0.754259, 0.498363, 0.792302,
0.159659, 0.299479, 0.167739, 0.071807, 0.487328, 0.132015, 0.081683,
0.272535, 0.177688, 0.930233, 0.106226, 0.619949, 0.120131, 0.334437,
0.914901, 0.213753, 0.088482, 0.942437, 0.858771, 0.095054, 0.726020,
0.678025, 0.174585, 0.250140, 0.419005] ),
([0.601306, 0.883114, 0.558214, 0.413923, 0.130222, 0.384136, 0.449324,
0.272683, 0.500229, 0.345470, 0.984649, 0.890042, 0.345927, 0.126225,
0.419813, 0.756462, 0.566454, 0.909177, 0.362194, 0.286752, 0.101840,
0.275582, 0.614643, 0.239540, 0.352245, 0.821070, 0.490219, 0.443525,
0.020661, 0.968566, 0.628559, 0.236457, 0.661061, 0.635151, 0.845820,
0.523545, 0.712516, 0.908383, 0.048616, 0.860897, 0.301248, 0.388562,
0.744163, 0.470901, 0.591296, 0.353648, 0.176855, 0.595355, 0.965209,
0.402234, 0.623585, 0.092685, 0.816248, 0.731590, 0.877987, 0.685690,
0.233009, 0.706626, 0.455763, 0.765831, 0.358135, 0.876186, 0.551866,
0.160466, 0.701590, 0.092624, 0.280770, 0.769280, 0.190893, 0.891629,
0.231391, 0.475784, 0.238411, 0.787347, 0.867458, 0.240974, 0.607837,
0.640522, 0.805078, 0.784509, 0.360515, 0.754662, 0.498337, 0.759972,
0.663198, 0.857143, 0.364544, 0.830958, 0.738365, 0.621326, 0.879940,
0.553301, 0.738395, 0.885830, 0.677480, 0.470473, 0.824793, 0.227515,
0.177862, 0.328135, 0.233619, 0.044069, 0.784997, 0.813868, 0.608844,
0.802728, 0.177038, 0.728782, 0.384106, 0.611042, 0.724540, 0.996948,
0.494827, 0.766533, 0.566729, 0.418714, 0.201544, 0.440626, 0.377331,
0.575030, 0.305979, 0.154241, 0.350841, 0.787622, 0.540605, 0.199896,
0.441176, 0.542680, 0.413648, 0.667959, 0.382977, 0.283364, 0.290170,
0.232246, 0.528031, 0.977935, 0.990936, 0.352031, 0.026643, 0.369121,
0.689871, 0.045808, 0.386700, 0.311991, 0.391797, 0.894131, 0.940397,
0.105319, 0.771477, 0.426649, 0.250557, 0.223823, 0.654927, 0.550768,
0.987945, 0.356761, 0.925199, 0.177038, 0.309977, 0.159551, 0.132481,
0.698355, 0.273354, 0.624531, 0.591235, 0.478805, 0.310312, 0.477004,
0.244270, 0.008667, 0.301309, 0.503098, 0.076144, 0.881558, 0.274270,
0.215339, 0.356426, 0.249977, 0.262093, 0.762444, 0.494186, 0.915983,
0.349712, 0.489517, 0.785394, 0.712516, 0.441755, 0.054872, 0.833766,
0.332133, 0.782250, 0.509812, 0.926908, 0.259377, 0.757439, 0.247291,
0.148778, 0.962706, 0.013001, 0.226386, 0.509751, 0.002441, 0.417310,
0.378002, 0.875271, 0.211280, 0.901120, 0.598773, 0.974853, 0.602954,
0.705924, 0.238899, 0.272378, 0.165716, 0.071505, 0.490493, 0.978912,
0.197302, 0.894253, 0.582476, 0.989257, 0.336314, 0.387463, 0.188452,
0.023652, 0.948027, 0.274850, 0.953734, 0.756066, 0.019135, 0.548418,
0.547594, 0.209479],
[0.271663, 0.525723, 0.267998, 0.250128, 0.702226,
0.229707, 0.175555, 0.297942, 0.860000, 0.169436, 0.887007, 0.126692,
0.384973, 0.182938, 0.553939, 0.253207, 0.029636, 0.425111, 0.846293,
0.842762, 0.304010, 0.762392, 0.447713, 0.952176, 0.056503, 0.447279,
0.970657, 0.412395, 0.340561, 0.121831, 0.176847, 0.956278, 0.114158,