From 1c83de1529454553c89745e3e9d5dc93346858bd Mon Sep 17 00:00:00 2001 From: Christoph Kuhn Date: Wed, 24 Jun 2026 15:27:32 +0200 Subject: [PATCH 01/20] update(downsampling): do_cic() with fixedpoints intern --- .../preprocessor/downsampling/downsampling.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/elasticai/preprocessor/downsampling/downsampling.py b/elasticai/preprocessor/downsampling/downsampling.py index d2ca383..a123e3a 100644 --- a/elasticai/preprocessor/downsampling/downsampling.py +++ b/elasticai/preprocessor/downsampling/downsampling.py @@ -1,3 +1,4 @@ +import math from dataclasses import dataclass import numpy as np @@ -45,7 +46,12 @@ def do_cic(self, uin: np.ndarray, num_stages: int = 5) -> np.ndarray: return: Numpy array with transient signal output (low sampling rate) """ output_transient = list() - gain = (self._settings.dsr * 1) ** num_stages + dsr = self._settings.dsr + gain = dsr ** num_stages + + growth_bits = math.ceil(num_stages * math.log2(dsr)) + frac_bits = max(62 - growth_bits, 1) + Q = 1 << frac_bits class integrator: def __init__(self): @@ -70,15 +76,14 @@ def update(self, inp): intes = [integrator() for a in range(num_stages)] combs = [comb() for a in range(num_stages)] for s, v in enumerate(uin): - z = v + z = round(v * Q) for i in range(num_stages): z = intes[i].update(z) - if (s % self._settings.dsr) == 0: - for c in range(num_stages): - z = combs[c].update(z) - j = z - output_transient.append(j / gain) + if s % dsr == 0: + for c in combs: + z = c.update(z) + output_transient.append(z / (Q * gain)) return np.array(output_transient) @staticmethod From 174c79f689a5cc2d483285048b4c1193d8163b63 Mon Sep 17 00:00:00 2001 From: Christoph Kuhn Date: Wed, 24 Jun 2026 20:03:35 +0200 Subject: [PATCH 02/20] update(downsampling): change downsampling_test.py - test cic against fir - test cic_all_values - test cic_first_value - test is_power_of_two --- .../downsampling/downsampling_test.py | 4074 +---------------- 1 file changed, 57 insertions(+), 4017 deletions(-) diff --git a/elasticai/preprocessor/downsampling/downsampling_test.py b/elasticai/preprocessor/downsampling/downsampling_test.py index 7b6aef8..a53a287 100644 --- a/elasticai/preprocessor/downsampling/downsampling_test.py +++ b/elasticai/preprocessor/downsampling/downsampling_test.py @@ -35,4012 +35,24 @@ def test_do_simple(self): results = DownSampling(self.sets).do_simple(self.input) self.assertEqual(results.size, self.sets.sampling_rate / self.sets.dsr) - def test_cic(self): - check = [ - 0.0, - 0.001178403647119815, - 0.034804743250596425, - 0.16744023967382896, - 0.3120886988611195, - 0.3478063268884144, - 0.25319811178657736, - 0.0652510836323828, - -0.1433458173438569, - -0.2920162700806465, - -0.3230740241483133, - -0.2237571222287626, - -0.031102569537144156, - 0.18220050785239786, - 0.33557560308523476, - 0.37133628000102936, - 0.27672039561964573, - 0.08876476956300437, - -0.11984165758907794, - -0.26852256441295147, - -0.2995917000576854, - -0.20028710675030947, - -0.007645789231956005, - 0.20564312694340944, - 0.35900313549518587, - 0.3947478008699417, - 0.3001149806594849, - 0.11214149522066116, - -0.09648371417999267, - -0.24518432539105414, - -0.276274086805582, - -0.17699103973150254, - 0.01562781175374985, - 0.22889334319114685, - 0.3822290491294861, - 0.41794849481105806, - 0.32328953925132753, - 0.13528900331497193, - -0.07336417019367218, - -0.2220936584997177, - -0.25321320823669435, - -0.15396086017608643, - 0.03862638315200806, - 0.25185939869880675, - 0.4051616817474365, - 0.4408467994594574, - 0.34615261196136476, - 0.15811594116210936, - -0.050574268074035644, - -0.1993416916656494, - -0.23050007535934447, - -0.1312874575996399, - 0.06125916000366211, - 0.2744506568908691, - 0.42771052921295166, - 0.4633523450088501, - 0.36861396877288816, - 0.18053222187042237, - -0.028203949432373046, - -0.17701821716308594, - -0.20822432556152343, - -0.10906031455993652, - 0.08343682228088378, - 0.2965779598236084, - 0.4497866004943848, - 0.4853763143157959, - 0.3905849639892578, - 0.20244937728881837, - -0.006341496963500976, - -0.1552113373565674, - -0.18647387130737306, - -0.08736714965820312, - 0.10507184326171876, - 0.31815398071289064, - 0.4713027735900879, - 0.5068317869567871, - 0.4119788882446289, - 0.2237809144592285, - 0.014926798400878906, - -0.1340071029663086, - -0.16533455718994142, - -0.06629357604980468, - 0.1260788391113281, - 0.33909357208251956, - 0.4921741323852539, - 0.5276340853881836, - 0.4327113131713867, - 0.24444264190673828, - 0.03551701232910156, - -0.1134892105102539, - -0.14488980529785156, - -0.04592276153564453, - 0.1463749090576172, - 0.35931408874511717, - 0.5123183044433594, - 0.5477011224365235, - 0.4527004132080078, - 0.2643530133056641, - 0.05534788940429688, - -0.09373863952636718, - -0.1252202978515625, - -0.02633509521484375, - 0.1658799383544922, - 0.37873574340820315, - 0.5316557873535156, - 0.5669536999511718, - 0.471867294921875, - 0.283433466796875, - 0.07434115356445313, - -0.07483334106445312, - -0.10640363159179687, - -0.00760792724609375, - 0.18451699462890625, - 0.39728184936523436, - 0.5501103039550781, - 0.5853157958984375, - 0.4901363488769531, - 0.3016086853027344, - 0.0924218310546875, - -0.056847861328125, - -0.08851417724609376, - 0.010184951171875, - 0.2022124365234375, - 0.41487928466796875, - 0.5676089501953125, - 0.6027150219726563, - 0.50743541015625, - 0.3188069580078125, - 0.109518603515625, - -0.0398532763671875, - -0.0716223779296875, - 0.02697314697265625, - 0.21889654296875, - 0.4314585546875, - 0.58408267578125, - 0.6190826953125, - 0.5236962451171875, - 0.334960390625, - 0.125563984375, - -0.023916591796875, - -0.0557950537109375, - 0.0426905810546875, - 0.234503408203125, - 0.4469541650390625, - 0.5994665673828125, - 0.634354150390625, - 0.5388547119140625, - 0.35000521484375, - 0.1404946533203125, - -0.0091007421875, - -0.041094521484375, - 0.0572750830078125, - 0.248971416015625, - 0.461305068359375, - 0.613699892578125, - 0.648469052734375, - 0.552851015625, - 0.363882099609375, - 0.154251650390625, - 0.004535830078125, - -0.027578935546875, - 0.070669267578125, - 0.262243447265625, - 0.474454619140625, - 0.6267262890625, - 0.6613719921875, - 0.565629736328125, - 0.376536328125, - 0.166780625, - 0.0169394140625, - -0.0153016015625, - 0.082820048828125, - 0.27426732421875, - 0.48635078125, - 0.6384945703125, - 0.673011796875, - 0.57714056640625, - 0.38791791015625, - 0.1780323046875, - 0.02806076171875, - -0.00431080078125, - 0.0936795703125, - 0.28499525390625, - 0.49694712890625, - 0.6489577734375, - 0.68334275390625, - 0.5873383203125, - 0.39798146484375, - 0.18796248046875, - 0.03785611328125, - 0.00534984375, - 0.103205234375, - 0.29438509765625, - 0.50620072265625, - 0.6580759765625, - 0.6923236328125, - 0.5961819921875, - 0.406688515625, - 0.196531171875, - 0.04628703125, - 0.01364234375, - 0.1113590625, - 0.302399609375, - 0.5140764453125, - 0.66581171875, - 0.69991890625, - 0.6036384375, - 0.414002578125, - 0.20370578125, - 0.0533199609375, - 0.020533828125, - 0.1181090625, - 0.309007578125, - 0.5205421875, - 0.672134921875, - 0.7060998046875, - 0.609675625, - 0.4198971875, - 0.209456953125, - 0.05892734375, - 0.02599703125, - 0.123428671875, - 0.3141825, - 0.525573046875, - 0.67702078125, - 0.710840390625, - 0.614271953125, - 0.42434796875, - 0.21376171875, - 0.063087265625, - 0.030010703125, - 0.12729625, - 0.31790515625, - 0.529148046875, - 0.6804496875, - 0.714123828125, - 0.617407734375, - 0.42733671875, - 0.216605, - 0.065781796875, - 0.03256015625, - 0.129696171875, - 0.320160078125, - 0.53125328125, - 0.682409921875, - 0.715934296875, - 0.619071875, - 0.42885328125, - 0.217973125, - 0.06700203125, - 0.03363265625, - 0.130623125, - 0.32093390625, - 0.531885, - 0.68288890625, - 0.71626921875, - 0.619255625, - 0.42889046875, - 0.21786171875, - 0.06674453125, - 0.03322421875, - 0.13006796875, - 0.3202321875, - 0.5310328125, - 0.6818915625, - 0.71512046875, - 0.6179625, - 0.42744859375, - 0.2162703125, - 0.06500796875, - 0.03133890625, - 0.12803453125, - 0.31805265625, - 0.52870546875, - 0.679415625, - 0.71250140625, - 0.61518984375, - 0.4245346875, - 0.2132090625, - 0.0617953125, - 0.027985, - 0.1245321875, - 0.31440375, - 0.5249103125, - 0.6754740625, - 0.7084140625, - 0.6109625, - 0.420150625, - 0.2086871875, - 0.05713, - 0.02316875, - 0.11957375, - 0.3093009375, - 0.519665625, - 0.670079375, - 0.7028809375, - 0.6052809375, - 0.41433, - 0.20272125, - 0.0510171875, - 0.016920625, - 0.1131796875, - 0.3027621875, - 0.5129840625, - 0.6632640625, - 0.695915625, - 0.5981765625, - 0.407086875, - 0.1953365625, - 0.04349, - 0.0092565625, - 0.10537125, - 0.2948175, - 0.504904375, - 0.65503625, - 0.6875525, - 0.589683125, - 0.3984425, - 0.186564375, - 0.034579375, - 0.000200625, - 0.096191875, - 0.285495, - 0.495439375, - 0.645453125, - 0.677820625, - 0.579815625, - 0.3884525, - 0.176429375, - 0.024315625, - -0.01019375, - 0.085656875, - 0.2748375, - 0.4846475, - 0.6345175, - 0.666775, - 0.568625625, - 0.377135, - 0.16498375, - 0.012739375, - -0.021896875, - 0.07382875, - 0.2628675, - 0.472565625, - 0.62230875, - 0.654425625, - 0.55616375, - 0.36454125, - 0.15226875, - -9.9375e-05, - -0.03486625, - 0.060739375, - 0.2496675, - 0.45921875, - 0.60886625, - 0.64083625, - 0.54248, - 0.35071625, - 0.1383325, - -0.01415, - -0.0490475, - 0.046455, - 0.23524625, - 0.44471125, - 0.59420625, - 0.6260825, - 0.52760625, - 0.33573375, - 0.12323375, - -0.02938, - -0.064365, - 0.03101375, - 0.21969875, - 0.42904125, - 0.578435, - 0.61020875, - 0.5116125, - 0.31962375, - 0.1070325, - -0.0456875, - -0.08079125, - 0.014485, - 0.20307, - 0.41230375, - 0.561595, - 0.5932725, - 0.49454875, - 0.302495, - 0.08977875, - -0.06305375, - -0.0982025, - -0.00310375, - 0.18544375, - 0.39456625, - 0.5437275, - 0.575365, - 0.47649875, - 0.28437, - 0.0715475, - -0.08134, - -0.1166475, - -0.021575, - 0.1668275, - 0.3758975, - 0.524965, - 0.556475, - 0.4575825, - 0.2653225, - 0.0524025, - -0.10052, - -0.1359675, - -0.0409425, - 0.1473825, - 0.35631, - 0.50537, - 0.536755, - 0.437785, - 0.2454475, - 0.0324775, - -0.1205675, - -0.1560725, - -0.061115, - 0.1271075, - 0.33599, - 0.4849575, - 0.5162775, - 0.417225, - 0.22483, - 0.0117725, - -0.141345, - -0.1768875, - -0.0820275, - 0.1061175, - 0.314985, - 0.463815, - 0.49512, - 0.3959875, - 0.20354, - -0.009615, - -0.1627325, - -0.1984125, - -0.1035575, - 0.08453, - 0.2932875, - 0.442115, - 0.47334, - 0.37414, - 0.1816575, - -0.031535, - -0.1848, - -0.22037, - -0.12573, - 0.06242, - 0.27105, - 0.419895, - 0.451005, - 0.351835, - 0.159235, - -0.05398, - -0.20724, - -0.242945, - -0.14828, - 0.0398, - 0.248405, - 0.39721, - 0.42825, - 0.32908, - 0.136435, - -0.076865, - -0.230075, - -0.26589, - -0.171195, - 0.01676, - 0.225455, - 0.374085, - 0.40528, - 0.3059, - 0.11328, - -0.099915, - -0.253395, - -0.289025, - -0.194455, - -0.0065, - 0.20218, - 0.3508, - 0.38185, - 0.28266, - 0.089895, - -0.12336, - -0.276725, - -0.31249, - -0.21788, - -0.029935, - 0.17867, - 0.327385, - 0.358345, - 0.25912, - 0.066435, - -0.146915, - -0.300205, - -0.33608, - -0.24137, - -0.053515, - 0.155145, - 0.30379, - 0.334875, - 0.23548, - 0.04288, - -0.17041, - -0.32382, - -0.35959, - -0.26497, - -0.07703, - 0.13164, - 0.28013, - 0.31146, - 0.21194, - 0.01933, - -0.19387, - -0.34737, - -0.38305, - -0.2884, - -0.10055, - 0.10822, - 0.25678, - 0.28792, - 0.18862, - -0.00404, - -0.21732, - -0.37058, - -0.40638, - -0.31186, - -0.12357, - 0.08473, - 0.23367, - 0.26476, - 0.16533, - -0.02709, - -0.24044, - -0.39374, - -0.42945, - -0.33475, - -0.14675, - 0.06188, - 0.21076, - 0.24173, - 0.1426, - -0.04999, - -0.26321, - -0.41652, - -0.45209, - -0.35751, - -0.16933, - 0.03934, - 0.18803, - 0.21943, - 0.12003, - -0.07241, - -0.28553, - -0.43886, - -0.47439, - -0.37973, - -0.19148, - 0.01714, - 0.16612, - 0.19719, - 0.09817, - -0.0943, - -0.30747, - -0.46054, - -0.49632, - -0.40124, - -0.21329, - -0.00428, - 0.14446, - 0.17584, - 0.07682, - -0.11578, - -0.32866, - -0.48176, - -0.51742, - -0.42236, - -0.23426, - -0.0253, - 0.12378, - 0.15482, - 0.05616, - -0.13636, - -0.34938, - -0.50222, - -0.53778, - -0.4429, - -0.2544, - -0.0456, - 0.10358, - 0.13492, - 0.03602, - -0.1562, - -0.36922, - -0.52204, - -0.55732, - -0.46254, - -0.27396, - -0.06496, - 0.08416, - 0.11582, - 0.01664, - -0.17506, - -0.38832, - -0.54092, - -0.57626, - -0.48108, - -0.2927, - -0.08352, - 0.06584, - 0.0972, - -0.00128, - -0.19352, - -0.40638, - -0.5587, - -0.59438, - -0.4987, - -0.31056, - -0.1009, - 0.04808, - 0.08006, - -0.0188, - -0.21066, - -0.4233, - -0.57594, - -0.61112, - -0.51556, - -0.32716, - -0.1177, - 0.032, - 0.0633, - -0.0349, - -0.22668, - -0.43954, - -0.59194, - -0.62668, - -0.5315, - -0.34262, - -0.13324, - 0.01656, - 0.04804, - -0.05018, - -0.24134, - -0.4549, - -0.60644, - -0.64136, - -0.54652, - -0.3568, - -0.14736, - 0.00176, - 0.03464, - -0.06464, - -0.2554, - -0.46804, - -0.6206, - -0.65496, - -0.55916, - -0.37084, - -0.16032, - -0.01076, - 0.02068, - -0.0764, - -0.26836, - -0.48096, - -0.63244, - -0.66748, - -0.57164, - -0.38216, - -0.17272, - -0.02256, - 0.00928, - -0.0878, - -0.28032, - -0.49144, - -0.64428, - -0.678, - -0.5826, - -0.39296, - -0.18336, - -0.03304, - -0.00064, - -0.0986, - -0.28992, - -0.50188, - -0.65336, - -0.68824, - -0.5918, - -0.4028, - -0.19208, - -0.04236, - -0.00956, - -0.10776, - -0.29824, - -0.51048, - -0.66224, - -0.69596, - -0.60032, - -0.4104, - -0.2006, - -0.04952, - -0.01764, - -0.11468, - -0.306, - -0.51736, - -0.6694, - -0.70292, - -0.60688, - -0.41744, - -0.20632, - -0.05656, - -0.02344, - -0.12076, - -0.312, - -0.52312, - -0.67472, - -0.70904, - -0.6114, - -0.423, - -0.21144, - -0.06136, - -0.028, - -0.12576, - -0.31596, - -0.528, - -0.67824, - -0.71332, - -0.6156, - -0.42628, - -0.21512, - -0.06488, - -0.03144, - -0.12836, - -0.31972, - -0.52976, - -0.68216, - -0.71488, - -0.61896, - -0.4276, - -0.2176, - -0.06696, - -0.03296, - -0.13064, - -0.32024, - -0.53216, - -0.68256, - -0.71696, - -0.61824, - -0.43008, - -0.21736, - -0.06744, - -0.03392, - -0.12968, - -0.32128, - -0.53168, - -0.68296, - -0.7148, - -0.61968, - -0.428, - -0.21728, - -0.06656, - -0.03152, - -0.12992, - -0.31896, - -0.5308, - -0.67992, - -0.71416, - -0.6172, - -0.426, - -0.21464, - -0.064, - -0.02944, - -0.12688, - -0.31608, - -0.52712, - -0.67784, - -0.71, - -0.61392, - -0.42232, - -0.21104, - -0.05952, - -0.02624, - -0.12168, - -0.31256, - -0.52184, - -0.67384, - -0.70456, - -0.6096, - -0.41664, - -0.20616, - -0.054, - -0.02072, - -0.11608, - -0.30648, - -0.516, - -0.66792, - -0.69848, - -0.60232, - -0.41096, - -0.19904, - -0.04792, - -0.01256, - -0.10968, - -0.29896, - -0.50968, - -0.65856, - -0.69208, - -0.59432, - -0.40272, - -0.19168, - -0.03816, - -0.00592, - -0.10048, - -0.29016, - -0.50064, - -0.6504, - -0.68288, - -0.58456, - -0.39416, - -0.1812, - -0.02984, - 0.00472, - -0.09064, - -0.28088, - -0.49, - -0.63968, - -0.67328, - -0.57408, - -0.38248, - -0.17152, - -0.0184, - 0.01608, - -0.08056, - -0.26848, - -0.47824, - -0.63, - -0.65928, - -0.56376, - -0.37008, - -0.15952, - -0.0056, - 0.0272, - -0.06688, - -0.25616, - -0.4664, - -0.61584, - -0.64736, - -0.55024, - -0.35664, - -0.14704, - 0.00896, - 0.04048, - -0.0536, - -0.24272, - -0.45152, - -0.60176, - -0.63456, - -0.53392, - -0.34384, - -0.13152, - 0.02224, - 0.05728, - -0.04048, - -0.22688, - -0.4368, - -0.58624, - -0.61936, - -0.51824, - -0.32912, - -0.11488, - 0.0376, - 0.07264, - -0.02352, - -0.21056, - -0.4224, - -0.56784, - -0.60416, - -0.50208, - -0.31136, - -0.09808, - 0.05344, - 0.09008, - -0.00624, - -0.1944, - -0.40352, - -0.55264, - -0.58464, - -0.48464, - -0.29536, - -0.07968, - 0.07232, - 0.10656, - 0.01312, - -0.1776, - -0.38384, - -0.53552, - -0.56544, - -0.46752, - -0.27456, - -0.06256, - 0.0912, - 0.12592, - 0.0312, - -0.15696, - -0.36608, - -0.51584, - -0.5464, - -0.44816, - -0.2544, - -0.04368, - 0.11088, - 0.14576, - 0.05088, - -0.13664, - -0.34672, - -0.49552, - -0.52672, - -0.42656, - -0.23664, - -0.0208, - 0.12992, - 0.16624, - 0.07248, - -0.11792, - -0.32432, - -0.47488, - -0.50736, - -0.40368, - -0.2168, - -0.00016, - 0.15248, - 0.18608, - 0.09392, - -0.0952, - -0.3056, - -0.45136, - -0.48544, - -0.38496, - -0.192, - 0.01904, - 0.17552, - 0.20832, - 0.1152, - -0.0752, - -0.28032, - -0.43136, - -0.46368, - -0.36144, - -0.17072, - 0.04208, - 0.19568, - 0.2328, - 0.13584, - -0.05056, - -0.25952, - -0.4096, - -0.43856, - -0.34112, - -0.148, - 0.06512, - 0.21936, - 0.25568, - 0.15616, - -0.02624, - -0.23648, - -0.3856, - -0.41856, - -0.31648, - -0.12416, - 0.08576, - 0.24672, - 0.27168, - 0.18624, - -0.00512, - -0.21632, - -0.36, - -0.39488, - -0.29312, - -0.10336, - 0.11392, - 0.26176, - 0.304, - 0.20512, - 0.0176, - -0.1904, - -0.33888, - -0.37056, - -0.26912, - -0.07968, - 0.13408, - 0.29024, - 0.32512, - 0.22752, - 0.04096, - -0.16352, - -0.31872, - -0.344, - -0.2512, - -0.04896, - 0.1536, - 0.3136, - 0.3488, - 0.25376, - 0.06112, - -0.13824, - -0.29472, - -0.32256, - -0.22464, - -0.02912, - 0.18016, - 0.33824, - 0.36704, - 0.28064, - 0.08768, - -0.12032, - -0.26912, - -0.29856, - -0.19904, - -0.0112, - 0.20832, - 0.35968, - 0.39168, - 0.30304, - 0.11008, - -0.09472, - -0.24544, - -0.27968, - -0.17152, - 0.0128, - 0.22784, - 0.38432, - 0.41664, - 0.32384, - 0.13472, - -0.07232, - -0.22112, - -0.25824, - -0.14784, - 0.03488, - 0.25344, - 0.40384, - 0.44224, - 0.34592, - 0.15776, - -0.0512, - -0.19744, - -0.2336, - -0.12896, - 0.06272, - 0.2704, - 0.43008, - 0.464, - 0.36736, - 0.18048, - -0.02752, - -0.17792, - -0.20672, - -0.10976, - 0.08288, - 0.29632, - 0.4512, - 0.48416, - 0.39136, - 0.20224, - -0.00704, - -0.15456, - -0.18656, - -0.0864, - 0.10208, - 0.32256, - 0.46688, - 0.51008, - 0.41056, - 0.224, - 0.0144, - -0.13248, - -0.16704, - -0.06592, - 0.12736, - 0.33792, - 0.49056, - 0.53248, - 0.42752, - 0.24704, - 0.03616, - -0.11616, - -0.14176, - -0.04864, - 0.14848, - 0.3568, - 0.51584, - 0.54592, - 0.45056, - 0.26784, - 0.05408, - -0.096, - -0.12064, - -0.0304, - 0.168, - 0.37824, - 0.5312, - 0.56736, - 0.472, - 0.2832, - 0.07456, - -0.07584, - -0.10368, - -0.01216, - 0.19008, - 0.39168, - 0.55392, - 0.58496, - 0.4896, - 0.29952, - 0.096, - -0.06016, - -0.08448, - 0.00512, - 0.20736, - 0.41088, - 0.56768, - 0.60672, - 0.50432, - 0.31936, - 0.1088, - -0.0384, - -0.07296, - 0.02752, - 0.21824, - 0.43264, - 0.5856, - 0.61568, - 0.52352, - 0.33792, - 0.12672, - -0.03072, - -0.04992, - 0.04096, - 0.23552, - 0.4448, - 0.60032, - 0.63808, - 0.53312, - 0.35008, - 0.14848, - -0.02048, - -0.03072, - 0.04864, - 0.256, - 0.45568, - 0.62016, - 0.64, - 0.56064, - 0.36032, - 0.15168, - 0.01216, - -0.03648, - 0.0768, - 0.26304, - 0.46656, - 0.63552, - 0.65536, - 0.57024, - 0.37312, - 0.16704, - 0.02048, - -0.0192, - 0.08192, - 0.2816, - 0.47744, - 0.64192, - 0.6752, - 0.57408, - 0.3904, - 0.176, - 0.02944, - -0.00704, - 0.09792, - 0.28288, - 0.496, - 0.65216, - 0.67776, - 0.59264, - 0.3968, - 0.18432, - 0.04352, - 0.0, - 0.11008, - 0.2848, - 0.51456, - 0.65344, - 0.6944, - 0.59776, - 0.40256, - 0.19712, - 0.05056, - 0.0096, - 0.11136, - 0.30592, - 0.51008, - 0.66816, - 0.6976, - 0.60928, - 0.40448, - 0.2144, - 0.0448, - 0.02432, - 0.11904, - 0.3072, - 0.52096, - 0.67072, - 0.70976, - 0.6048, - 0.42624, - 0.2016, - 0.06592, - 0.02304, - 0.12224, - 0.3168, - 0.52224, - 0.68032, - 0.7104, - 0.6112, - 0.43072, - 0.20416, - 0.07296, - 0.02368, - 0.12928, - 0.31936, - 0.52544, - 0.68288, - 0.71424, - 0.62016, - 0.41792, - 0.22912, - 0.05632, - 0.03584, - 0.13184, - 0.31488, - 0.53568, - 0.68288, - 0.71168, - 0.62336, - 0.42496, - 0.22208, - 0.06336, - 0.03712, - 0.128, - 0.32064, - 0.53376, - 0.68224, - 0.71616, - 0.61696, - 0.43584, - 0.20864, - 0.07296, - 0.03072, - 0.13376, - 0.31232, - 0.54144, - 0.67264, - 0.72064, - 0.61568, - 0.42752, - 0.21952, - 0.05888, - 0.03712, - 0.1248, - 0.31808, - 0.53056, - 0.6784, - 0.71296, - 0.61312, - 0.42752, - 0.21056, - 0.06656, - 0.02048, - 0.12928, - 0.31616, - 0.51904, - 0.68096, - 0.70592, - 0.61056, - 0.42368, - 0.20224, - 0.06208, - 0.0256, - 0.11008, - 0.3168, - 0.52288, - 0.65728, - 0.71808, - 0.59136, - 0.42752, - 0.19328, - 0.0512, - 0.02048, - 0.11776, - 0.29184, - 0.52096, - 0.65664, - 0.70784, - 0.5824, - 0.41984, - 0.19328, - 0.02816, - 0.0384, - 0.0768, - 0.30976, - 0.50688, - 0.64768, - 0.6848, - 0.60032, - 0.39296, - 0.18432, - 0.0384, - -0.00128, - 0.09472, - 0.28928, - 0.49152, - 0.64896, - 0.672, - 0.58624, - 0.38784, - 0.17024, - 0.03072, - -0.01152, - 0.08448, - 0.2752, - 0.4864, - 0.62848, - 0.672, - 0.57216, - 0.36992, - 0.16512, - 0.01664, - -0.0192, - 0.06528, - 0.2688, - 0.47104, - 0.62592, - 0.64768, - 0.55808, - 0.36864, - 0.14976, - -0.00256, - -0.03072, - 0.05632, - 0.25472, - 0.45696, - 0.608, - 0.63744, - 0.55296, - 0.34176, - 0.13952, - -0.01152, - -0.0512, - 0.04992, - 0.22528, - 0.4608, - 0.5824, - 0.6272, - 0.52992, - 0.33664, - 0.12032, - -0.02304, - -0.0768, - 0.0448, - 0.21376, - 0.42368, - 0.5888, - 0.6016, - 0.51456, - 0.32768, - 0.0896, - -0.03072, - -0.08832, - 0.02304, - 0.18944, - 0.42496, - 0.55552, - 0.5888, - 0.50688, - 0.29312, - 0.0896, - -0.05504, - -0.10752, - 0.00128, - 0.18816, - 0.38528, - 0.55552, - 0.57088, - 0.4672, - 0.29824, - 0.06656, - -0.08576, - -0.1088, - -0.02816, - 0.16896, - 0.3776, - 0.52224, - 0.5568, - 0.4608, - 0.26368, - 0.04864, - -0.096, - -0.13568, - -0.0448, - 0.14848, - 0.36224, - 0.49664, - 0.544, - 0.42752, - 0.25984, - 0.0192, - -0.11008, - -0.15744, - -0.07552, - 0.1472, - 0.32256, - 0.49024, - 0.51328, - 0.42752, - 0.20992, - 0.0192, - -0.1408, - -0.18048, - -0.0768, - 0.10496, - 0.3072, - 0.47488, - 0.4864, - 0.4032, - 0.1984, - -0.00512, - -0.16768, - -0.19968, - -0.09472, - 0.0768, - 0.29184, - 0.45184, - 0.46464, - 0.37888, - 0.17792, - -0.03072, - -0.18176, - -0.22784, - -0.11008, - 0.04224, - 0.288, - 0.40448, - 0.46592, - 0.34432, - 0.15872, - -0.04992, - -0.21376, - -0.23424, - -0.15872, - 0.04736, - 0.24832, - 0.3968, - 0.4224, - 0.33664, - 0.13056, - -0.07296, - -0.2304, - -0.26624, - -0.17152, - 0.01536, - 0.22272, - 0.384, - 0.39936, - 0.30208, - 0.11904, - -0.10112, - -0.256, - -0.2816, - -0.20992, - 0.00896, - 0.19712, - 0.34944, - 0.38144, - 0.28672, - 0.08576, - -0.12416, - -0.27264, - -0.31104, - -0.22656, - -0.02432, - 0.18048, - 0.32256, - 0.36352, - 0.25728, - 0.064, - -0.14464, - -0.3008, - -0.33536, - -0.2432, - -0.04992, - 0.14848, - 0.30976, - 0.33536, - 0.23168, - 0.04608, - -0.1728, - -0.33024, - -0.3392, - -0.288, - -0.0576, - 0.1088, - 0.3008, - 0.30464, - 0.21504, - 0.00768, - -0.18176, - -0.3584, - -0.36352, - -0.30976, - -0.0896, - 0.10496, - 0.26112, - 0.2816, - 0.18944, - 0.00256, - -0.22528, - -0.36352, - -0.40704, - -0.32256, - -0.11264, - 0.08448, - 0.22272, - 0.28416, - 0.14336, - -0.00512, - -0.26368, - -0.37376, - -0.4352, - -0.34816, - -0.12288, - 0.03328, - 0.24576, - 0.21248, - 0.14848, - -0.04352, - -0.256, - -0.43008, - -0.45824, - -0.33536, - -0.18688, - 0.04864, - 0.17408, - 0.24832, - 0.0896, - -0.06144, - -0.2816, - -0.44288, - -0.47616, - -0.3712, - -0.19968, - 0.01792, - 0.17664, - 0.17152, - 0.128, - -0.1152, - -0.28928, - -0.48128, - -0.47872, - -0.41728, - -0.19456, - -0.01792, - 0.14336, - 0.18688, - 0.07168, - -0.12288, - -0.31232, - -0.50688, - -0.4864, - -0.45312, - -0.21248, - -0.03328, - 0.12544, - 0.15616, - 0.04352, - -0.11264, - -0.3712, - -0.48896, - -0.5504, - -0.4224, - -0.27904, - -0.03072, - 0.11008, - 0.11008, - 0.06912, - -0.18944, - -0.34304, - -0.54016, - -0.54528, - -0.47104, - -0.26368, - -0.08192, - 0.11264, - 0.08192, - 0.04096, - -0.192, - -0.3712, - -0.54528, - -0.59392, - -0.45824, - -0.29696, - -0.1024, - 0.0896, - 0.08192, - 0.00512, - -0.18176, - -0.44032, - -0.5248, - -0.61184, - -0.48384, - -0.3328, - -0.08704, - 0.0512, - 0.08192, - -0.0384, - -0.19968, - -0.41472, - -0.576, - -0.63232, - -0.48128, - -0.37376, - -0.064, - -0.00512, - 0.06656, - -0.02048, - -0.23552, - -0.44288, - -0.57088, - -0.65792, - -0.51456, - -0.3456, - -0.12544, - 0.00768, - 0.04608, - -0.0384, - -0.25856, - -0.44032, - -0.60928, - -0.64768, - -0.54016, - -0.36096, - -0.13824, - -0.02304, - 0.07424, - -0.09728, - -0.2432, - -0.4736, - -0.6144, - -0.65536, - -0.55808, - -0.38144, - -0.14336, - -0.03328, - 0.04608, - -0.08704, - -0.27904, - -0.46592, - -0.64512, - -0.64768, - -0.6016, - -0.3456, - -0.20992, - 0.00256, - 0.00512, - -0.09728, - -0.2688, - -0.4992, - -0.64512, - -0.67072, - -0.58368, - -0.39936, - -0.18432, - -0.02048, - -0.01536, - -0.08448, - -0.30976, - -0.47616, - -0.66816, - -0.70144, - -0.5632, - -0.4224, - -0.18176, - -0.0512, - 0.00256, - -0.13568, - -0.25856, - -0.5376, - -0.65024, - -0.70912, - -0.5888, - -0.4096, - -0.2048, - -0.0512, - -0.01792, - -0.10496, - -0.32256, - -0.50944, - -0.64768, - -0.75008, - -0.55808, - -0.4608, - -0.16128, - -0.10752, - 0.02816, - -0.15872, - -0.28928, - -0.54784, - -0.64, - -0.73728, - -0.60928, - -0.40192, - -0.23552, - -0.0512, - -0.01792, - -0.15104, - -0.28928, - -0.54784, - -0.65536, - -0.75264, - -0.56832, - -0.4608, - -0.20224, - -0.05376, - -0.07168, - -0.06912, - -0.36864, - -0.50688, - -0.68608, - -0.72448, - -0.59392, - -0.4608, - -0.19968, - -0.05376, - -0.064, - -0.09728, - -0.35328, - -0.512, - -0.68096, - -0.7296, - -0.60416, - -0.44288, - -0.2048, - -0.07936, - -0.03584, - -0.09984, - -0.3712, - -0.49408, - -0.68096, - -0.74496, - -0.59648, - -0.42496, - -0.24064, - -0.04352, - -0.0384, - -0.13568, - -0.3072, - -0.54528, - -0.66816, - -0.7296, - -0.59136, - -0.448, - -0.20736, - -0.07168, - -0.00768, - -0.14848, - -0.31232, - -0.51712, - -0.6912, - -0.6912, - -0.64, - -0.40448, - -0.20992, - -0.06656, - -0.02304, - -0.13568, - -0.27392, - -0.57088, - -0.63488, - -0.7168, - -0.64512, - -0.35328, - -0.26112, - 0.0, - -0.06656, - -0.09216, - -0.33792, - -0.47616, - -0.68608, - -0.68608, - -0.63488, - -0.384, - -0.18432, - -0.09728, - 0.04096, - -0.1536, - -0.26624, - -0.52736, - -0.65536, - -0.67072, - -0.64512, - -0.3584, - -0.20992, - -0.02048, - -0.0256, - -0.09728, - -0.28672, - -0.49664, - -0.65024, - -0.70144, - -0.55808, - -0.41472, - -0.14848, - -0.08704, - 0.0512, - -0.09728, - -0.2816, - -0.52736, - -0.57344, - -0.72192, - -0.57344, - -0.34816, - -0.20992, - 0.02048, - -0.03584, - -0.01536, - -0.32256, - -0.47616, - -0.58368, - -0.70144, - -0.54272, - -0.38912, - -0.14848, - 0.00512, - 0.00512, - -0.06144, - -0.22528, - -0.50688, - -0.60416, - -0.63488, - -0.5632, - -0.36352, - -0.11776, - -0.02048, - 0.06144, - -0.07168, - -0.24064, - -0.43008, - -0.61952, - -0.63488, - -0.5376, - -0.3328, - -0.13824, - 0.03584, - 0.0256, - 0.0, - -0.26112, - -0.4096, - -0.60928, - -0.60928, - -0.512, - -0.33792, - -0.12288, - 0.06144, - 0.05632, - -0.02048, - -0.21504, - -0.4096, - -0.59392, - -0.58368, - -0.47104, - -0.384, - -0.03584, - 0.00512, - 0.13824, - -0.04096, - -0.1792, - -0.41472, - -0.53248, - -0.59392, - -0.51712, - -0.24064, - -0.1024, - 0.05632, - 0.11264, - 0.03584, - -0.19968, - -0.37888, - -0.53248, - -0.56832, - -0.45568, - -0.3072, - -0.0256, - 0.08192, - 0.09728, - 0.0768, - -0.1792, - -0.38912, - -0.47616, - -0.5632, - -0.46592, - -0.21504, - -0.07168, - 0.11776, - 0.13824, - 0.06144, - -0.14336, - -0.33792, - -0.50176, - -0.53248, - -0.40448, - -0.2816, - 0.02048, - 0.128, - 0.14336, - 0.10752, - -0.16384, - -0.29696, - -0.47616, - -0.512, - -0.38912, - -0.256, - 0.0512, - 0.11776, - 0.18944, - 0.11776, - -0.12288, - -0.29184, - -0.46592, - -0.4608, - -0.4096, - -0.16896, - 0.00512, - 0.16896, - 0.2304, - 0.08192, - -0.04608, - -0.2816, - -0.4352, - -0.49664, - -0.29184, - -0.25088, - 0.11264, - 0.13312, - 0.29696, - 0.08192, - -0.02048, - -0.27648, - -0.38912, - -0.46592, - -0.32256, - -0.13312, - 0.02048, - 0.256, - 0.24576, - 0.17408, - -0.09216, - -0.14336, - -0.44544, - -0.41472, - -0.29696, - -0.14336, - 0.12288, - 0.18432, - 0.31744, - 0.2048, - -0.08192, - -0.128, - -0.42496, - -0.34816, - -0.35328, - -0.0256, - 0.04608, - 0.3072, - 0.27648, - 0.22016, - 0.01024, - -0.19456, - -0.32256, - -0.37376, - -0.3072, - 0.0, - 0.0512, - 0.32256, - 0.33792, - 0.22528, - 0.0256, - -0.16384, - -0.31232, - -0.3328, - -0.26112, - -0.06144, - 0.18944, - 0.26112, - 0.38912, - 0.25088, - 0.04096, - -0.11264, - -0.32256, - -0.31232, - -0.20992, - -0.04096, - 0.1792, - 0.33792, - 0.36864, - 0.27648, - 0.11264, - -0.17408, - -0.21504, - -0.3072, - -0.2304, - 0.0, - 0.24576, - 0.29184, - 0.47104, - 0.24064, - 0.12288, - -0.07168, - -0.26624, - -0.26112, - -0.19968, - 0.03584, - 0.2304, - 0.35328, - 0.44032, - 0.34816, - 0.08192, - -0.03072, - -0.24576, - -0.25088, - -0.13824, - 0.03072, - 0.22528, - 0.4608, - 0.39424, - 0.3584, - 0.16384, - -0.04096, - -0.23552, - -0.18944, - -0.1536, - 0.06144, - 0.29696, - 0.38912, - 0.49152, - 0.36352, - 0.18432, - -0.06144, - -0.10752, - -0.29696, - -0.01536, - 0.01536, - 0.29696, - 0.49664, - 0.45568, - 0.37888, - 0.2304, - -0.01536, - -0.17408, - -0.15872, - -0.11264, - 0.13312, - 0.29696, - 0.46592, - 0.53248, - 0.39936, - 0.2048, - 0.04096, - -0.13824, - -0.1792, - -0.05632, - 0.1536, - 0.25088, - 0.59392, - 0.49152, - 0.39936, - 0.30208, - -0.0256, - -0.06144, - -0.16896, - -0.04608, - 0.14848, - 0.35328, - 0.5376, - 0.50688, - 0.49152, - 0.256, - 0.0256, - -0.06144, - -0.13312, - -0.03072, - 0.16384, - 0.384, - 0.53248, - 0.56832, - 0.4608, - 0.2816, - 0.128, - -0.19968, - 0.0768, - -0.18944, - 0.28672, - 0.37888, - 0.512, - 0.70656, - 0.31744, - 0.41984, - 0.04096, - 0.0, - -0.16384, - 0.04096, - 0.256, - 0.28672, - 0.73728, - 0.45056, - 0.6144, - 0.24576, - 0.1536, - -0.09216, - 0.02048, - -0.07168, - 0.26624, - 0.47104, - 0.512, - 0.6144, - 0.60416, - 0.27648, - 0.12288, - 0.01024, - -0.07168, - 0.0, - 0.3072, - 0.41984, - 0.55296, - 0.70656, - 0.48128, - 0.41984, - 0.0512, - 0.03072, - 0.01024, - -0.03072, - 0.28672, - 0.52224, - 0.47104, - 0.78848, - 0.49152, - 0.37888, - 0.14336, - -0.0512, - 0.09216, - 0.03072, - 0.17408, - 0.5632, - 0.62464, - 0.63488, - 0.55296, - 0.4096, - 0.14336, - 0.03072, - 0.01024, - 0.02048, - 0.29696, - 0.512, - 0.63488, - 0.64512, - 0.58368, - 0.38912, - 0.22528, - -0.01024, - -0.04096, - 0.14336, - 0.24576, - 0.57344, - 0.57344, - 0.68608, - 0.62464, - 0.37888, - 0.21504, - -0.02048, - 0.0512, - 0.1024, - 0.27648, - 0.52224, - 0.63488, - 0.70656, - 0.59392, - 0.43008, - 0.16384, - 0.0512, - 0.03072, - 0.09216, - 0.31744, - 0.49152, - 0.69632, - 0.72704, - 0.48128, - 0.53248, - 0.18432, - 0.02048, - 0.01024, - 0.2048, - 0.2048, - 0.54272, - 0.72704, - 0.6656, - 0.62464, - 0.37888, - 0.29696, - -0.0512, - 0.09216, - 0.11264, - 0.33792, - 0.49152, - 0.69632, - 0.64512, - 0.72704, - 0.3584, - 0.2048, - 0.08192, - 0.07168, - 0.03072, - 0.39936, - 0.52224, - 0.60416, - 0.8192, - 0.512, - 0.57344, - 0.03072, - 0.256, - -0.13312, - 0.22528, - 0.3072, - 0.49152, - 0.72704, - 0.70656, - 0.60416, - 0.43008, - 0.256, - 0.02048, - 0.02048, - 0.2048, - 0.23552, - 0.62464, - 0.54272, - 0.88064, - 0.54272, - 0.37888, - 0.29696, - 0.0512, - 0.0, - 0.1024, - 0.49152, - 0.29696, - 0.82944, - 0.63488, - 0.74752, - 0.27648, - 0.3072, - 0.01024, - 0.09216, - 0.07168, - 0.32768, - 0.60416, - 0.53248, - 0.90112, - 0.39936, - 0.59392, - 0.16384, - 0.0512, - 0.03072, - 0.08192, - 0.43008, - 0.3584, - 0.8704, - 0.5632, - 0.6144, - 0.52224, - 0.12288, - 0.06144, - 0.09216, - 0.0512, - 0.28672, - 0.60416, - 0.62464, - 0.69632, - 0.60416, - 0.47104, - 0.07168, - 0.22528, - -0.13312, - 0.23552, - 0.1536, - 0.67584, - 0.54272, - 0.75776, - 0.59392, - 0.37888, - 0.2048, - 0.09216, - -0.09216, - 0.17408, - 0.34816, - 0.3584, - 0.79872, - 0.58368, - 0.69632, - 0.256, - 0.3072, - -0.02048, - 0.0512, - 0.02048, - 0.33792, - 0.4608, - 0.69632, - 0.63488, - 0.59392, - 0.38912, - 0.18432, - 0.0, - -0.02048, - 0.16384, - 0.16384, - 0.6144, - 0.53248, - 0.64512, - 0.68608, - 0.26624, - 0.24576, - -0.06144, - 0.07168, - -0.04096, - 0.38912, - 0.32768, - 0.74752, - 0.60416, - 0.54272, - 0.4096, - 0.13312, - -0.06144, - 0.03072, - 0.09216, - 0.14336, - 0.54272, - 0.62464, - 0.5632, - 0.57344, - 0.39936, - 0.07168, - 0.03072, - -0.09216, - 0.09216, - 0.2048, - 0.45056, - 0.62464, - 0.54272, - 0.65536, - 0.21504, - 0.21504, - -0.13312, - 0.04096, - -0.02048, - 0.256, - 0.36864, - 0.59392, - 0.64512, - 0.512, - 0.26624, - 0.17408, - -0.08192, - -0.1024, - 0.07168, - 0.12288, - 0.52224, - 0.4608, - 0.65536, - 0.47104, - 0.256, - 0.19456, - -0.1536, - -0.04096, - -0.04096, - 0.17408, - 0.47104, - 0.47104, - 0.57344, - 0.512, - 0.3072, - -0.01024, - -0.01024, - -0.16384, - 0.02048, - 0.16384, - 0.32768, - 0.57344, - 0.52224, - 0.48128, - 0.29696, - -0.0512, - 0.03072, - -0.23552, - -0.01024, - 0.1536, - 0.3584, - 0.52224, - 0.4608, - 0.53248, - 0.19456, - 0.07168, - -0.19456, - -0.09216, - -0.07168, - 0.09216, - 0.39936, - 0.4096, - 0.6144, - 0.27648, - 0.37888, - -0.09216, - -0.13312, - -0.09216, - -0.2048, - 0.19456, - 0.28672, - 0.48128, - 0.4096, - 0.5632, - 0.06144, - 0.0, - -0.08192, - -0.24576, - -0.14336, - 0.16384, - 0.24576, - 0.43008, - 0.53248, - 0.28672, - 0.28672, - -0.12288, - -0.13312, - -0.27648, - -0.02048, - -0.06144, - 0.36864, - 0.3584, - 0.4608, - 0.43008, - 0.02048, - 0.0512, - -0.256, - -0.2048, - -0.16384, - -0.01024, - 0.34816, - 0.3072, - 0.49152, - 0.22528, - 0.29696, - -0.18432, - -0.23552, - -0.21504, - -0.18432, - -0.03072, - 0.28672, - 0.3584, - 0.36864, - 0.34816, - 0.13312, - -0.21504, - -0.1024, - -0.36864, - -0.21504, - 0.07168, - 0.11264, - 0.37888, - 0.45056, - 0.2048, - 0.08192, - -0.04096, - -0.3584, - -0.29696, - -0.1536, - -0.14336, - 0.32768, - 0.07168, - 0.768, - -0.14336, - 0.22528, - -0.06144, - -0.36864, - -0.47104, - 0.02048, - -0.32768, - 0.4096, - 0.06144, - 0.63488, - -0.1024, - 0.24576, - -0.18432, - -0.4096, - -0.18432, - -0.512, - 0.1024, - 0.1024, - 0.2048, - 0.45056, - 0.02048, - 0.16384, - -0.18432, - -0.43008, - -0.32768, - -0.34816, - 0.04096, - -0.2048, - 0.7168, - -0.12288, - 0.36864, - 0.02048, - -0.3072, - -0.24576, - -0.512, - -0.36864, - 0.06144, - -0.02048, - 0.16384, - 0.36864, - 0.14336, - 0.02048, - -0.32768, - -0.4096, - -0.32768, - -0.4096, - -0.18432, - 0.2048, - 0.12288, - 0.26624, - 0.02048, - 0.14336, - -0.38912, - -0.4096, - -0.34816, - -0.49152, - -0.1024, - 0.02048, - 0.18432, - 0.3072, - 0.0, - -0.1024, - -0.12288, - -0.512, - -0.55296, - -0.22528, - -0.38912, - 0.16384, - 0.16384, - 0.12288, - 0.12288, - 0.0, - -0.49152, - -0.32768, - -0.49152, - -0.512, - 0.0, - -0.28672, - 0.36864, - 0.04096, - 0.24576, - -0.38912, - -0.06144, - -0.6144, - -0.49152, - -0.38912, - -0.34816, - 0.08192, - 0.1024, - 0.2048, - -0.08192, - 0.02048, - -0.512, - -0.32768, - -0.69632, - -0.28672, - -0.4096, - 0.04096, - 0.06144, - 0.2048, - 0.04096, - -0.32768, - -0.16384, - -0.6144, - -0.59392, - -0.34816, - -0.38912, - 0.02048, - 0.02048, - 0.14336, - 0.02048, - -0.2048, - -0.32768, - -0.59392, - -0.512, - -0.63488, - -0.08192, - -0.28672, - 0.24576, - 0.02048, - -0.12288, - 0.06144, - -0.59392, - -0.57344, - -0.34816, - -0.9216, - 0.08192, - -0.24576, - -0.06144, - 0.3072, - -0.26624, - 0.02048, - -0.59392, - -0.49152, - -0.67584, - -0.4096, - -0.38912, - -0.22528, - 0.28672, - -0.16384, - 0.04096, - -0.18432, - -0.55296, - -0.49152, - -0.57344, - -0.67584, - -0.3072, - -0.06144, - -0.06144, - 0.16384, - -0.18432, - -0.22528, - -0.34816, - -0.69632, - -0.6144, - -0.65536, - -0.14336, - -0.2048, - -0.2048, - 0.28672, - -0.18432, - -0.24576, - -0.43008, - -0.65536, - -0.65536, - -0.57344, - -0.34816, - -0.14336, - 0.02048, - -0.06144, - -0.1024, - -0.08192, - -0.77824, - -0.3072, - -0.86016, - -0.6144, - -0.22528, - -0.22528, - -0.06144, - -0.08192, - 0.14336, - -0.45056, - -0.4096, - -0.75776, - -0.55296, - -0.59392, - -0.49152, - -0.08192, - -0.06144, - -0.08192, - 0.0, - -0.26624, - -0.57344, - -0.63488, - -0.73728, - -0.49152, - -0.47104, - -0.18432, - 0.06144, - -0.24576, - 0.16384, - -0.53248, - -0.38912, - -0.6144, - -0.77824, - -0.63488, - -0.3072, - -0.26624, - 0.0, - -0.12288, - 0.02048, - -0.34816, - -0.65536, - -0.47104, - -0.8192, - -0.47104, - -0.65536, - 0.02048, - -0.16384, - -0.06144, - 0.04096, - -0.53248, - -0.38912, - -0.63488, - -0.75776, - -0.75776, - -0.12288, - -0.47104, - 0.02048, - 0.06144, - -0.26624, - -0.22528, - -0.53248, - -0.77824, - -0.59392, - -0.59392, - -0.53248, - -0.26624, - 0.14336, - -0.2048, - -0.02048, - -0.43008, - -0.36864, - -0.9216, - -0.38912, - -1.06496, - 0.1024, - -0.67584, - 0.2048, - -0.1024, - -0.22528, - -0.18432, - -0.55296, - -0.73728, - -0.8192, - -0.32768, - -0.69632, - -0.08192, - -0.06144, - -0.18432, - 0.02048, - -0.3072, - -0.65536, - -0.57344, - -0.77824, - -0.63488, - -0.28672, - -0.49152, - 0.24576, - -0.22528, - -0.1024, - -0.2048, - -0.69632, - -0.65536, - -0.59392, - -0.67584, - -0.47104, - -0.2048, - 0.02048, - -0.14336, - -0.06144, - -0.3072, - -0.59392, - -0.59392, - -0.73728, - -0.67584, - -0.32768, - -0.28672, - -0.04096, - 0.1024, - -0.43008, - 0.04096, - -0.8192, - -0.34816, - -1.10592, - -0.26624, - -0.57344, - -0.18432, - -0.06144, - -0.02048, - -0.1024, - -0.24576, - -0.69632, - -0.43008, - -0.9216, - -0.4096, - -0.57344, - -0.1024, - -0.08192, - 0.02048, - -0.12288, - -0.36864, - -0.43008, - -0.7168, - -0.47104, - -0.98304, - -0.16384, - -0.14336, - -0.18432, - 0.1024, - -0.22528, - -0.12288, - -0.6144, - -0.63488, - -0.73728, - -0.32768, - -0.79872, - 0.2048, - -0.32768, - 0.18432, - -0.14336, - -0.34816, - -0.32768, - -0.73728, - -0.77824, - -0.34816, - -0.59392, - -0.06144, - 0.06144, - -0.24576, - 0.18432, - -0.34816, - -0.55296, - -0.57344, - -0.69632, - -0.43008, - -0.53248, - -0.14336, - 0.1024, - 0.02048, - -0.2048, - -0.2048, - -0.36864, - -0.7168, - -0.59392, - -0.57344, - -0.3072, - -0.28672, - 0.16384, - -0.02048, - -0.12288, - 0.0, - -0.83968, - -0.26624, - -0.75776, - -0.55296, - -0.3072, - -0.14336, - 0.02048, - -0.06144, - 0.28672, - -0.57344, - -0.24576, - -0.73728, - -0.4096, - -0.63488, - -0.36864, - -0.1024, - 0.16384, - -0.12288, - 0.12288, - -0.22528, - -0.53248, - -0.4096, - -0.75776, - -0.32768, - -0.53248, - 0.12288, - -0.14336, - 0.32768, - -0.26624, - -0.06144, - -0.38912, - -0.57344, - -0.67584, - -0.22528, - -0.69632, - 0.32768, - -0.14336, - 0.04096, - 0.22528, - -0.36864, - -0.3072, - -0.43008, - -0.77824, - -0.3072, - -0.3072, - -0.2048, - 0.34816, - -0.02048, - -0.02048, - -0.06144, - -0.38912, - -0.49152, - -0.73728, - -0.02048, - -0.79872, - 0.43008, - -0.16384, - 0.2048, - 0.06144, - -0.1024, - -0.28672, - -0.77824, - -0.2048, - -0.55296, - -0.24576, - -0.04096, - 0.16384, - 0.14336, - 0.14336, - -0.16384, - -0.38912, - -0.4096, - -0.49152, - -0.45056, - -0.18432, - 0.02048, - 0.08192, - 0.28672, - -0.04096, - 0.0, - -0.32768, - -0.4096, - -0.512, - -0.49152, - -0.04096, - -0.04096, - 0.12288, - 0.4096, - -0.2048, - 0.22528, - -0.47104, - -0.34816, - -0.53248, - -0.22528, - -0.3072, - 0.1024, - 0.2048, - 0.12288, - 0.43008, - -0.57344, - 0.38912, - -0.98304, - -0.04096, - -0.57344, - -0.16384, - 0.45056, - -0.36864, - 0.77824, - -0.28672, - 0.36864, - -0.49152, - -0.28672, - -0.45056, - -0.36864, - 0.12288, - -0.36864, - 0.69632, - 0.16384, - -0.16384, - 0.53248, - -0.6144, - -0.12288, - -0.45056, - -0.57344, - 0.32768, - -0.16384, - 0.45056, - 0.12288, - 0.24576, - 0.08192, - -0.08192, - -0.73728, - 0.12288, - -0.6144, - 0.0, - 0.28672, - 0.08192, - 0.45056, - 0.12288, - 0.24576, - -0.4096, - -0.12288, - -0.57344, - 0.12288, - -0.6144, - 0.77824, - -0.08192, - 0.45056, - 0.32768, - -0.12288, - -0.04096, - -0.12288, - -0.57344, - -0.12288, - 0.0, - 0.16384, - 0.2048, - 0.57344, - 0.16384, - 0.04096, - 0.12288, - -0.6144, - -0.04096, - -0.2048, - -0.32768, - 0.69632, - 0.04096, - 0.4096, - 0.28672, - 0.36864, - -0.4096, - -0.12288, - -0.16384, - -0.57344, - 0.69632, - -0.49152, - 0.8192, - 0.45056, - -0.08192, - 0.57344, - -0.28672, - -0.28672, - 0.04096, - -0.53248, - 0.24576, - 0.36864, - 0.12288, - 0.69632, - 0.12288, - 0.45056, - -0.57344, - 0.45056, - -0.57344, - -0.24576, - 0.2048, - 0.57344, - -0.24576, - 1.06496, - 0.16384, - 0.04096, - 0.12288, - -0.12288, - -0.4096, - 0.08192, - 0.04096, - 0.2048, - 0.53248, - 0.4096, - 0.57344, - -0.12288, - 0.45056, - -0.65536, - 0.2048, - -0.28672, - 0.2048, - 0.04096, - 1.06496, - -0.2048, - 0.98304, - -0.08192, - 0.04096, - 0.04096, - -0.4096, - 0.08192, - 0.12288, - 0.36864, - 0.36864, - 0.6144, - 0.4096, - 0.32768, - -0.16384, - 0.04096, - -0.12288, - -0.08192, - 0.0, - 0.6144, - 0.28672, - 0.73728, - 0.36864, - 0.16384, - 0.28672, - -0.4096, - 0.24576, - -0.36864, - 0.36864, - 0.32768, - 0.53248, - 0.53248, - 0.6144, - 0.08192, - 0.12288, - 0.04096, - -0.12288, - -0.28672, - 0.65536, - 0.0, - 0.8192, - 0.36864, - 0.53248, - 0.49152, - -0.08192, - -0.04096, - -0.04096, - 0.0, - 0.04096, - 0.73728, - 0.24576, - 0.98304, - 0.04096, - 0.65536, - -0.04096, - -0.04096, - 0.12288, - -0.28672, - 0.69632, - -0.32768, - 1.4336, - -0.2048, - 1.4336, - -0.49152, - 0.6144, - -0.24576, - -0.04096, - 0.28672, - -0.16384, - 0.77824, - 0.57344, - 0.32768, - 0.90112, - 0.2048, - 0.0, - 0.16384, - 0.08192, - -0.32768, - 0.77824, - -0.24576, - 1.35168, - 0.2048, - 0.6144, - 0.45056, - 0.04096, - 0.28672, - -0.36864, - 0.08192, - 0.45056, - 0.65536, - 0.04096, - 1.14688, - 0.49152, - 0.2048, - 0.28672, - -0.12288, - 0.4096, - -0.57344, - 0.8192, - 0.32768, - 0.32768, - 1.4336, - -0.36864, - 1.024, - 0.16384, - -0.53248, - 0.69632, - -0.16384, - 0.0, - 1.024, - 0.08192, - 1.024, - 0.69632, - 0.08192, - 0.36864, - -0.04096, - 0.12288, - -0.04096, - 0.57344, - -0.04096, - 1.31072, - 0.12288, - 1.06496, - 0.04096, - 0.36864, - 0.16384, - -0.28672, - 0.4096, - 0.0, - 0.90112, - 0.24576, - 0.94208, - 0.65536, - 0.24576, - 0.32768, - 0.04096, - -0.2048, - 0.57344, - -0.12288, - 0.65536, - 0.65536, - 1.06496, - -0.04096, - 0.98304, - -0.24576, - 0.57344, - -0.49152, - 0.49152, - 0.08192, - 0.73728, - 0.49152, - 0.86016, - 0.4096, - 0.6144, - 0.16384, - -0.04096, - 0.36864, - -0.32768, - 0.53248, - 0.53248, - 0.65536, - 0.90112, - 0.24576, - 0.69632, - 0.16384, - 0.0, - 0.12288, - 0.08192, - 0.36864, - 0.4096, - 0.86016, - 0.49152, - 0.8192, - 0.4096, - 0.04096, - 0.2048, - 0.12288, - -0.04096, - 0.49152, - 0.12288, - 1.47456, - -0.28672, - 1.4336, - 0.2048, - -0.04096, - 0.24576, - 0.08192, - 0.08192, - 0.6144, - -0.24576, - 1.47456, - 0.36864, - 0.53248, - 0.73728, - -0.16384, - 0.45056, - -0.16384, - -0.08192, - 0.73728, - 0.32768, - 0.6144, - 0.77824, - 0.69632, - 0.16384, - 0.49152, - 0.04096, - -0.08192, - 0.04096, - 0.49152, - 0.49152, - 0.69632, - 0.45056, - 1.06496, - 0.04096, - 0.36864, - 0.04096, - 0.08192, - -0.2048, - 0.90112, - -0.08192, - 1.10592, - 0.45056, - 0.6144, - 0.6144, - 0.08192, - -0.08192, - 0.24576, - 0.04096, - 0.2048, - 0.49152, - 0.94208, - 0.28672, - 1.10592, - -0.16384, - 0.57344, - 0.04096, - -0.16384, - 0.24576, - 0.08192, - 0.73728, - 0.65536, - 0.49152, - 0.8192, - 0.12288, - 0.57344, - -0.4096, - 0.36864, - -0.12288, - 0.28672, - 0.77824, - 0.2048, - 0.98304, - 0.6144, - 0.08192, - 0.49152, - -0.2048, - 0.28672, - -0.24576, - 0.4096, - 0.57344, - 0.36864, - 1.10592, - 0.2048, - 0.36864, - 0.45056, - -0.28672, - 0.2048, - 0.04096, - 0.04096, - 0.65536, - 0.69632, - 0.4096, - 0.8192, - 0.2048, - 0.32768, - -0.32768, - 0.16384, - 0.28672, - -0.24576, - 0.94208, - 0.16384, - 1.024, - 0.45056, - 0.08192, - 0.45056, - -0.04096, - -0.24576, - 0.28672, - -0.08192, - 0.90112, - 0.04096, - 1.06496, - 0.49152, - -0.04096, - 0.6144, - -0.32768, - 0.04096, - -0.08192, - 0.28672, - 0.6144, - 0.2048, - 0.90112, - 0.49152, - 0.04096, - 0.53248, - -0.4096, - 0.2048, - -0.32768, - 0.77824, - -0.4096, - 1.35168, - 0.0, - 0.90112, - 0.04096, - 0.49152, - -0.73728, - 0.49152, - -0.2048, - 0.04096, - 0.6144, - 0.57344, - 0.28672, - 0.6144, - 0.53248, - -0.08192, - -0.49152, - 0.4096, - 0.0, - -0.32768, - 0.86016, - 0.28672, - 0.6144, - 0.45056, - 0.28672, - 0.04096, - -0.16384, - 0.04096, - -0.36864, - 0.53248, - 0.24576, - 0.24576, - 0.77824, - 0.45056, - 0.16384, - 0.04096, - -0.16384, - 0.08192, - -0.49152, - 0.6144, - -0.12288, - 0.90112, - 0.16384, - 0.69632, - 0.0, - 0.16384, - -0.24576, - 0.0, - -0.32768, - 0.28672, - 0.28672, - 0.28672, - 0.86016, - 0.04096, - 0.2048, - 0.53248, - -0.98304, - 0.4096, - -0.2048, - -0.2048, - 0.53248, - 0.45056, - 0.49152, - 0.08192, - 0.69632, - -0.57344, - 0.16384, - -0.24576, - -0.4096, - 0.53248, - -0.12288, - 0.65536, - 0.12288, - 0.69632, - 0.24576, - -0.53248, - 0.12288, - -0.16384, - -0.53248, - 0.65536, - -0.49152, - 0.98304, - 0.28672, - -0.04096, - 0.77824, - -0.57344, - -0.12288, - -0.16384, - -0.32768, - 0.28672, - -0.04096, - 0.6144, - 0.08192, - 0.53248, - 0.08192, - -0.08192, - -0.2048, - -0.57344, - 0.08192, - -0.04096, - 0.16384, - 0.4096, - 0.16384, - 0.57344, - -0.04096, - -0.24576, - 0.0, - -0.45056, - -0.53248, - 0.6144, - -0.2048, - 0.12288, - 0.73728, - 0.24576, - -0.24576, - 0.12288, - -0.28672, - -0.69632, - 0.32768, - -0.57344, - 0.45056, - 0.16384, - 0.6144, - -0.04096, - -0.45056, - 1.31072, - -2.048, - 0.8192, - -0.65536, - -0.16384, - 0.32768, - 0.16384, - 0.16384, - 0.32768, - 0.4096, - -0.8192, - 0.0, - -0.4096, - -0.32768, - -0.24576, - 0.49152, - -0.16384, - 0.73728, - -0.57344, - 0.98304, - -1.2288, - 0.57344, - -0.65536, - -1.14688, - 0.98304, - -0.32768, - -0.08192, - 0.65536, - 0.4096, - -0.90112, - 0.57344, - -0.90112, - -0.08192, - -0.4096, - -0.24576, - 0.08192, - 0.0, - 1.06496, - -1.2288, - 1.39264, - -1.39264, - 0.4096, - -0.90112, - -0.65536, - 0.8192, - -0.98304, - 0.65536, - 0.4096, - -0.49152, - 0.73728, - -1.06496, - 0.0, - -0.49152, - -0.57344, - 0.08192, - -0.32768, - 0.4096, - 0.08192, - 0.4096, - -0.57344, - -0.08192, - -0.4096, - -0.4096, - -0.73728, - -0.08192, - 0.32768, - -0.32768, - 0.57344, - -0.4096, - 0.49152, - -0.90112, - 0.0, - -0.90112, - -0.16384, - -0.16384, - -0.57344, - 0.65536, - 0.08192, - -0.08192, - 0.16384, - -1.06496, - 0.49152, - -1.6384, - 0.65536, - -0.90112, - 0.0, - 0.16384, - 0.24576, - -0.16384, - 0.24576, - -0.8192, - -0.65536, - 0.32768, - -1.72032, - 1.06496, - -1.06496, - 0.08192, - 1.06496, - -0.98304, - 0.4096, - -0.73728, - -0.4096, - -0.16384, - -1.55648, - 0.73728, - -0.24576, - -0.32768, - 0.32768, - -0.08192, - 0.0, - -0.73728, - -0.16384, - -0.90112, - -0.49152, - -0.08192, - -0.24576, - 0.24576, - -0.49152, - 0.65536, - -0.73728, - 0.08192, - -0.98304, - -0.4096, - -0.8192, - 0.32768, - -0.65536, - 0.0, - 0.24576, - 0.08192, - -0.49152, - -0.32768, - -0.4096, - -0.98304, - -0.49152, - 0.49152, - -1.6384, - 1.31072, - -0.57344, - 0.24576, - -0.65536, - 0.0, - -0.98304, - -0.4096, - -0.4096, - -0.57344, - -0.16384, - 0.0, - 0.08192, - 0.0, - -0.49152, - -0.08192, - -0.90112, - -0.49152, - -0.8192, - -0.24576, - 0.32768, - -1.06496, - 1.14688, - -1.06496, - 0.4096, - -0.65536, - -0.65536, - -0.57344, - -0.98304, - 0.08192, - -0.16384, - -0.4096, - 0.32768, - -0.49152, - 0.8192, - -2.29376, - 1.2288, - -2.12992, - 0.32768, - -1.06496, - 0.65536, - -0.8192, - 0.32768, - -0.16384, - -0.08192, - -0.90112, - -0.24576, - -0.98304, - -0.49152, - -0.24576, - -0.57344, - 0.32768, - -0.08192, - -0.32768, - 0.0, - -0.65536, - -0.90112, - 0.08192, - -1.6384, - 0.32768, - -0.49152, - -0.24576, - 0.57344, - -0.24576, - -1.06496, - 0.32768, - -1.06496, - -0.49152, - -0.57344, - -0.98304, - 0.49152, - -0.24576, - -0.4096, - 0.4096, - -0.65536, - -0.16384, - -1.31072, - 0.08192, - -1.31072, - -0.08192, - -0.16384, - -0.16384, - -0.08192, - 0.08192, - -0.49152, - -0.65536, - -0.4096, - -0.90112, - -0.24576, - -1.06496, - 0.16384, - 0.16384, - -0.49152, - 0.24576, - -0.65536, - -0.4096, - -0.4096, - -1.31072, - 0.16384, - -1.31072, - 1.06496, - -1.88416, - 1.72032, - -1.47456, - 0.8192, - -1.39264, - -0.32768, - -0.49152, - -1.47456, - 0.57344, - -0.57344, - -0.24576, - -0.08192, - 0.32768, - -0.65536, - -0.57344, - -0.65536, - -0.57344, - -0.73728, - -0.16384, - -0.8192, - 0.32768, - 0.32768, - -0.90112, - 0.32768, - -0.8192, - -0.8192, - -0.57344, - -0.24576, - -1.06496, - 0.32768, - -0.49152, - 0.08192, - 0.0, - 0.0, - -1.47456, - 0.0, - -0.16384, - -2.048, - 0.73728, - -0.65536, - 0.0, - -0.16384, - 0.4096, - -0.98304, - -0.08192, - -1.14688, - 0.16384, - -1.6384, - 0.32768, - -0.49152, - -0.16384, - 0.08192, - 0.32768, - -1.31072, - 0.57344, - -1.80224, - 0.73728, - -1.72032, - -0.4096, - 0.57344, - -0.73728, - 0.08192, - 0.4096, - -0.90112, - -0.32768, - -0.4096, - -1.14688, - -0.32768, - -0.24576, - -0.4096, - -0.32768, - 0.90112, - -1.14688, - 0.4096, - -0.73728, - -0.90112, - 0.16384, - -1.96608, - 0.90112, - -0.65536, - -0.24576, - 0.16384, - 0.08192, - -0.49152, - -0.49152, - -0.4096, - -0.90112, - -0.57344, - -0.24576, - -0.57344, - 1.14688, - -1.80224, - 1.55648, - -1.39264, - 0.65536, - -1.96608, - 0.24576, - -0.57344, - -0.90112, - 0.24576, - 0.0, - -0.24576, - 0.24576, - -0.57344, - -0.16384, - -0.57344, - -0.98304, - -0.49152, - -0.24576, - 0.0, - -0.16384, - 0.08192, - -0.32768, - 0.4096, - -1.31072, - 0.16384, - -0.65536, - -1.47456, - 0.73728, - -0.73728, - 0.4096, - -0.4096, - 0.49152, - -0.65536, - -0.32768, - -0.57344, - -0.32768, - -0.90112, - -0.32768, - 0.16384, - -0.16384, - 0.08192, - 0.32768, - -1.14688, - 0.49152, - -0.65536, - -0.8192, - -0.73728, - -0.08192, - 0.32768, - -0.90112, - 0.98304, - -0.49152, - 0.16384, - -0.8192, - -0.32768, - -0.57344, - -0.57344, - -0.24576, - 0.0, - 0.0, - -0.16384, - 0.65536, - -0.90112, - 0.4096, - -1.47456, - 0.08192, - -0.57344, - -0.24576, - -0.32768, - 0.49152, - -0.24576, - 0.24576, - -0.24576, - -0.4096, - -0.24576, - -0.98304, - 0.08192, - -0.8192, - 0.32768, - 0.0, - 0.32768, - -0.24576, - 0.08192, - -0.8192, - 0.4096, - -1.39264, - 0.08192, - -0.65536, - 0.65536, - -0.4096, - 0.08192, - 0.32768, - -0.24576, - 0.0, - -0.98304, - 0.08192, - -0.98304, - 0.0, - 0.16384, - -0.08192, - 0.32768, - 0.16384, - -0.32768, - -0.24576, - -0.4096, - -0.16384, - -0.98304, - 0.4096, - -0.73728, - 1.06496, - -0.49152, - 0.49152, - -0.32768, - -0.08192, - -0.32768, - -0.73728, - -0.16384, - -0.49152, - 0.4096, - 0.24576, - -0.32768, - 0.8192, - -0.57344, - 0.16384, - -0.8192, - -0.08192, - -0.4096, - -0.49152, - 0.49152, - -0.16384, - 0.90112, - -0.73728, - 0.73728, - -0.65536, - -0.24576, - -0.32768, - -0.73728, - 0.49152, - -0.49152, - 1.06496, - -1.06496, - 1.47456, - -0.73728, - 0.32768, - -0.90112, - -0.16384, - -0.08192, - -0.73728, - 1.06496, - -0.73728, - 0.90112, - 0.32768, - -0.73728, - 0.90112, - -1.31072, - 0.16384, - -0.4096, - 0.0, - -0.49152, - 1.39264, - -0.16384, - -0.49152, - 1.39264, - -1.39264, - 0.49152, - -0.57344, - ] + @staticmethod + def _fir_cic_ref(uin: np.ndarray, dsr: int, num_stages: int) -> np.ndarray: + h = np.ones(dsr) + for _ in range(num_stages - 1): + h = np.convolve(h, np.ones(dsr)) + h = h / dsr**num_stages + full = np.convolve(uin, h) + n_out = 1 + (len(uin) - 1) // dsr + return full[::dsr][:n_out] + + def test_cic_first_value(self): results = DownSampling(self.sets).do_cic(self.input, 5) - np.testing.assert_almost_equal(results, np.array(check)) + self.assertAlmostEqual(results[0], 0.0, places=7) + + def test_cic_all_values(self): + ref = self._fir_cic_ref(self.input, self.sets.dsr, 5) + results = DownSampling(self.sets).do_cic(self.input, 5) + np.testing.assert_allclose(results, ref, atol=1e-5, rtol=0) def test_cic_size(self): check = int(1 + (self.input.size - 1) / self.sets.dsr) @@ -4052,8 +64,6 @@ def test_cic_type(self): # self.assertEqual(type(results), np.ndarray) def test_polyphase_one(self): - sets: SettingsDownSampling = deepcopy(self.sets) - sets.dsr = 2 check = [ 0.023782064257008607, 0.11844605225874726, @@ -24056,21 +20066,19 @@ def test_polyphase_one(self): -0.16517603538878334, -0.07125326561763741, ] - results = DownSampling(sets).do_decimation_polyphase(self.input, take_first_order=True) - np.testing.assert_array_almost_equal(results, np.array(check), decimal=15) + results = DownSampling(self.sets).do_decimation_polyphase_order_one(self.input) + np.testing.assert_almost_equal(results, np.array(check), decimal=10) def test_polyphase_one_size(self): check = int((self.input.size - 1) / 2) - results = DownSampling(self.sets)._do_decimation_polyphase_order_one(self.input) + results = DownSampling(self.sets).do_decimation_polyphase_order_one(self.input) self.assertEqual(results.size, check) def test_polyphase_one_type(self): - results = DownSampling(self.sets)._do_decimation_polyphase_order_one(self.input) + results = DownSampling(self.sets).do_decimation_polyphase_order_one(self.input) self.assertEqual(type(results), np.ndarray) def test_polyphase_two(self): - sets: SettingsDownSampling = deepcopy(self.sets) - sets.dsr = 2 check = [ 0.023782064257008607, 0.18969931787638333, @@ -44073,18 +40081,50 @@ def test_polyphase_two(self): -0.3764366880771571, -0.18969931787645283, ] - results = DownSampling(sets).do_decimation_polyphase(self.input, take_first_order=False) - np.testing.assert_array_almost_equal(results, np.array(check), decimal=15) + results = DownSampling(self.sets).do_decimation_polyphase_order_two(self.input) + np.testing.assert_almost_equal(results, np.array(check), decimal=10) def test_polyphase_two_size(self): check = int((self.input.size - 1) / 2) - results = DownSampling(self.sets)._do_decimation_polyphase_order_two(self.input) + results = DownSampling(self.sets).do_decimation_polyphase_order_two(self.input) self.assertEqual(results.size, check) def test_polyphase_two_type(self): - results = DownSampling(self.sets)._do_decimation_polyphase_order_two(self.input) + results = DownSampling(self.sets).do_decimation_polyphase_order_two(self.input) self.assertEqual(type(results), np.ndarray) + def test_is_power_of_two_true(self): + for n in [2, 4, 8, 16]: + self.assertTrue(DownSampling.is_power_of_two(n)) + + def test_is_power_of_two_false(self): + for n in [-2, 0, 1, 3, 5, 6]: + self.assertFalse(DownSampling.is_power_of_two(n)) + + def test_polyphase_dsr2_matches_order_two(self): + self.sets.dsr = 2 + ds = DownSampling(self.sets) + result = ds.do_decimation_polyphase(self.input, take_first_order=False) + expected = ds.do_decimation_polyphase_order_two(self.input) + np.testing.assert_array_equal(result, expected) + + def test_polyphase_dsr2_matches_order_one(self): + self.sets.dsr = 2 + ds = DownSampling(self.sets) + result = ds.do_decimation_polyphase(self.input, take_first_order=True) + expected = ds.do_decimation_polyphase_order_one(self.input) + np.testing.assert_array_equal(result, expected) + + def test_polyphase_dsr4_size(self): + self.sets.dsr = 4 + result = DownSampling(self.sets).do_decimation_polyphase(self.input) + self.assertEqual(result.size, self.input.size // 4) + + def test_polyphase_invalid_dsr_raises(self): + self.sets.dsr = 3 + ds = DownSampling(self.sets) + self.assertRaises(ValueError, ds.do_decimation_polyphase, self.input) + if __name__ == "__main__": main() From 91316c6f439f7ae21c770535320db8043a44f266 Mon Sep 17 00:00:00 2001 From: Christoph Kuhn Date: Wed, 24 Jun 2026 20:33:08 +0200 Subject: [PATCH 03/20] fix(downsampling): match tests to functions --- .../downsampling/downsampling_test.py | 28 +++++++------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/elasticai/preprocessor/downsampling/downsampling_test.py b/elasticai/preprocessor/downsampling/downsampling_test.py index a53a287..c7ca276 100644 --- a/elasticai/preprocessor/downsampling/downsampling_test.py +++ b/elasticai/preprocessor/downsampling/downsampling_test.py @@ -20066,16 +20066,16 @@ def test_polyphase_one(self): -0.16517603538878334, -0.07125326561763741, ] - results = DownSampling(self.sets).do_decimation_polyphase_order_one(self.input) + results = DownSampling(self.sets)._do_decimation_polyphase_order_one(self.input) np.testing.assert_almost_equal(results, np.array(check), decimal=10) def test_polyphase_one_size(self): check = int((self.input.size - 1) / 2) - results = DownSampling(self.sets).do_decimation_polyphase_order_one(self.input) + results = DownSampling(self.sets)._do_decimation_polyphase_order_one(self.input) self.assertEqual(results.size, check) def test_polyphase_one_type(self): - results = DownSampling(self.sets).do_decimation_polyphase_order_one(self.input) + results = DownSampling(self.sets)._do_decimation_polyphase_order_one(self.input) self.assertEqual(type(results), np.ndarray) def test_polyphase_two(self): @@ -40081,49 +40081,41 @@ def test_polyphase_two(self): -0.3764366880771571, -0.18969931787645283, ] - results = DownSampling(self.sets).do_decimation_polyphase_order_two(self.input) + results = DownSampling(self.sets)._do_decimation_polyphase_order_two(self.input) np.testing.assert_almost_equal(results, np.array(check), decimal=10) def test_polyphase_two_size(self): check = int((self.input.size - 1) / 2) - results = DownSampling(self.sets).do_decimation_polyphase_order_two(self.input) + results = DownSampling(self.sets)._do_decimation_polyphase_order_two(self.input) self.assertEqual(results.size, check) def test_polyphase_two_type(self): - results = DownSampling(self.sets).do_decimation_polyphase_order_two(self.input) + results = DownSampling(self.sets)._do_decimation_polyphase_order_two(self.input) self.assertEqual(type(results), np.ndarray) - def test_is_power_of_two_true(self): - for n in [2, 4, 8, 16]: - self.assertTrue(DownSampling.is_power_of_two(n)) - - def test_is_power_of_two_false(self): - for n in [-2, 0, 1, 3, 5, 6]: - self.assertFalse(DownSampling.is_power_of_two(n)) - def test_polyphase_dsr2_matches_order_two(self): self.sets.dsr = 2 ds = DownSampling(self.sets) result = ds.do_decimation_polyphase(self.input, take_first_order=False) - expected = ds.do_decimation_polyphase_order_two(self.input) + expected = ds._do_decimation_polyphase_order_two(self.input) np.testing.assert_array_equal(result, expected) def test_polyphase_dsr2_matches_order_one(self): self.sets.dsr = 2 ds = DownSampling(self.sets) result = ds.do_decimation_polyphase(self.input, take_first_order=True) - expected = ds.do_decimation_polyphase_order_one(self.input) + expected = ds._do_decimation_polyphase_order_one(self.input) np.testing.assert_array_equal(result, expected) def test_polyphase_dsr4_size(self): self.sets.dsr = 4 - result = DownSampling(self.sets).do_decimation_polyphase(self.input) + result = DownSampling(self.sets).do_decimation_polyphase(self.input, take_first_order=True) self.assertEqual(result.size, self.input.size // 4) def test_polyphase_invalid_dsr_raises(self): self.sets.dsr = 3 ds = DownSampling(self.sets) - self.assertRaises(ValueError, ds.do_decimation_polyphase, self.input) + self.assertRaises(ValueError, ds.do_decimation_polyphase, self.input, True) if __name__ == "__main__": From 4d5a3e35ff3da42f283e3e3c0e4b9378c992816f Mon Sep 17 00:00:00 2001 From: Christoph Kuhn Date: Thu, 25 Jun 2026 11:08:33 +0200 Subject: [PATCH 04/20] feat(downsampling): add downsampling.c/h --- plugins_c/downsampling/downsampling.c | 213 ++++++++++++++++++++++++++ plugins_c/downsampling/downsampling.h | 65 ++++++++ 2 files changed, 278 insertions(+) create mode 100644 plugins_c/downsampling/downsampling.c create mode 100644 plugins_c/downsampling/downsampling.h diff --git a/plugins_c/downsampling/downsampling.c b/plugins_c/downsampling/downsampling.c new file mode 100644 index 0000000..212b039 --- /dev/null +++ b/plugins_c/downsampling/downsampling.c @@ -0,0 +1,213 @@ +#include "downsampling.h" + +#include +#include +#include + +/* ------------------------------------------------------------------------- + * default-setting + * ---------------------------------------------------------------------- */ +const SettingsDownSampling DefaultSettingsDownSampling = { + .sampling_rate = 1000.0f, + .dsr = 10, +}; + +/* ------------------------------------------------------------------------- + * helpers + * ---------------------------------------------------------------------- */ +static int is_power_of_two(int n) +{ + return n >= 2 && (n & (n - 1)) == 0; +} + +float sampling_rate_out(const SettingsDownSampling *s) +{ + return s->sampling_rate / (float)s->dsr; +} + +/* ------------------------------------------------------------------------- + * do_simple: average every dsr input samples into one output sample. + * ---------------------------------------------------------------------- */ + +void do_simple( + const SettingsDownSampling *s, + const float *uin, + size_t uin_len, + float *uout) +{ + size_t dsr = s->dsr; + size_t sz = uin_len / (size_t)dsr; + + for (size_t i = 0; i < sz; i++) { + float sum = 0.0f; + for (size_t j = 0; j < dsr; j++) { + sum += uin[i * dsr + j]; + } + uout[i] = (sum / (float)dsr); + } +} + +/* ------------------------------------------------------------------------- + * do_cic: CIC-filter downsampling (Cascaded Integrator-Comb) + * with helpers + * + * Internally uses int64_t fixed-point to avoid float accumulation drift. + * The scale factor Q (a power of 2) is chosen so that the integrator state + * never exceeds INT64_MAX: Q = 2^(62 - ceil(N * log2(dsr))). + * ---------------------------------------------------------------------- */ +typedef struct { int64_t yn; int64_t ynm; } Integrator; +typedef struct { int64_t xn; int64_t xnm; } Comb; + +static int64_t integrator_update(Integrator *inte, int64_t inp) +{ + inte->ynm = inte->yn; + inte->yn = inte->ynm + inp; + return inte->yn; +} + +static int64_t comb_update(Comb *c, int64_t inp) +{ + c->xnm = c->xn; + c->xn = inp; + return c->xn - c->xnm; +} + + +void do_cic( + const SettingsDownSampling *s, + const float *uin, + size_t uin_len, + int num_stages, + float *uout) +{ + size_t dsr = (size_t)s->dsr; + + /* bits consumed by CIC growth: integrators accumulate up to input * dsr^N */ + int growth_bits = (int)ceilf((float)num_stages * log2f((float)dsr)); + int frac_bits = 62 - growth_bits; + if (frac_bits < 1) frac_bits = 1; + int64_t Q = (int64_t)1 << frac_bits; + + /* exact integer gain = dsr^num_stages */ + int64_t gain = 1; + for (int i = 0; i < num_stages; i++) gain *= (int64_t)dsr; + + Integrator *intes = calloc((size_t)num_stages, sizeof(Integrator)); + Comb *combs = calloc((size_t)num_stages, sizeof(Comb)); + if (!intes || !combs) { free(intes); free(combs); return; } + + size_t out_idx = 0; + for (size_t idx = 0; idx < uin_len; idx++) { + int64_t z = (int64_t)(uin[idx] * (float)Q); + for (int i = 0; i < num_stages; i++) + z = integrator_update(&intes[i], z); + + if (idx % dsr == 0) { + for (int c = 0; c < num_stages; c++) + z = comb_update(&combs[c], z); + uout[out_idx++] = (float)z / ((float)Q * (float)gain); + } + } + free(intes); + free(combs); +} + +/* ------------------------------------------------------------------------- + * do_decimation_polyphase_order_one: First-order polyphase decimation by factor 2. + * FIR coefficients: [1, 1] + * ---------------------------------------------------------------------- */ +void do_decimation_polyphase_order_one( + const float *uin, + size_t uin_len, + float *uout) +{ + float last_hs = 0.0f; + size_t out_idx = 0; + + for (size_t idx = 0; idx < uin_len; idx++) { + float val = uin[idx]; + if (idx % 2 == 1) { + uout[out_idx++] = val + last_hs; + } + last_hs = val; + } +} + +/* ------------------------------------------------------------------------- + * do_decimation_polyphase_order_two + * ---------------------------------------------------------------------- */ +void do_decimation_polyphase_order_two( + const float *uin, + size_t uin_len, + float *uout) +{ + float last_hs = 0.0f; + float last_ls = 0.0f; + size_t out_idx = 0; + + for (size_t idx = 0; idx < uin_len; idx++) { + float val = uin[idx]; + if (idx % 2 == 1) { + uout[out_idx++] = val + last_ls + 2.0f * last_hs; + last_ls = val; + } + last_hs = val; + } +} + +/* ------------------------------------------------------------------------- + * do_decimation_polyphase + * ---------------------------------------------------------------------- */ +void do_decimation_polyphase( + const SettingsDownSampling *s, + const float *uin, + size_t uin_len, + int take_first_order, + float *uout) +{ + if (!is_power_of_two(s->dsr)) return; + + int steps = 0; + int n = s->dsr; + while (n > 1) { n >>= 1; steps++; } + if (steps == 0) return; + + /* Einzelstufe: direkt in den vom Aufrufer bereitgestellten Puffer schreiben */ + if (steps == 1) { + if (take_first_order) + do_decimation_polyphase_order_one(uin, uin_len, uout); + else + do_decimation_polyphase_order_two(uin, uin_len, uout); + return; + } + + /* Mehrstufig: zwei Ping-Pong-Puffer für interne Zwischenergebnisse. + * Größe uin_len/2 reicht für alle Zwischenschritte, da jede Stufe + * die Datenmenge halbiert. */ + float *bufs[2] = { + malloc((uin_len / 2) * sizeof(float)), + malloc((uin_len / 2) * sizeof(float)) + }; + if (!bufs[0] || !bufs[1]) { free(bufs[0]); free(bufs[1]); return; } + + const float *src = uin; + size_t src_size = uin_len; + int cur = 0; + + for (int i = 0; i < steps; i++) { + /* Letzter Schritt schreibt direkt in den Aufrufer-Puffer */ + float *dst = (i == steps - 1) ? uout : bufs[cur]; + + if (take_first_order) + do_decimation_polyphase_order_one(src, src_size, dst); + else + do_decimation_polyphase_order_two(src, src_size, dst); + + src = dst; + src_size = src_size / 2; + cur ^= 1; + } + + free(bufs[0]); + free(bufs[1]); +} diff --git a/plugins_c/downsampling/downsampling.h b/plugins_c/downsampling/downsampling.h new file mode 100644 index 0000000..56244d2 --- /dev/null +++ b/plugins_c/downsampling/downsampling.h @@ -0,0 +1,65 @@ +#ifndef DOWNSAMPLING_H +#define DOWNSAMPLING_H + +#include + +typedef struct { + float sampling_rate; /* Input sampling rate [Hz] */ + int dsr; /* Downsampling ratio */ +} SettingsDownSampling; + +extern const SettingsDownSampling DefaultSettingsDownSampling; + +/* Returns the output sampling rate: SR_in / dsr. */ +float sampling_rate_out(const SettingsDownSampling *s); + +/* ------------------------------------------------------------------------- + * do_simple: average every dsr input samples into one output sample. + * ---------------------------------------------------------------------- */ +void do_simple( + const SettingsDownSampling *s, + const float *uin, + size_t uin_len, + float *uout); + +/* ------------------------------------------------------------------------- + * do_cic: CIC-filter downsampling (Cascaded Integrator-Comb) + * with helpers + * ---------------------------------------------------------------------- */ +void do_cic( + const SettingsDownSampling *s, + const float *uin, + size_t uin_len, + int num_stages, + float *uout); + +/* ------------------------------------------------------------------------- + * do_decimation_polyphase_order_one: First-order polyphase decimation by factor 2. + * FIR coefficients: [1, 1] + * ---------------------------------------------------------------------- */ +void do_decimation_polyphase_order_one( + const float *uin, + size_t uin_len, + float *uout); + +/* ------------------------------------------------------------------------- + * do_decimation_polyphase_order_two: Second-order polyphase decimation by factor 2. + * FIR coefficients: [1, 2, 1] + * ---------------------------------------------------------------------- */ +void do_decimation_polyphase_order_two( + const float *uin, + size_t uin_len, + float *uout); + +/* ------------------------------------------------------------------------- + * do_decimation_polyphase: Iterative polyphase decimation for any power-of-2 dsr. + * Applies order_one or order_two log2(dsr) times in sequence. + * ---------------------------------------------------------------------- */ +void do_decimation_polyphase( + const SettingsDownSampling *s, + const float *uin, + size_t uin_len, + int take_first_order, + float *uout); + +#endif /* DOWNSAMPLING_H */ From b9fbae23fe4e98f10b6897b5c67b9829f30d8431 Mon Sep 17 00:00:00 2001 From: Christoph Kuhn Date: Fri, 26 Jun 2026 13:15:13 +0200 Subject: [PATCH 05/20] test(downsampling): add downsampling_test.c --- plugins_c/downsampling/downsampling_test.c | 316 +++++++++++++++++++++ 1 file changed, 316 insertions(+) create mode 100644 plugins_c/downsampling/downsampling_test.c diff --git a/plugins_c/downsampling/downsampling_test.c b/plugins_c/downsampling/downsampling_test.c new file mode 100644 index 0000000..2a85550 --- /dev/null +++ b/plugins_c/downsampling/downsampling_test.c @@ -0,0 +1,316 @@ +/* downsampling_test.c – mirrors Python downsampling_test.py + * + * Compile: + * gcc -std=c99 -Wall -Wextra -o downsampling_test \ + * downsampling_test.c downsampling.c -lm + * Run: + * ./downsampling_test + */ +#include "downsampling.h" + +#include +#include +#include + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +/* ─── minimal test harness ─────────────────────────────────────────────── */ + +static int g_run = 0; +static int g_pass = 0; +static int g_fail = 0; + +#define CHECK(cond, msg) do { \ + g_run++; \ + printf("%d. check:\t",g_run); \ + if (cond) { \ + g_pass++; \ + printf("%s passed.",msg); \ + } else { \ + g_fail++; \ + fprintf(stderr, "FAIL %-52s (%s:%d)\n", \ + (msg), __FILE__, __LINE__); \ + } \ + printf("\n"); \ +} while (0) + +#define CHECK_FEQ(a, b, eps, msg) \ + CHECK(fabsf((float)(a) - (float)(b)) <= (float)(eps), msg) + +/* ─── signal parameters (mirrors Python setUp) ────────────────────────── */ + +#define FS 40000.0f +#define DSR 10 +#define N_SAMPLES 40001 /* linspace(0, 1, 40001, endpoint=True) */ +#define SENTINEL 1e38f /* value that cannot appear in filter output */ +#define CIC_STAGES 5 + +static SettingsDownSampling g_sets; +static float s_input[N_SAMPLES]; +static float s_uout [N_SAMPLES + 1]; /* +1: room for sentinel boundary check */ +static float s_ref [N_SAMPLES]; /* reference buffer for equivalence tests */ + +/* ─── FIR-equivalent CIC reference ─────────────────────────────────────── */ + +/* Impulse response of a 5-stage CIC filter with DSR=10: + * = 5-fold convolution of the boxcar [1,1,...,1] (length 10), divided by 10^5. + * Length = (DSR-1)*CIC_STAGES + 1 = 46. + * Computed with Python/numpy (float64) and embedded here as the drift-free + * mathematical ground truth. The do_cic() int64 implementation must match + * this reference within float32 output precision (~1e-6). */ +static const double s_cic_h[46] = { + 1.0000000000000001e-05, 5.0000000000000002e-05, 1.4999999999999999e-04, + 3.5000000000000000e-04, 6.9999999999999999e-04, 1.2600000000000001e-03, + 2.0999999999999999e-03, 3.3000000000000000e-03, 4.9500000000000004e-03, + 7.1500000000000001e-03, 9.9600000000000001e-03, 1.3400000000000000e-02, + 1.7450000000000000e-02, 2.2050000000000000e-02, 2.7100000000000000e-02, + 3.2460000000000003e-02, 3.7950000000000000e-02, 4.3350000000000000e-02, + 4.8399999999999999e-02, 5.2800000000000000e-02, 5.6309999999999999e-02, + 5.8749999999999997e-02, 6.0000000000000000e-02, 6.0000000000000000e-02, + 5.8749999999999997e-02, 5.6309999999999999e-02, 5.2800000000000000e-02, + 4.8399999999999999e-02, 4.3350000000000000e-02, 3.7950000000000000e-02, + 3.2460000000000003e-02, 2.7100000000000000e-02, 2.2050000000000000e-02, + 1.7450000000000000e-02, 1.3400000000000000e-02, 9.9600000000000001e-03, + 7.1500000000000001e-03, 4.9500000000000004e-03, 3.3000000000000000e-03, + 2.0999999999999999e-03, 1.2600000000000001e-03, 6.9999999999999999e-04, + 3.5000000000000000e-04, 1.4999999999999999e-04, 5.0000000000000002e-05, + 1.0000000000000001e-05 +}; +#define CIC_H_LEN 46 + +/* Compute the FIR-equivalent CIC output for output index out_idx. + * Negative input indices are treated as 0 (zero initial state). */ +static double fir_cic_ref(size_t out_idx, const float *inp) +{ + double acc = 0.0; + for (int j = 0; j < CIC_H_LEN; j++) { + int src = (int)(out_idx * (size_t)DSR) - j; + if (src >= 0) acc += s_cic_h[j] * (double)inp[src]; + } + return acc; +} + +/* mirrors Python: inp_samp(time) */ +static void generate_input(void) +{ + const float freqs[2] = { 4.0f, 400.0f }; + for (size_t i = 0; i < N_SAMPLES; i++) { + float t = (float)i / (float)(N_SAMPLES - 1); /* linspace(0,1,40001) */ + float z = 0.0f; + for (int f = 0; f < 2; f++) + z += sinf(2.0f * (float)M_PI * freqs[f] * t); + s_input[i] = 0.75f * z / 2.0f; + } +} + +/* mirrors Python: setUp() – called from main() before every test */ +static void setup(void) +{ + g_sets.sampling_rate = FS; + g_sets.dsr = DSR; + generate_input(); + for (size_t i = 0; i < N_SAMPLES + 1; i++) s_uout[i] = SENTINEL; +} + +/* ─── tests ─────────────────────────────────────────────────────────────── */ + +/* mirrors test_output_sampling_rate */ +static void test_output_sampling_rate(void) +{ + SettingsDownSampling s = { .sampling_rate = 10000.0f, .dsr = 4 }; + CHECK_FEQ(sampling_rate_out(&s), 2500.0f, 1e-3f, + "sampling_rate_out: 10000 / 4 == 2500"); +} + +/* mirrors test_do_simple (size check via sentinel boundary) */ +static void test_do_simple_size(void) +{ + /* n = (40001 / 10) * 10 = 40000 → n_blocks = 4000 */ + const size_t expected = N_SAMPLES / (size_t)g_sets.dsr; /* 4000 */ + do_simple(&g_sets, s_input, N_SAMPLES, s_uout); + CHECK(s_uout[expected - 1] != SENTINEL, "do_simple: last expected element is written"); + CHECK(s_uout[expected] == SENTINEL, "do_simple: no write past expected size"); + CHECK(expected == 4000u, "do_simple: output count is 4000"); +} + +/* mirrors test_cic (spot-check of output[0], derivable analytically) */ +static void test_cic_first_value(void) +{ + /* input[0] = 0.0 (t=0: both sines are 0) + * CIC fires at sample 0 (0 % DSR == 0); all integrators and combs + * start at 0 → z = 0 → output[0] = 0.0 / gain = 0.0 */ + do_cic(&g_sets, s_input, N_SAMPLES, CIC_STAGES, s_uout); + CHECK_FEQ(s_uout[0], 0.0f, 1e-7f, "cic: output[0] == 0.0"); +} + +/* mirrors test_cic_size */ +static void test_cic_size(void) +{ + /* Fires at 0, DSR, 2*DSR, … → count = (N_SAMPLES-1)/DSR + 1 = 4001 */ + const size_t expected = (N_SAMPLES - 1) / (size_t)g_sets.dsr + 1; /* 4001 */ + do_cic(&g_sets, s_input, N_SAMPLES, CIC_STAGES, s_uout); + CHECK(s_uout[expected - 1] != SENTINEL, "cic: last expected element is written"); + CHECK(s_uout[expected] == SENTINEL, "cic: no write past expected size"); + CHECK(expected == 4001u, "cic: output count is 4001"); +} + +/* compares every CIC output value against the FIR-equivalent reference. + * The FIR convolution uses double arithmetic and avoids the accumulation + * drift of float64 CIC integrators. Tolerance 1e-5 (actual max diff ~7e-8). */ +static void test_cic_all_values(void) +{ + do_cic(&g_sets, s_input, N_SAMPLES, CIC_STAGES, s_uout); + const size_t n_out = (N_SAMPLES - 1) / (size_t)g_sets.dsr + 1; + int ok = 1; + size_t fail_idx = 0; + double fail_diff = 0.0; + for (size_t i = 0; i < n_out; i++) { + double ref = fir_cic_ref(i, s_input); + double diff = fabs(ref - (double)s_uout[i]); + if (diff > 1e-5) { ok = 0; fail_idx = i; fail_diff = diff; break; } + } + if (!ok) + printf(" (first failure at index %zu, diff=%.3e)\n", + fail_idx, fail_diff); + CHECK(ok, "cic: all output values match FIR reference (tol 1e-5)"); +} + +/* mirrors test_polyphase_one (spot-check of output[0]) */ +static void test_polyphase_one_first_value(void) +{ + /* idx=1 (first odd index): + * output[0] = input[1] + last_hs where last_hs initialises to 0 + * = input[1] + 0.0 = input[1] + * Python golden value[0]: 0.023782064257008607 */ + do_decimation_polyphase_order_one(s_input, N_SAMPLES, s_uout); + CHECK_FEQ(s_uout[0], s_input[1], 1e-6f, + "polyphase_one: output[0] == input[1] (last_hs init = 0)"); + CHECK_FEQ(s_uout[0], 0.023782f, 1e-4f, + "polyphase_one: output[0] matches Python golden value"); +} + +/* mirrors test_polyphase_one_size */ +static void test_polyphase_one_size(void) +{ + /* Odd indices in [0..40000]: count = 40001 / 2 = 20000 (integer div) */ + const size_t expected = N_SAMPLES / 2; /* 20000 */ + do_decimation_polyphase_order_one(s_input, N_SAMPLES, s_uout); + CHECK(s_uout[expected - 1] != SENTINEL, "polyphase_one: last expected element is written"); + CHECK(s_uout[expected] == SENTINEL, "polyphase_one: no write past expected size"); + CHECK(expected == 20000u, "polyphase_one: output count is 20000"); +} + +/* mirrors test_polyphase_one_type */ +static void test_polyphase_one_finite(void) +{ + do_decimation_polyphase_order_one(s_input, N_SAMPLES, s_uout); + const size_t n = N_SAMPLES / 2; + int ok = 1; + for (size_t i = 0; i < n; i++) + if (!isfinite(s_uout[i])) { ok = 0; break; } + CHECK(ok, "polyphase_one: all output values are finite (not NaN / Inf)"); +} + +/* mirrors test_polyphase_two (spot-check of output[0]) */ +static void test_polyphase_two_first_value(void) +{ + /* idx=1: + * output[0] = input[1] + last_ls(=0) + 2*last_hs(=0) = input[1] + * Both extra terms vanish because the states initialise to 0. + * Same first element as polyphase_one (confirmed by Python golden). */ + do_decimation_polyphase_order_two(s_input, N_SAMPLES, s_uout); + CHECK_FEQ(s_uout[0], s_input[1], 1e-6f, + "polyphase_two: output[0] == input[1] (states init = 0)"); + CHECK_FEQ(s_uout[0], 0.023782f, 1e-4f, + "polyphase_two: output[0] matches Python golden value"); +} + +/* mirrors test_polyphase_two_size */ +static void test_polyphase_two_size(void) +{ + const size_t expected = N_SAMPLES / 2; /* 20000 */ + do_decimation_polyphase_order_two(s_input, N_SAMPLES, s_uout); + CHECK(s_uout[expected - 1] != SENTINEL, "polyphase_two: last expected element is written"); + CHECK(s_uout[expected] == SENTINEL, "polyphase_two: no write past expected size"); + CHECK(expected == 20000u, "polyphase_two: output count is 20000"); +} + +/* mirrors test_polyphase_two_type */ +static void test_polyphase_two_finite(void) +{ + do_decimation_polyphase_order_two(s_input, N_SAMPLES, s_uout); + const size_t n = N_SAMPLES / 2; + int ok = 1; + for (size_t i = 0; i < n; i++) + if (!isfinite(s_uout[i])) { ok = 0; break; } + CHECK(ok, "polyphase_two: all output values are finite (not NaN / Inf)"); +} + +/* is_power_of_two is static — tested indirectly via do_decimation_polyphase */ + +/* dsr=3 (not a power of two): function must return without writing output */ +static void test_polyphase_invalid_dsr(void) +{ + SettingsDownSampling s = { .sampling_rate = FS, .dsr = 3 }; + do_decimation_polyphase(&s, s_input, N_SAMPLES, 0, s_uout); + CHECK(s_uout[0] == SENTINEL, "polyphase dsr=3: no output written (not power of two)"); +} + +/* dsr=2, order_two: one pass — output must equal direct order_two call */ +static void test_polyphase_dsr2_order_two(void) +{ + SettingsDownSampling s = { .sampling_rate = FS, .dsr = 2 }; + do_decimation_polyphase_order_two(s_input, N_SAMPLES, s_ref); + do_decimation_polyphase(&s, s_input, N_SAMPLES, 0, s_uout); + CHECK_FEQ(s_uout[0], s_ref[0], 1e-6f, "polyphase dsr=2 order_two: output[0] matches"); + CHECK_FEQ(s_uout[100], s_ref[100], 1e-6f, "polyphase dsr=2 order_two: output[100] matches"); + CHECK_FEQ(s_uout[999], s_ref[999], 1e-6f, "polyphase dsr=2 order_two: output[999] matches"); +} + +/* dsr=2, order_one: one pass — output must equal direct order_one call */ +static void test_polyphase_dsr2_order_one(void) +{ + SettingsDownSampling s = { .sampling_rate = FS, .dsr = 2 }; + do_decimation_polyphase_order_one(s_input, N_SAMPLES, s_ref); + do_decimation_polyphase(&s, s_input, N_SAMPLES, 1, s_uout); + CHECK_FEQ(s_uout[0], s_ref[0], 1e-6f, "polyphase dsr=2 order_one: output[0] matches"); + CHECK_FEQ(s_uout[100], s_ref[100], 1e-6f, "polyphase dsr=2 order_one: output[100] matches"); + CHECK_FEQ(s_uout[999], s_ref[999], 1e-6f, "polyphase dsr=2 order_one: output[999] matches"); +} + +/* dsr=4: two passes → output size = N_SAMPLES / 4 = 10000 */ +static void test_polyphase_dsr4_size(void) +{ + SettingsDownSampling s = { .sampling_rate = FS, .dsr = 4 }; + const size_t expected = N_SAMPLES / 4; /* 10000 */ + do_decimation_polyphase(&s, s_input, N_SAMPLES, 0, s_uout); + CHECK(s_uout[expected - 1] != SENTINEL, "polyphase dsr=4: last expected element written"); + CHECK(s_uout[expected] == SENTINEL, "polyphase dsr=4: no write past expected size"); +} + +/* ─── main ──────────────────────────────────────────────────────────────── */ + +int main(void) +{ + setup(); test_output_sampling_rate(); + setup(); test_do_simple_size(); + setup(); test_cic_first_value(); + setup(); test_cic_size(); + setup(); test_cic_all_values(); + setup(); test_polyphase_one_first_value(); + setup(); test_polyphase_one_size(); + setup(); test_polyphase_one_finite(); + setup(); test_polyphase_two_first_value(); + setup(); test_polyphase_two_size(); + setup(); test_polyphase_two_finite(); + setup(); test_polyphase_invalid_dsr(); + setup(); test_polyphase_dsr2_order_two(); + setup(); test_polyphase_dsr2_order_one(); + setup(); test_polyphase_dsr4_size(); + + printf("\n%d tests run: %d passed, %d failed\n", + g_run, g_pass, g_fail); + return g_fail > 0 ? 1 : 0; +} From cdb8d74c6c5b2db4fb8be5e693909046a90d2c50 Mon Sep 17 00:00:00 2001 From: Christoph Kuhn Date: Sun, 28 Jun 2026 16:31:50 +0200 Subject: [PATCH 06/20] feat(adc): add adc.c/h --- plugins_c/adc/adc.c | 293 ++++++++++++++++++++++++++++++++++++++++++++ plugins_c/adc/adc.h | 125 +++++++++++++++++++ 2 files changed, 418 insertions(+) create mode 100644 plugins_c/adc/adc.c create mode 100644 plugins_c/adc/adc.h diff --git a/plugins_c/adc/adc.c b/plugins_c/adc/adc.c new file mode 100644 index 0000000..2c6bfa5 --- /dev/null +++ b/plugins_c/adc/adc.c @@ -0,0 +1,293 @@ +#include "adc.h" + +#include +#include + +/* ------------------------------------------------------------------------- + * Default settings + * ---------------------------------------------------------------------- */ +const SettingsADC DefaultSettingsADC = { + .total_bits = 12, + .frac_bits = 0, + .is_signed = 1, + .srate_orig = 1000.0f, + .srate_new = 1000.0f, + .vneg = -1.0f, + .vpos = 1.0f, +}; + +/* ------------------------------------------------------------------------- + * Internal helpers + * ---------------------------------------------------------------------- */ + +/* Smallest and largest representable integer values for this settings. */ +static int64_t min_int(const SettingsADC *s) +{ + return s->is_signed ? -((int64_t)1 << (s->total_bits - 1)) : 0; +} + +static int64_t max_int(const SettingsADC *s) +{ + return s->is_signed + ? (((int64_t)1 << (s->total_bits - 1)) - 1) + : (((int64_t)1 << s->total_bits) - 1); +} + +static float clampf(float v, float lo, float hi) +{ + return v < lo ? lo : (v > hi ? hi : v); +} + +static int64_t clampi(int64_t v, int64_t lo, int64_t hi) +{ + return v < lo ? lo : (v > hi ? hi : v); +} + +/* ------------------------------------------------------------------------- + * Computed properties + * ---------------------------------------------------------------------- */ + +float adc_vcm(const SettingsADC *s) +{ + return (s->vpos + s->vneg) * 0.5f; +} + +float adc_lsb(const SettingsADC *s) +{ + return (s->vpos - s->vneg) / (float)((int64_t)1 << s->total_bits); +} + +float adc_min_step(const SettingsADC *s) +{ + return 1.0f / (float)((int64_t)1 << s->frac_bits); +} + +/* ------------------------------------------------------------------------- + * Clamping + * ---------------------------------------------------------------------- */ + +float adc_clamp_analog(const SettingsADC *s, float v) +{ + return clampf(v, s->vneg, s->vpos); +} + +int64_t adc_clamp_int(const SettingsADC *s, int64_t v) +{ + return clampi(v, min_int(s), max_int(s)); +} + +float adc_clamp_fxp(const SettingsADC *s, float v) +{ + float step = adc_min_step(s); + return clampf(v, (float)min_int(s) * step, (float)max_int(s) * step); +} + +/* ------------------------------------------------------------------------- + * Single-sample quantization + * + * Core formula (mirrors _quantize_voltage in adc.py): + * step_count = round((clamp(v, vneg, vpos) - vneg) / lsb) + * int_val = clamp(step_count + min_int, min_int, max_int) + * fxp_val = int_val * min_step + * ---------------------------------------------------------------------- */ + +int64_t adc_voltage_to_int(const SettingsADC *s, float v) +{ + float lsb = adc_lsb(s); + float clamped = adc_clamp_analog(s, v); + int64_t steps = (int64_t)roundf((clamped - s->vneg) / lsb); + return clampi(steps + min_int(s), min_int(s), max_int(s)); +} + +float adc_voltage_to_fxp(const SettingsADC *s, float v) +{ + return (float)adc_voltage_to_int(s, v) * adc_min_step(s); +} + +/* Re-quantize a fixed-point rational value. + * Mirrors _quantize_digital(..., is_int_input=False). */ +int64_t adc_fxp_to_int(const SettingsADC *s, float v) +{ + float step = adc_min_step(s); + float clamped = adc_clamp_fxp(s, v); + return (int64_t)roundf(clamped / step); +} + +float adc_fxp_to_fxp(const SettingsADC *s, float v) +{ + return (float)adc_fxp_to_int(s, v) * adc_min_step(s); +} + +/* Re-quantize an integer value. + * Mirrors _quantize_digital(..., is_int_input=True). */ +int64_t adc_int_to_int(const SettingsADC *s, int64_t v) +{ + return clampi(v, min_int(s), max_int(s)); +} + +float adc_int_to_fxp(const SettingsADC *s, int64_t v) +{ + return (float)adc_int_to_int(s, v) * adc_min_step(s); +} + +/* ------------------------------------------------------------------------- + * Resampling + * + * Python uses scipy.signal.resample_poly, which applies a polyphase FIR + * anti-aliasing filter. Here we use linear interpolation — simpler and + * sufficient for slow biological signals on MCU. + * + * Like the Python version, the DC offset (first sample) is removed before + * interpolation and added back afterwards, preventing filter edge effects. + * ---------------------------------------------------------------------- */ + +size_t adc_resample_out_len(const SettingsADC *s, size_t in_len) +{ + if (s->srate_new == 0.0f || s->srate_orig == 0.0f) + return in_len; + return (size_t)((float)in_len * s->srate_new / s->srate_orig); +} + +size_t adc_resample(const SettingsADC *s, + const float *in, size_t in_len, + float *out, size_t out_max) +{ + /* No resampling needed */ + if (s->srate_new == 0.0f || in_len <= 1 || + s->srate_new == s->srate_orig) { + size_t n = in_len < out_max ? in_len : out_max; + for (size_t i = 0; i < n; i++) + out[i] = in[i]; + return n; + } + + float ratio = s->srate_orig / s->srate_new; /* input samples per output sample */ + size_t out_len = adc_resample_out_len(s, in_len); + if (out_len > out_max) out_len = out_max; + + float xoff = in[0]; /* DC offset removal — matches Python _do_resample */ + + for (size_t i = 0; i < out_len; i++) { + float pos = (float)i * ratio; + size_t j = (size_t)pos; + float frc = pos - (float)j; + + float a = in[j] - xoff; + float b = (j + 1 < in_len) ? (in[j + 1] - xoff) : a; + + out[i] = a + frc * (b - a) + xoff; + } + return out_len; +} + +/* ------------------------------------------------------------------------- + * Time-range cutting + * ---------------------------------------------------------------------- */ + +size_t adc_cut_transient(const SettingsADC *s, + const float *in, size_t in_len, + float t_start, float t_stop, int use_srate_orig, + const float **out_start) +{ + /* No cut: return full array */ + if (t_start >= t_stop) { + *out_start = in; + return in_len; + } + + float srate = use_srate_orig ? s->srate_orig : s->srate_new; + + size_t idx0 = (size_t)(t_start * srate); + size_t idx1 = (size_t)(t_stop * srate); + + if (idx0 >= in_len) idx0 = in_len; + if (idx1 >= in_len) idx1 = in_len; + + *out_start = in + idx0; + return idx1 - idx0; +} + +size_t adc_cut_labels(const SettingsADC *s, + const size_t *label_pos, size_t n_labels, + float t_start, float t_stop, int use_srate_orig, + size_t *out_offset) +{ + /* No cut: return all labels */ + if (t_start >= t_stop) { + *out_offset = 0; + return n_labels; + } + + float srate = use_srate_orig ? s->srate_orig : s->srate_new; + + /* Keep thresholds as float to match Python's time-domain comparison: + * first label whose label_pos/srate >= t_start/t_stop. + * Integer truncation of t*srate would give a different boundary when + * t*srate is not an integer (e.g. 0.3*5 = 1.5 truncates to 1, but the + * correct threshold is 1.5, skipping label_pos=1 which is at time 0.2). */ + float fpos0 = t_start * srate; + float fpos1 = t_stop * srate; + + /* Find first label at or after t_start */ + size_t i0 = 0; + while (i0 < n_labels && (float)label_pos[i0] < fpos0) + i0++; + + /* Find first label at or after t_stop */ + size_t i1 = i0; + while (i1 < n_labels && (float)label_pos[i1] < fpos1) + i1++; + + *out_offset = i0; + return i1 - i0; +} + +/* ------------------------------------------------------------------------- + * Full pipeline: resample + quantize + * + * All three variants resample into the caller-provided tmp[] buffer, then + * quantize element by element into out[]. The function returns the number + * of output samples. + * ---------------------------------------------------------------------- */ + +size_t adc_redefine_from_voltage(const SettingsADC *s, + const float *in, size_t in_len, + float *tmp, size_t tmp_max, + int64_t *out) +{ + size_t n = adc_resample(s, in, in_len, tmp, tmp_max); + for (size_t i = 0; i < n; i++) + out[i] = adc_voltage_to_int(s, tmp[i]); + return n; +} + +size_t adc_redefine_from_fxp(const SettingsADC *s, + const float *in, size_t in_len, + float *tmp, size_t tmp_max, + int64_t *out) +{ + size_t n = adc_resample(s, in, in_len, tmp, tmp_max); + for (size_t i = 0; i < n; i++) + out[i] = adc_fxp_to_int(s, tmp[i]); + return n; +} + +size_t adc_redefine_from_int(const SettingsADC *s, + const int64_t *in, size_t in_len, + float *tmp, size_t tmp_max, + int64_t *out) +{ + /* Convert int → float, resample as float, then re-quantize. */ + float step = adc_min_step(s); + size_t n_in = in_len < tmp_max ? in_len : tmp_max; + for (size_t i = 0; i < n_in; i++) + tmp[i] = (float)in[i] * step; + + float *resampled = tmp + n_in; /* use second half of tmp as resampled buffer */ + size_t resampled_max = tmp_max - n_in; + size_t n = adc_resample(s, tmp, n_in, resampled, resampled_max); + + for (size_t i = 0; i < n; i++) + out[i] = adc_fxp_to_int(s, resampled[i]); + return n; +} diff --git a/plugins_c/adc/adc.h b/plugins_c/adc/adc.h new file mode 100644 index 0000000..dbfd822 --- /dev/null +++ b/plugins_c/adc/adc.h @@ -0,0 +1,125 @@ +#ifndef ADC_H +#define ADC_H + +#include +#include + +typedef struct { + int total_bits; /* Total bitwidth (e.g. 12 for a 12-bit ADC) */ + int frac_bits; /* Fractional bits (0 = pure integer output) */ + int is_signed; /* 1 = signed output, 0 = unsigned output */ + float srate_orig; /* Input sampling rate [Hz] */ + float srate_new; /* Target sampling rate [Hz] */ + float vneg; /* Minimum measurable voltage [V] */ + float vpos; /* Maximum measurable voltage [V] */ +} SettingsADC; + +extern const SettingsADC DefaultSettingsADC; + +/* ------------------------------------------------------------------------- + * Computed properties (mirror of Python @property) + * ---------------------------------------------------------------------- */ + +/* vcm: midpoint of the voltage range = (vpos + vneg) / 2 */ +float adc_vcm(const SettingsADC *s); + +/* lsb: voltage represented by one bit = (vpos - vneg) / 2^total_bits */ +float adc_lsb(const SettingsADC *s); + +/* min_step: smallest representable fixed-point step = 2^(-frac_bits) */ +float adc_min_step(const SettingsADC *s); + +/* ------------------------------------------------------------------------- + * Clamping + * ---------------------------------------------------------------------- */ + +/* Clamp a voltage to [vneg, vpos]. */ +float adc_clamp_analog(const SettingsADC *s, float v); + +/* Clamp an integer sample to the representable integer range. */ +int64_t adc_clamp_int(const SettingsADC *s, int64_t v); + +/* Clamp a fixed-point rational to the representable rational range. */ +float adc_clamp_fxp(const SettingsADC *s, float v); + +/* ------------------------------------------------------------------------- + * Single-sample quantization + * + * adc_voltage_to_*: the core ADC conversion — voltage [V] → digital value. + * adc_fxp_to_*: re-quantize a fixed-point rational to a new representation. + * adc_int_to_*: re-quantize an integer sample to a new representation. + * ---------------------------------------------------------------------- */ + +int64_t adc_voltage_to_int(const SettingsADC *s, float v); +float adc_voltage_to_fxp(const SettingsADC *s, float v); + +int64_t adc_fxp_to_int(const SettingsADC *s, float v); +float adc_fxp_to_fxp(const SettingsADC *s, float v); + +int64_t adc_int_to_int(const SettingsADC *s, int64_t v); +float adc_int_to_fxp(const SettingsADC *s, int64_t v); + +/* ------------------------------------------------------------------------- + * Resampling + * + * Uses linear interpolation with DC-offset removal (see _do_resample in + * adc.py). scipy's polyphase FIR approach is more accurate but not + * practical on MCU — the difference is negligible for slow biological signals. + * + * adc_resample_out_len: expected number of output samples (allocate before call). + * adc_resample: writes into caller-provided out[0..out_max-1]. + * Returns number of samples actually written. + * ---------------------------------------------------------------------- */ +size_t adc_resample_out_len(const SettingsADC *s, size_t in_len); + +size_t adc_resample(const SettingsADC *s, + const float *in, size_t in_len, + float *out, size_t out_max); + +/* ------------------------------------------------------------------------- + * Time-range cutting + * + * adc_cut_transient: sets *out_start to point into in[] and returns the + * number of samples in [t_start, t_stop). No data is copied. + * use_srate_orig=1 → convert time using srate_orig; 0 → srate_new. + * Pass t_start >= t_stop (or both 0) to return the full array unchanged. + * + * adc_cut_labels: finds the first label position at or after t_start and + * the first at or after t_stop. Sets *out_offset to the start index and + * returns the count. The caller reads label_id[*out_offset .. +count-1] + * and label_pos[*out_offset .. +count-1]. + * ---------------------------------------------------------------------- */ +size_t adc_cut_transient(const SettingsADC *s, + const float *in, size_t in_len, + float t_start, float t_stop, int use_srate_orig, + const float **out_start); + +size_t adc_cut_labels(const SettingsADC *s, + const size_t *label_pos, size_t n_labels, + float t_start, float t_stop, int use_srate_orig, + size_t *out_offset); + +/* ------------------------------------------------------------------------- + * Full pipeline: resample + quantize + * + * The caller must provide a scratch buffer tmp[0..tmp_max-1] for the + * resampled float data (size >= adc_resample_out_len(s, in_len)). + * The integer results are written to out[]. + * Returns the number of samples written to out[]. + * ---------------------------------------------------------------------- */ +size_t adc_redefine_from_voltage(const SettingsADC *s, + const float *in, size_t in_len, + float *tmp, size_t tmp_max, + int64_t *out); + +size_t adc_redefine_from_fxp(const SettingsADC *s, + const float *in, size_t in_len, + float *tmp, size_t tmp_max, + int64_t *out); + +size_t adc_redefine_from_int(const SettingsADC *s, + const int64_t *in, size_t in_len, + float *tmp, size_t tmp_max, + int64_t *out); + +#endif /* ADC_H */ From 9a5732e71f778e69de245d23ff76cc560d42501b Mon Sep 17 00:00:00 2001 From: Christoph Kuhn Date: Sun, 28 Jun 2026 16:32:37 +0200 Subject: [PATCH 07/20] feat(adc): add adc_test.c --- plugins_c/adc/adc_test.c | 573 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 573 insertions(+) create mode 100644 plugins_c/adc/adc_test.c diff --git a/plugins_c/adc/adc_test.c b/plugins_c/adc/adc_test.c new file mode 100644 index 0000000..1c8a417 --- /dev/null +++ b/plugins_c/adc/adc_test.c @@ -0,0 +1,573 @@ +/* adc_test.c – mirrors Python elasticai/preprocessor/adc/adc_test.py + * + * Compile: + * gcc -std=c11 -Wall -Wextra -o adc_test adc_test.c adc.c -lm + * Run: + * ./adc_test + */ +#include "adc.h" + +#include +#include +#include + +/* ─── minimal test harness (same style as downsampling_test.c) ─────────── */ + +static int g_run = 0; +static int g_pass = 0; +static int g_fail = 0; + +#define CHECK(cond, msg) do { \ + g_run++; \ + printf("%d. check:\t", g_run); \ + if (cond) { \ + g_pass++; \ + printf("%s passed.\n", (msg)); \ + } else { \ + g_fail++; \ + fprintf(stderr, "FAIL %-52s (%s:%d)\n", \ + (msg), __FILE__, __LINE__); \ + } \ +} while (0) + +#define CHECK_FEQ(a, b, eps, msg) \ + CHECK(fabsf((float)(a) - (float)(b)) <= (float)(eps), (msg)) + +#define CHECK_IEQ(a, b, msg) \ + CHECK((int64_t)(a) == (int64_t)(b), (msg)) + +/* ─── shared settings (mirrors Python adc_sets fixture) ────────────────── */ + +static SettingsADC g_sets; + +static void setup(void) +{ + g_sets.total_bits = 8; + g_sets.frac_bits = 4; + g_sets.is_signed = 0; /* unsigned */ + g_sets.srate_orig = 100.0f; + g_sets.srate_new = 100.0f; + g_sets.vneg = 0.0f; + g_sets.vpos = 0.0f; +} + +/* ─── test_adc_settings_vcm ────────────────────────────────────────────── */ + +static void test_vcm(void) +{ + /* (vss=0.0, vdd=1.0, expected=0.5) */ + SettingsADC s = g_sets; + s.vneg = 0.0f; s.vpos = 1.0f; + CHECK_FEQ(adc_vcm(&s), 0.5f, 1e-6f, "vcm: 0..1 => 0.5"); + + /* (vss=-3.3, vdd=+3.3, expected=0.0) */ + s.vneg = -3.3f; s.vpos = 3.3f; + CHECK_FEQ(adc_vcm(&s), 0.0f, 1e-6f, "vcm: -3.3..+3.3 => 0.0"); +} + +/* ─── test_adc_settings_lsb ────────────────────────────────────────────── */ + +static void test_lsb(void) +{ + /* (bitwidth=4, vss=0.0, vdd=1.0, expected=0.0625) */ + SettingsADC s = g_sets; + s.total_bits = 4; s.vneg = 0.0f; s.vpos = 1.0f; + CHECK_FEQ(adc_lsb(&s), 0.0625f, 1e-7f, "lsb: 4-bit 0..1 => 0.0625"); + + /* (bitwidth=8, vss=-3.3, vdd=+3.3, expected=0.02578125) */ + s.total_bits = 8; s.vneg = -3.3f; s.vpos = 3.3f; + CHECK_FEQ(adc_lsb(&s), 0.02578125f, 1e-7f, "lsb: 8-bit -3.3..+3.3 => 0.02578125"); +} + +/* ─── test_adc_clamp_voltage ────────────────────────────────────────────── */ + +static void test_clamp_analog(void) +{ + /* (vpos=2.0, vneg=-2.0, ...) */ + SettingsADC s = g_sets; + s.vneg = -2.0f; s.vpos = 2.0f; + CHECK_FEQ(adc_clamp_analog(&s, -2.5f), -2.0f, 1e-7f, "clamp_analog: -2.5 => -2.0"); + CHECK_FEQ(adc_clamp_analog(&s, -2.0f), -2.0f, 1e-7f, "clamp_analog: -2.0 => -2.0"); + CHECK_FEQ(adc_clamp_analog(&s, -0.25f),-0.25f,1e-7f, "clamp_analog: -0.25 unchanged"); + CHECK_FEQ(adc_clamp_analog(&s, 1.5f), 1.5f, 1e-7f, "clamp_analog: 1.5 unchanged"); + CHECK_FEQ(adc_clamp_analog(&s, 2.0f), 2.0f, 1e-7f, "clamp_analog: 2.0 => 2.0"); + + /* (vpos=1.0, vneg=-1.0, ...) */ + s.vneg = -1.0f; s.vpos = 1.0f; + CHECK_FEQ(adc_clamp_analog(&s, 2.0f), 1.0f, 1e-7f, "clamp_analog: 2.0 => vpos 1.0"); + CHECK_FEQ(adc_clamp_analog(&s, 3.75f), 1.0f, 1e-7f, "clamp_analog: 3.75 => vpos 1.0"); +} + +/* ─── test_adc_clamp_integer ────────────────────────────────────────────── */ + +static void test_clamp_int(void) +{ + /* (bitwidth=8, fracwidth=0, is_signed=True, ...) */ + SettingsADC s = g_sets; + s.total_bits = 8; s.frac_bits = 0; s.is_signed = 1; + CHECK_IEQ(adc_clamp_int(&s, -512), -128, "clamp_int signed: -512 => -128"); + CHECK_IEQ(adc_clamp_int(&s, -126), -126, "clamp_int signed: -126 unchanged"); + CHECK_IEQ(adc_clamp_int(&s, 0), 0, "clamp_int signed: 0 unchanged"); + CHECK_IEQ(adc_clamp_int(&s, 64), 64, "clamp_int signed: 64 unchanged"); + CHECK_IEQ(adc_clamp_int(&s, 128), 127, "clamp_int signed: 128 => 127"); + CHECK_IEQ(adc_clamp_int(&s, 130), 127, "clamp_int signed: 130 => 127"); + CHECK_IEQ(adc_clamp_int(&s, 300), 127, "clamp_int signed: 300 => 127"); + + /* (bitwidth=8, fracwidth=0, is_signed=False, ...) */ + s.is_signed = 0; + CHECK_IEQ(adc_clamp_int(&s, -512), 0, "clamp_int unsigned: -512 => 0"); + CHECK_IEQ(adc_clamp_int(&s, -126), 0, "clamp_int unsigned: -126 => 0"); + CHECK_IEQ(adc_clamp_int(&s, 0), 0, "clamp_int unsigned: 0 unchanged"); + CHECK_IEQ(adc_clamp_int(&s, 64), 64, "clamp_int unsigned: 64 unchanged"); + CHECK_IEQ(adc_clamp_int(&s, 128), 128, "clamp_int unsigned: 128 unchanged"); + CHECK_IEQ(adc_clamp_int(&s, 130), 130, "clamp_int unsigned: 130 unchanged"); + CHECK_IEQ(adc_clamp_int(&s, 300), 255, "clamp_int unsigned: 300 => 255"); +} + +/* ─── test_adc_clamp_fxp ────────────────────────────────────────────────── */ + +static void test_clamp_fxp(void) +{ + SettingsADC s = g_sets; + + /* (bitwidth=4, fracwidth=2, is_signed=True, ...) min=-2.0, max=1.75 */ + s.total_bits = 4; s.frac_bits = 2; s.is_signed = 1; + CHECK_FEQ(adc_clamp_fxp(&s, -2.5f), -2.0f, 1e-6f, "clamp_fxp signed: -2.5 => -2.0"); + CHECK_FEQ(adc_clamp_fxp(&s, -2.0f), -2.0f, 1e-6f, "clamp_fxp signed: -2.0 => -2.0"); + CHECK_FEQ(adc_clamp_fxp(&s,-0.25f), -0.25f,1e-6f, "clamp_fxp signed: -0.25 unchanged"); + CHECK_FEQ(adc_clamp_fxp(&s, 1.5f), 1.5f, 1e-6f, "clamp_fxp signed: 1.5 unchanged"); + CHECK_FEQ(adc_clamp_fxp(&s, 2.0f), 1.75f,1e-6f, "clamp_fxp signed: 2.0 => 1.75"); + + /* (bitwidth=4, fracwidth=2, is_signed=False, ...) min=0.0, max=3.75 */ + s.is_signed = 0; + CHECK_FEQ(adc_clamp_fxp(&s, -1.0f), 0.0f, 1e-6f, "clamp_fxp unsigned: -1.0 => 0.0"); + CHECK_FEQ(adc_clamp_fxp(&s, 1.0f), 1.0f, 1e-6f, "clamp_fxp unsigned: 1.0 unchanged"); + CHECK_FEQ(adc_clamp_fxp(&s, 2.0f), 2.0f, 1e-6f, "clamp_fxp unsigned: 2.0 unchanged"); + CHECK_FEQ(adc_clamp_fxp(&s, 3.75f), 3.75f,1e-6f, "clamp_fxp unsigned: 3.75 unchanged"); + CHECK_FEQ(adc_clamp_fxp(&s, 4.0f), 3.75f,1e-6f, "clamp_fxp unsigned: 4.0 => 3.75"); + + /* (bitwidth=4, fracwidth=4, is_signed=True, ...) min=-0.5, max=0.4375 */ + s.total_bits = 4; s.frac_bits = 4; s.is_signed = 1; + CHECK_FEQ(adc_clamp_fxp(&s, -0.6f), -0.5f, 1e-6f, "clamp_fxp 4b4f s: -0.6 => -0.5"); + CHECK_FEQ(adc_clamp_fxp(&s, -0.5f), -0.5f, 1e-6f, "clamp_fxp 4b4f s: -0.5 => -0.5"); + CHECK_FEQ(adc_clamp_fxp(&s, -0.25f), -0.25f, 1e-6f, "clamp_fxp 4b4f s: -0.25 unchanged"); + CHECK_FEQ(adc_clamp_fxp(&s, -0.05f), -0.05f, 1e-6f, "clamp_fxp 4b4f s: -0.05 unchanged"); + CHECK_FEQ(adc_clamp_fxp(&s, 0.45f), 0.4375f,1e-6f, "clamp_fxp 4b4f s: 0.45 => 0.4375"); + CHECK_FEQ(adc_clamp_fxp(&s, 0.6f), 0.4375f,1e-6f, "clamp_fxp 4b4f s: 0.6 => 0.4375"); + + /* (bitwidth=4, fracwidth=4, is_signed=False, ...) min=0.0, max=0.9375 */ + s.is_signed = 0; + CHECK_FEQ(adc_clamp_fxp(&s, -0.5f), 0.0f, 1e-6f, "clamp_fxp 4b4f u: -0.5 => 0.0"); + CHECK_FEQ(adc_clamp_fxp(&s, -0.25f), 0.0f, 1e-6f, "clamp_fxp 4b4f u: -0.25 => 0.0"); + CHECK_FEQ(adc_clamp_fxp(&s, -0.05f), 0.0f, 1e-6f, "clamp_fxp 4b4f u: -0.05 => 0.0"); + CHECK_FEQ(adc_clamp_fxp(&s, 0.4375f), 0.4375f,1e-6f, "clamp_fxp 4b4f u: 0.4375 unchanged"); + CHECK_FEQ(adc_clamp_fxp(&s, 1.4375f), 0.9375f,1e-6f, "clamp_fxp 4b4f u: 1.4375 => 0.9375"); +} + +/* ─── test_adc_quantize_float (fxp_to_int) ─────────────────────────────── */ + +static void test_fxp_to_int(void) +{ + SettingsADC s = g_sets; + + /* (bitwidth=6, fracwidth=2, is_signed=True, + * input=[-1.2343, 0.4434, 0.0032, -10.0, +10.0], + * expected=[-5, 2, 0, -32, 31]) */ + s.total_bits = 6; s.frac_bits = 2; s.is_signed = 1; + CHECK_IEQ(adc_fxp_to_int(&s, -1.2343f), -5, "fxp_to_int 6b s2: -1.2343 => -5"); + CHECK_IEQ(adc_fxp_to_int(&s, 0.4434f), 2, "fxp_to_int 6b s2: 0.4434 => 2"); + CHECK_IEQ(adc_fxp_to_int(&s, 0.0032f), 0, "fxp_to_int 6b s2: 0.0032 => 0"); + CHECK_IEQ(adc_fxp_to_int(&s, -10.0f), -32, "fxp_to_int 6b s2: -10.0 => -32 (clamped)"); + CHECK_IEQ(adc_fxp_to_int(&s, 10.0f), 31, "fxp_to_int 6b s2: +10.0 => 31 (clamped)"); + + /* (bitwidth=6, fracwidth=2, is_signed=False, + * input=[-1.2343, 0.4434, 0.0032, -10.0, +20.0], + * expected=[0, 2, 0, 0, 63]) */ + s.is_signed = 0; + CHECK_IEQ(adc_fxp_to_int(&s, -1.2343f), 0, "fxp_to_int 6b u2: -1.2343 => 0 (clamped)"); + CHECK_IEQ(adc_fxp_to_int(&s, 0.4434f), 2, "fxp_to_int 6b u2: 0.4434 => 2"); + CHECK_IEQ(adc_fxp_to_int(&s, 0.0032f), 0, "fxp_to_int 6b u2: 0.0032 => 0"); + CHECK_IEQ(adc_fxp_to_int(&s, -10.0f), 0, "fxp_to_int 6b u2: -10.0 => 0 (clamped)"); + CHECK_IEQ(adc_fxp_to_int(&s, 20.0f), 63, "fxp_to_int 6b u2: +20.0 => 63 (clamped)"); + + /* (bitwidth=8, fracwidth=4, is_signed=True, + * input=[-1.2343, 0.4434, 0.0032, -10.0, +10.0], + * expected=[-20, 7, 0, -128, 127]) */ + s.total_bits = 8; s.frac_bits = 4; s.is_signed = 1; + CHECK_IEQ(adc_fxp_to_int(&s, -1.2343f), -20, "fxp_to_int 8b s4: -1.2343 => -20"); + CHECK_IEQ(adc_fxp_to_int(&s, 0.4434f), 7, "fxp_to_int 8b s4: 0.4434 => 7"); + CHECK_IEQ(adc_fxp_to_int(&s, 0.0032f), 0, "fxp_to_int 8b s4: 0.0032 => 0"); + CHECK_IEQ(adc_fxp_to_int(&s, -10.0f), -128, "fxp_to_int 8b s4: -10.0 => -128 (clamped)"); + CHECK_IEQ(adc_fxp_to_int(&s, 10.0f), 127, "fxp_to_int 8b s4: +10.0 => 127 (clamped)"); + + /* (bitwidth=8, fracwidth=4, is_signed=False, + * input=[-1.2343, 0.4434, 0.0032, -10.0, +20.0], + * expected=[0, 7, 0, 0, 255]) */ + s.is_signed = 0; + CHECK_IEQ(adc_fxp_to_int(&s, -1.2343f), 0, "fxp_to_int 8b u4: -1.2343 => 0 (clamped)"); + CHECK_IEQ(adc_fxp_to_int(&s, 0.4434f), 7, "fxp_to_int 8b u4: 0.4434 => 7"); + CHECK_IEQ(adc_fxp_to_int(&s, 0.0032f), 0, "fxp_to_int 8b u4: 0.0032 => 0"); + CHECK_IEQ(adc_fxp_to_int(&s, -10.0f), 0, "fxp_to_int 8b u4: -10.0 => 0 (clamped)"); + CHECK_IEQ(adc_fxp_to_int(&s, 20.0f), 255, "fxp_to_int 8b u4: +20.0 => 255 (clamped)"); +} + +/* ─── fxp_to_fxp ────────────────────────────────────────────────────────── */ + +static void test_fxp_to_fxp(void) +{ + SettingsADC s = g_sets; + + /* (bitwidth=6, fracwidth=2, is_signed=True, + * input=[-1.2343, 0.4434, 0.0032, -10.0, +10.0], + * expected=[-1.25, 0.5, 0.0, -8.0, 7.75]) */ + s.total_bits = 6; s.frac_bits = 2; s.is_signed = 1; + CHECK_FEQ(adc_fxp_to_fxp(&s, -1.2343f), -1.25f, 1e-5f, "fxp_to_fxp: -1.2343 => -1.25"); + CHECK_FEQ(adc_fxp_to_fxp(&s, 0.4434f), 0.5f, 1e-5f, "fxp_to_fxp: 0.4434 => 0.5"); + CHECK_FEQ(adc_fxp_to_fxp(&s, 0.0032f), 0.0f, 1e-5f, "fxp_to_fxp: 0.0032 => 0.0"); + CHECK_FEQ(adc_fxp_to_fxp(&s, -10.0f), -8.0f, 1e-5f, "fxp_to_fxp: -10.0 => -8.0"); + CHECK_FEQ(adc_fxp_to_fxp(&s, 10.0f), 7.75f, 1e-5f, "fxp_to_fxp: +10.0 => 7.75"); +} + +/* ─── test_adc_quantize_integer (int_to_int) ───────────────────────────── */ + +static void test_int_to_int(void) +{ + SettingsADC s = g_sets; + + /* (bitwidth=6, fracwidth=2, is_signed=True, + * input=[-5, 2, 0, -40, 32], expected=[-5, 2, 0, -32, 31]) */ + s.total_bits = 6; s.frac_bits = 2; s.is_signed = 1; + CHECK_IEQ(adc_int_to_int(&s, -5), -5, "int_to_int 6b s: -5 unchanged"); + CHECK_IEQ(adc_int_to_int(&s, 2), 2, "int_to_int 6b s: 2 unchanged"); + CHECK_IEQ(adc_int_to_int(&s, 0), 0, "int_to_int 6b s: 0 unchanged"); + CHECK_IEQ(adc_int_to_int(&s, -40), -32, "int_to_int 6b s: -40 => -32"); + CHECK_IEQ(adc_int_to_int(&s, 32), 31, "int_to_int 6b s: 32 => 31"); + + /* (bitwidth=6, fracwidth=2, is_signed=False, + * input=[0, 2, 0, 0, 63], expected=[0, 2, 0, 0, 63]) */ + s.is_signed = 0; + CHECK_IEQ(adc_int_to_int(&s, 0), 0, "int_to_int 6b u: 0 unchanged"); + CHECK_IEQ(adc_int_to_int(&s, 2), 2, "int_to_int 6b u: 2 unchanged"); + CHECK_IEQ(adc_int_to_int(&s, 63), 63, "int_to_int 6b u: 63 unchanged"); + + /* (bitwidth=8, fracwidth=4, is_signed=True, + * input=[-20, 7, 0, -140, 227], expected=[-20, 7, 0, -128, 127]) */ + s.total_bits = 8; s.frac_bits = 4; s.is_signed = 1; + CHECK_IEQ(adc_int_to_int(&s, -20), -20, "int_to_int 8b s: -20 unchanged"); + CHECK_IEQ(adc_int_to_int(&s, 7), 7, "int_to_int 8b s: 7 unchanged"); + CHECK_IEQ(adc_int_to_int(&s, 0), 0, "int_to_int 8b s: 0 unchanged"); + CHECK_IEQ(adc_int_to_int(&s, -140), -128, "int_to_int 8b s: -140 => -128"); + CHECK_IEQ(adc_int_to_int(&s, 227), 127, "int_to_int 8b s: 227 => 127"); + + /* (bitwidth=8, fracwidth=4, is_signed=False, + * input=[0, 7, 0, -1, 355], expected=[0, 7, 0, 0, 255]) */ + s.is_signed = 0; + CHECK_IEQ(adc_int_to_int(&s, 0), 0, "int_to_int 8b u: 0 unchanged"); + CHECK_IEQ(adc_int_to_int(&s, 7), 7, "int_to_int 8b u: 7 unchanged"); + CHECK_IEQ(adc_int_to_int(&s, -1), 0, "int_to_int 8b u: -1 => 0"); + CHECK_IEQ(adc_int_to_int(&s, 355), 255, "int_to_int 8b u: 355 => 255"); +} + +/* ─── test_adc_rescaling_voltage_fxp (voltage_to_fxp) ──────────────────── */ + +static void test_voltage_to_fxp(void) +{ + SettingsADC s = g_sets; + + /* (bitwidth=6, fracwidth=4, is_signed=True, vpos=0.5, vneg=-0.5) + * expected: [-2.0, -1.75, -0.5, 0.0, 0.875, 1.8125, 2.0] + * for input: [-0.55(→clamp), -0.434, -0.12, 0.0, 0.22, 0.45, 0.55(→clamp)] */ + s.total_bits = 6; s.frac_bits = 4; s.is_signed = 1; + s.vneg = -0.5f; s.vpos = 0.5f; + + CHECK_FEQ(adc_voltage_to_fxp(&s, -0.55f), -2.0f, 1e-4f, "v_to_fxp: -0.55 => -2.0"); + CHECK_FEQ(adc_voltage_to_fxp(&s, -0.434f),-1.75f, 1e-4f, "v_to_fxp: -0.434 => -1.75"); + CHECK_FEQ(adc_voltage_to_fxp(&s, -0.12f), -0.5f, 1e-4f, "v_to_fxp: -0.12 => -0.5"); + CHECK_FEQ(adc_voltage_to_fxp(&s, 0.0f), 0.0f, 1e-4f, "v_to_fxp: 0.0 => 0.0"); + CHECK_FEQ(adc_voltage_to_fxp(&s, 0.22f), 0.875f, 1e-4f, "v_to_fxp: 0.22 => 0.875"); + CHECK_FEQ(adc_voltage_to_fxp(&s, 0.45f), 1.8125f,1e-4f, "v_to_fxp: 0.45 => 1.8125"); + /* 0.55 → clamped to 0.5 → steps=64 → int=32, clamped to max_int=31 → fxp=31*0.0625=1.9375 */ + CHECK_FEQ(adc_voltage_to_fxp(&s, 0.55f), 1.9375f,1e-4f, "v_to_fxp: 0.55 => 1.9375 (clamped)"); + + /* (bitwidth=8, fracwidth=7, is_signed=False, vpos=0.5, vneg=-0.5) + * expected: [0.0, 0.1328125, 0.7578125, 1.0, 1.4375, 1.8984375, 2.0] */ + s.total_bits = 8; s.frac_bits = 7; s.is_signed = 0; + CHECK_FEQ(adc_voltage_to_fxp(&s, -0.55f), 0.0f, 1e-5f, "v_to_fxp u: -0.55 => 0.0"); + CHECK_FEQ(adc_voltage_to_fxp(&s, -0.434f), 0.1328125f, 1e-5f, "v_to_fxp u: -0.434 => 0.1328125"); + CHECK_FEQ(adc_voltage_to_fxp(&s, -0.12f), 0.7578125f, 1e-5f, "v_to_fxp u: -0.12 => 0.7578125"); + CHECK_FEQ(adc_voltage_to_fxp(&s, 0.0f), 1.0f, 1e-5f, "v_to_fxp u: 0.0 => 1.0"); + CHECK_FEQ(adc_voltage_to_fxp(&s, 0.22f), 1.4375f, 1e-5f, "v_to_fxp u: 0.22 => 1.4375"); + CHECK_FEQ(adc_voltage_to_fxp(&s, 0.45f), 1.8984375f, 1e-5f, "v_to_fxp u: 0.45 => 1.8984375"); + /* 0.55 → clamped to 0.5 → steps=256 → int=256, clamped to max_int=255 → fxp=255/128=1.9921875 */ + CHECK_FEQ(adc_voltage_to_fxp(&s, 0.55f), 1.9921875f, 1e-6f, "v_to_fxp u: 0.55 => 1.9921875 (clamped)"); +} + +/* ─── test_adc_quantize_from_voltage_to_int (voltage_to_int) ───────────── */ + +static void test_voltage_to_int(void) +{ + SettingsADC s = g_sets; + + /* (bitwidth=6, fracwidth=4, is_signed=True, vpos=0.5, vneg=-0.5) + * expected: [-32, -28, -8, 0, 14, 29, 32] for + * input: [-0.55(clamp), -0.434, -0.12, 0.0, 0.22, 0.45, 0.55(clamp)] */ + s.total_bits = 6; s.frac_bits = 4; s.is_signed = 1; + s.vneg = -0.5f; s.vpos = 0.5f; + CHECK_IEQ(adc_voltage_to_int(&s, -0.55f), -32, "v_to_int: -0.55 => -32"); + CHECK_IEQ(adc_voltage_to_int(&s, -0.12f), -8, "v_to_int: -0.12 => -8"); + CHECK_IEQ(adc_voltage_to_int(&s, 0.0f), 0, "v_to_int: 0.0 => 0"); + CHECK_IEQ(adc_voltage_to_int(&s, 0.22f), 14, "v_to_int: 0.22 => 14"); + CHECK_IEQ(adc_voltage_to_int(&s, 0.55f), 31, "v_to_int: 0.55 => 31 (clamped)"); + + /* Sanity: symmetric range, 8-bit signed → 0V maps to 0 */ + s.total_bits = 8; s.frac_bits = 0; s.is_signed = 1; + s.vneg = -1.0f; s.vpos = 1.0f; + CHECK_IEQ(adc_voltage_to_int(&s, -1.0f), -128, "v_to_int 8b: -1.0 => -128"); + CHECK_IEQ(adc_voltage_to_int(&s, 0.0f), 0, "v_to_int 8b: 0.0 => 0"); +} + +/* ─── test_adc_resampling ───────────────────────────────────────────────── */ + +static void test_resample_no_op(void) +{ + SettingsADC s = g_sets; + s.srate_orig = 1.0f; s.srate_new = 1.0f; + + float in[4] = { 1.0f, 2.0f, 3.0f, 4.0f }; + float out[8] = { 0 }; + + /* same rate → passthrough */ + size_t n = adc_resample(&s, in, 4, out, 8); + CHECK(n == 4, "resample no-op: length unchanged"); + CHECK_FEQ(out[0], 1.0f, 1e-6f, "resample no-op: out[0] == in[0]"); + CHECK_FEQ(out[3], 4.0f, 1e-6f, "resample no-op: out[3] == in[3]"); + + /* srate_new=0 → passthrough */ + s.srate_new = 0.0f; + n = adc_resample(&s, in, 4, out, 8); + CHECK(n == 4, "resample srate_new=0: length unchanged"); +} + +static void test_resample_downsample_constant(void) +{ + /* constant input: any resampling method must return the same constant */ + SettingsADC s = g_sets; + s.srate_orig = 100.0f; s.srate_new = 50.0f; + + float in[4] = { 1.0f, 1.0f, 1.0f, 1.0f }; + float out[4] = { 0 }; + + size_t n = adc_resample(&s, in, 4, out, 4); + CHECK(n == 2, "resample 2x down: length halved"); + CHECK_FEQ(out[0], 1.0f, 1e-5f, "resample 2x down constant: out[0] == 1.0"); + CHECK_FEQ(out[1], 1.0f, 1e-5f, "resample 2x down constant: out[1] == 1.0"); +} + +static void test_resample_upsample_constant(void) +{ + SettingsADC s = g_sets; + s.srate_orig = 100.0f; s.srate_new = 200.0f; + + float in[4] = { 3.0f, 3.0f, 3.0f, 3.0f }; + float out[8] = { 0 }; + + size_t n = adc_resample(&s, in, 4, out, 8); + CHECK(n == 8, "resample 2x up: length doubled"); + for (size_t i = 0; i < n; i++) + if (fabsf(out[i] - 3.0f) > 1e-5f) { + CHECK(0, "resample 2x up constant: value != 3.0"); + return; + } + CHECK(1, "resample 2x up constant: all values == 3.0"); +} + +static void test_resample_linear_interp(void) +{ + /* Linear ramp: input [0.0, 1.0, 2.0, 3.0] at 100 Hz → downsample to 50 Hz. + * ratio=2, out[0] at pos=0 → in[0]=0.0, out[1] at pos=2 → in[2]=2.0. */ + SettingsADC s = g_sets; + s.srate_orig = 100.0f; s.srate_new = 50.0f; + s.vneg = 0.0f; s.vpos = 0.0f; + + float in[4] = { 0.0f, 1.0f, 2.0f, 3.0f }; + float out[4] = { 0 }; + + adc_resample(&s, in, 4, out, 4); + /* DC offset = in[0] = 0.0, so no DC effect here. + * out[0]: pos=0.0 → in[0] = 0.0 + * out[1]: pos=2.0 → in[2] = 2.0 */ + CHECK_FEQ(out[0], 0.0f, 1e-5f, "resample linear: out[0] == 0.0"); + CHECK_FEQ(out[1], 2.0f, 1e-5f, "resample linear: out[1] == 2.0"); +} + +static void test_resample_out_len(void) +{ + SettingsADC s = g_sets; + s.srate_orig = 100.0f; s.srate_new = 50.0f; + CHECK(adc_resample_out_len(&s, 100) == 50, "resample_out_len: 100 -> 50"); + + s.srate_new = 200.0f; + CHECK(adc_resample_out_len(&s, 100) == 200, "resample_out_len: 100 -> 200"); + + s.srate_new = s.srate_orig; + CHECK(adc_resample_out_len(&s, 100) == 100, "resample_out_len: same rate"); +} + +/* ─── test_adc_cutting_input_data ──────────────────────────────────────── */ + +static void test_cut_transient(void) +{ + SettingsADC s = g_sets; + s.srate_orig = 5.0f; s.srate_new = 10.0f; + + float data[5] = { 1.0f, 1.0f, 1.0f, 1.0f, 1.0f }; + const float *ptr = NULL; + size_t n; + + /* no cut: t_start >= t_stop → full array */ + n = adc_cut_transient(&s, data, 5, 0.0f, 0.0f, 1, &ptr); + CHECK(n == 5 && ptr == data, "cut_transient: no cut => full array"); + + /* (srate_orig=5, t=[0.0, 0.3]) → idx0=0, idx1=1 → 1 element */ + n = adc_cut_transient(&s, data, 5, 0.0f, 0.3f, 1, &ptr); + CHECK(n == 1, "cut_transient orig: [0.0,0.3] => 1 element"); + CHECK(ptr == data, "cut_transient orig: pointer at start"); + + /* (srate_orig=5, t=[0.2, 0.8]) → idx0=1, idx1=4 → 3 elements */ + n = adc_cut_transient(&s, data, 5, 0.2f, 0.8f, 1, &ptr); + CHECK(n == 3, "cut_transient orig: [0.2,0.8] => 3 elements"); + CHECK(ptr == data + 1, "cut_transient orig: pointer offset=1"); + + /* use_srate_orig=0: (srate_new=10, t=[0.0, 0.3]) → idx0=0, idx1=3 → 3 elements */ + n = adc_cut_transient(&s, data, 5, 0.0f, 0.3f, 0, &ptr); + CHECK(n == 3, "cut_transient new: [0.0,0.3] => 3 elements"); +} + +/* ─── test_adc_cutting_input_labels ────────────────────────────────────── */ + +static void test_cut_labels(void) +{ + SettingsADC s = g_sets; + s.srate_orig = 5.0f; s.srate_new = 10.0f; + + /* label_pos = [1,2,3,4,5] (times: 0.2, 0.4, 0.6, 0.8, 1.0 at srate=5) */ + size_t lpos[5] = { 1, 2, 3, 4, 5 }; + size_t offset; + size_t n; + + /* no cut */ + n = adc_cut_labels(&s, lpos, 5, 0.0f, 0.0f, 1, &offset); + CHECK(n == 5 && offset == 0, "cut_labels: no cut => all labels"); + + /* (srate_orig=5, t=[0.0, 0.3]) → first time >= 0.3 is 0.4 (pos=2) → [pos=1] → 1 label */ + n = adc_cut_labels(&s, lpos, 5, 0.0f, 0.3f, 1, &offset); + CHECK(n == 1 && offset == 0, "cut_labels orig: [0.0,0.3] => 1 label at offset 0"); + + /* (srate_orig=5, t=[0.3, 0.6]) → first >= 0.3 is pos=2(t=0.4); first >= 0.6 is pos=3(t=0.6) */ + n = adc_cut_labels(&s, lpos, 5, 0.3f, 0.6f, 1, &offset); + CHECK(n == 1 && offset == 1, "cut_labels orig: [0.3,0.6] => 1 label at offset 1"); + CHECK(lpos[offset] == 2, "cut_labels orig: label_pos == 2"); + + /* use_srate_orig=0: (srate_new=10, t=[0.0, 0.3]) → fpos1=3.0 → pos<3: 1,2 → 2 labels */ + n = adc_cut_labels(&s, lpos, 5, 0.0f, 0.3f, 0, &offset); + CHECK(n == 2 && offset == 0, "cut_labels new: [0.0,0.3] => 2 labels"); +} + +/* ─── full pipeline: redefine_from_voltage (no resampling) ─────────────── */ + +static void test_redefine_from_voltage(void) +{ + /* same rate → resampling is a no-op; tests only the quantization path */ + SettingsADC s = g_sets; + s.total_bits = 6; s.frac_bits = 4; s.is_signed = 1; + s.srate_orig = 100.0f; s.srate_new = 100.0f; + s.vneg = -0.5f; s.vpos = 0.5f; + + float in[3] = { -0.55f, 0.0f, 0.55f }; + float tmp[6] = { 0 }; + int64_t out[3] = { 0 }; + + size_t n = adc_redefine_from_voltage(&s, in, 3, tmp, 6, out); + CHECK(n == 3, "redefine_from_voltage: length correct"); + CHECK_IEQ(out[0], -32, "redefine_from_voltage: -0.55V => -32"); + CHECK_IEQ(out[1], 0, "redefine_from_voltage: 0.0V => 0"); + CHECK_IEQ(out[2], 31, "redefine_from_voltage: +0.55V => 31 (clamped)"); +} + +/* ─── full pipeline: redefine_from_fxp (no resampling) ─────────────────── */ + +static void test_redefine_from_fxp(void) +{ + SettingsADC s = g_sets; + s.total_bits = 6; s.frac_bits = 2; s.is_signed = 1; + s.srate_orig = 100.0f; s.srate_new = 100.0f; + + /* (bitwidth=6, fracwidth=2, is_signed=True, + * input=[-1.2343, 0.4434, 0.0032, -10.0, +10.0], + * expected=[-5, 2, 0, -32, 31]) */ + float in[5] = { -1.2343f, 0.4434f, 0.0032f, -10.0f, 10.0f }; + float tmp[10] = { 0 }; + int64_t out[5] = { 0 }; + + size_t n = adc_redefine_from_fxp(&s, in, 5, tmp, 10, out); + CHECK(n == 5, "redefine_from_fxp: length correct"); + CHECK_IEQ(out[0], -5, "redefine_from_fxp: -1.2343 => -5"); + CHECK_IEQ(out[1], 2, "redefine_from_fxp: 0.4434 => 2"); + CHECK_IEQ(out[2], 0, "redefine_from_fxp: 0.0032 => 0"); + CHECK_IEQ(out[3],-32, "redefine_from_fxp: -10.0 => -32"); + CHECK_IEQ(out[4], 31, "redefine_from_fxp: +10.0 => 31"); +} + +/* ─── full pipeline: redefine_from_int (no resampling) ─────────────────── */ + +static void test_redefine_from_int(void) +{ + SettingsADC s = g_sets; + s.total_bits = 6; s.frac_bits = 2; s.is_signed = 1; + s.srate_orig = 100.0f; s.srate_new = 100.0f; + + /* (bitwidth=6, fracwidth=2, is_signed=True, + * input=[-5, 2, 0, -40, 32], expected=[-5, 2, 0, -32, 31]) */ + int64_t in[5] = { -5, 2, 0, -40, 32 }; + /* tmp must hold float(in) + resampled: 5 + 5 = 10 elements */ + float tmp[10] = { 0 }; + int64_t out[5] = { 0 }; + + size_t n = adc_redefine_from_int(&s, in, 5, tmp, 10, out); + CHECK(n == 5, "redefine_from_int: length correct"); + CHECK_IEQ(out[0], -5, "redefine_from_int: -5 => -5"); + CHECK_IEQ(out[1], 2, "redefine_from_int: 2 => 2"); + CHECK_IEQ(out[2], 0, "redefine_from_int: 0 => 0"); + CHECK_IEQ(out[3],-32, "redefine_from_int: -40 => -32 (clamped)"); + CHECK_IEQ(out[4], 31, "redefine_from_int: 32 => 31 (clamped)"); +} + +/* ─── main ──────────────────────────────────────────────────────────────── */ + +int main(void) +{ + setup(); test_vcm(); + setup(); test_lsb(); + setup(); test_clamp_analog(); + setup(); test_clamp_int(); + setup(); test_clamp_fxp(); + setup(); test_fxp_to_int(); + setup(); test_fxp_to_fxp(); + setup(); test_int_to_int(); + setup(); test_voltage_to_fxp(); + setup(); test_voltage_to_int(); + setup(); test_resample_no_op(); + setup(); test_resample_downsample_constant(); + setup(); test_resample_upsample_constant(); + setup(); test_resample_linear_interp(); + setup(); test_resample_out_len(); + setup(); test_cut_transient(); + setup(); test_cut_labels(); + setup(); test_redefine_from_voltage(); + setup(); test_redefine_from_fxp(); + setup(); test_redefine_from_int(); + + printf("\n%d tests run: %d passed, %d failed\n", + g_run, g_pass, g_fail); + return g_fail > 0 ? 1 : 0; +} From eddf5bf0ff72d08033c4e3e43db51162da018e35 Mon Sep 17 00:00:00 2001 From: Christoph Kuhn Date: Sat, 4 Jul 2026 17:54:36 +0200 Subject: [PATCH 08/20] feat(downsampling): add c-impl in /downsampling/c_code/ --- .../downsampling/c_code/downsampling.c | 253 ++++++++++++++++++ .../downsampling/c_code/downsampling.h | 55 ++++ 2 files changed, 308 insertions(+) create mode 100644 elasticai/preprocessor/downsampling/c_code/downsampling.c create mode 100644 elasticai/preprocessor/downsampling/c_code/downsampling.h diff --git a/elasticai/preprocessor/downsampling/c_code/downsampling.c b/elasticai/preprocessor/downsampling/c_code/downsampling.c new file mode 100644 index 0000000..01b3417 --- /dev/null +++ b/elasticai/preprocessor/downsampling/c_code/downsampling.c @@ -0,0 +1,253 @@ +#include "downsampling.h" + +#include +#include +#include + +/* ------------------------------------------------------------------------- + * default-setting + * ---------------------------------------------------------------------- */ +const SettingsDownSampling DefaultSettingsDownSampling = +{ + .sampling_rate = 1000.0f, + .dsr = 10, +}; + +/* ------------------------------------------------------------------------- + * helpers + * ---------------------------------------------------------------------- */ +static int is_power_of_two(int n) +{ + return n >= 2 && (n & (n - 1)) == 0; +} + +float sampling_rate_out(const SettingsDownSampling *s) +{ + return s->sampling_rate / (float)s->dsr; +} + +// do_simple: average every dsr input samples into one output sample. +bool do_simple( + const SettingsDownSampling *s, + const float *uin, + size_t uin_len, + float *uout) +{ + if (s == NULL || uin == NULL || uout == NULL) return false; + if (s->dsr <= 0) return false; + if (uin_len == 0) return false; + + size_t dsr = s->dsr; + size_t sz = uin_len / (size_t)dsr; + + for (size_t i = 0; i < sz; i++) + { + float sum = 0.0f; + for (size_t j = 0; j < dsr; j++) + { + sum += uin[i * dsr + j]; + } + uout[i] = (sum / (float)dsr); + } + return true; +} + +/* do_cic: CIC-filter downsampling (Cascaded Integrator-Comb) + * with helpers + * + * Internally uses int64_t fixed-point to avoid float accumulation drift. + * The scale factor Q (a power of 2) is chosen so that the integrator state + * never exceeds INT64_MAX: Q = 2^(62 - ceil(N * log2(dsr))).*/ +typedef struct { int64_t yn; int64_t ynm; } Integrator; +typedef struct { int64_t xn; int64_t xnm; } Comb; + +static int64_t integrator_update(Integrator *inte, int64_t inp) +{ + inte->ynm = inte->yn; + inte->yn = inte->ynm + inp; + return inte->yn; +} + +static int64_t comb_update(Comb *c, int64_t inp) +{ + c->xnm = c->xn; + c->xn = inp; + return c->xn - c->xnm; +} + + +bool do_cic( + const SettingsDownSampling *s, + const float *uin, + size_t uin_len, + int num_stages, + float *uout) +{ + if (s == NULL || uin == NULL || uout == NULL ) return false; + if (uin_len == 0) return false; + if (s->dsr <= 0) return false; + + size_t dsr = (size_t)s->dsr; + + /* bits consumed by CIC growth: integrators accumulate up to input * dsr^N */ + int growth_bits = (int)ceilf((float)num_stages * log2f((float)dsr)); + int frac_bits = 62 - growth_bits; + if (frac_bits < 1) frac_bits = 1; + int64_t Q = (int64_t)1 << frac_bits; + + /* exact integer gain = dsr^num_stages */ + int64_t gain = 1; + for (int i = 0; i < num_stages; i++) + gain *= (int64_t)dsr; + + Integrator *intes = calloc((size_t)num_stages, sizeof(Integrator)); + Comb *combs = calloc((size_t)num_stages, sizeof(Comb)); + if (!intes || !combs) + { + free(intes); + free(combs); + return false; + } + + size_t out_idx = 0; + for (size_t idx = 0; idx < uin_len; idx++) + { + int64_t z = (int64_t)(uin[idx] * (float)Q); + for (int i = 0; i < num_stages; i++) + z = integrator_update(&intes[i], z); + + if (idx % dsr == 0) + { + for (int c = 0; c < num_stages; c++) + z = comb_update(&combs[c], z); + uout[out_idx++] = (float)z / ((float)Q * (float)gain); + } + } + free(intes); + free(combs); + return true; +} + +// do_decimation_polyphase_order_one: First-order polyphase decimation by factor 2. +// FIR coefficients: [1, 1] +bool do_decimation_polyphase_order_one( + const float *uin, + size_t uin_len, + float *uout) +{ + if (uin == NULL || uout == NULL) return false; + if (uin_len == 0) return false; + + float last_hs = 0.0f; + size_t out_idx = 0; + + for (size_t idx = 0; idx < uin_len; idx++) + { + float val = uin[idx]; + if (idx % 2 == 1) + { + uout[out_idx++] = val + last_hs; + } + last_hs = val; + } + return true; +} + +// do_decimation_polyphase_order_two: Second-order polyphase decimation by factor 2. +// FIR coefficients: [1, 2, 1] +bool do_decimation_polyphase_order_two( + const float *uin, + size_t uin_len, + float *uout) +{ + if (uin == NULL || uout == NULL) return false; + if (uin_len == 0) return false; + + float last_hs = 0.0f; + float last_ls = 0.0f; + size_t out_idx = 0; + + for (size_t idx = 0; idx < uin_len; idx++) + { + float val = uin[idx]; + if (idx % 2 == 1) + { + uout[out_idx++] = val + last_ls + 2.0f * last_hs; + last_ls = val; + } + last_hs = val; + } + return true; +} + +// do_decimation_polyphase: Iterative polyphase decimation for any power-of-2 dsr. +// Applies order_one or order_two log2(dsr) times in sequence. +bool do_decimation_polyphase( + const SettingsDownSampling *s, + const float *uin, + size_t uin_len, + bool take_first_order, + float *uout) +{ + if (s == NULL || uin == NULL || uout == NULL) return false; + if (uin_len == 0) return false; + if (s->dsr <= 1) return false; + if (!is_power_of_two(s->dsr)) return false; + + int steps = 0; + int n = s->dsr; + while (n > 1) + { + n >>= 1; + steps++; + } + if (steps == 0) return false; + + /* Einzelstufe: direkt in den vom Aufrufer bereitgestellten Puffer schreiben */ + if (steps == 1) + { + if (take_first_order) + do_decimation_polyphase_order_one(uin, uin_len, uout); + else + do_decimation_polyphase_order_two(uin, uin_len, uout); + return true; + } + + /* Mehrstufig: zwei Ping-Pong-Puffer für interne Zwischenergebnisse. + * Größe uin_len/2 reicht für alle Zwischenschritte, da jede Stufe + * die Datenmenge halbiert. */ + float *bufs[2] = + { + malloc((uin_len / 2) * sizeof(float)), + malloc((uin_len / 2) * sizeof(float)) + }; + if (!bufs[0] || !bufs[1]) + { + free(bufs[0]); + free(bufs[1]); + return false; + } + + const float *src = uin; + size_t src_size = uin_len; + int cur = 0; + + for (int i = 0; i < steps; i++) + { + /* Letzter Schritt schreibt direkt in den Aufrufer-Puffer */ + float *dst = (i == steps - 1) ? uout : bufs[cur]; + + if (take_first_order) + do_decimation_polyphase_order_one(src, src_size, dst); + else + do_decimation_polyphase_order_two(src, src_size, dst); + + src = dst; + src_size = src_size / 2; + cur ^= 1; + } + + free(bufs[0]); + free(bufs[1]); + return true; +} diff --git a/elasticai/preprocessor/downsampling/c_code/downsampling.h b/elasticai/preprocessor/downsampling/c_code/downsampling.h new file mode 100644 index 0000000..7ad7324 --- /dev/null +++ b/elasticai/preprocessor/downsampling/c_code/downsampling.h @@ -0,0 +1,55 @@ +#ifndef DOWNSAMPLING_H +#define DOWNSAMPLING_H + +#include +#include + +typedef struct { + float sampling_rate; /* Input sampling rate [Hz] */ + int dsr; /* Downsampling ratio */ +} SettingsDownSampling; + +extern const SettingsDownSampling DefaultSettingsDownSampling; + +// Returns the output sampling rate: SR_in/dsr +float sampling_rate_out(const SettingsDownSampling *s); + +// do_simple: average every dsr input samples into one output sample. +bool do_simple( + const SettingsDownSampling *s, + const float *uin, + size_t uin_len, + float *uout); + +// do_cic: CIC-filter downsampling (Cascaded Integrator-Comb) +bool do_cic( + const SettingsDownSampling *s, + const float *uin, + size_t uin_len, + int num_stages, + float *uout); + +// do_decimation_polyphase_order_one: First-order polyphase decimation by factor 2. +// FIR coefficients: [1, 1] +bool do_decimation_polyphase_order_one( + const float *uin, + size_t uin_len, + float *uout); + +// do_decimation_polyphase_order_two: Second-order polyphase decimation by factor 2. +// FIR coefficients: [1, 2, 1] +bool do_decimation_polyphase_order_two( + const float *uin, + size_t uin_len, + float *uout); + +// do_decimation_polyphase: Iterative polyphase decimation for any power-of-2 dsr. +// Applies order_one or order_two log2(dsr) times in sequence. +bool do_decimation_polyphase( + const SettingsDownSampling *s, + const float *uin, + size_t uin_len, + bool take_first_order, + float *uout); + +#endif /* DOWNSAMPLING_H */ From 953c7bc6ba07b990f8579f48cba80a8a82d033b1 Mon Sep 17 00:00:00 2001 From: Christoph Kuhn Date: Sat, 4 Jul 2026 17:58:06 +0200 Subject: [PATCH 09/20] test(downsampling): add downsampling_test.c --- .../downsampling/c_code/downsampling_test.c | 472 ++++++++++++++++++ 1 file changed, 472 insertions(+) create mode 100644 elasticai/preprocessor/downsampling/c_code/downsampling_test.c diff --git a/elasticai/preprocessor/downsampling/c_code/downsampling_test.c b/elasticai/preprocessor/downsampling/c_code/downsampling_test.c new file mode 100644 index 0000000..3299db1 --- /dev/null +++ b/elasticai/preprocessor/downsampling/c_code/downsampling_test.c @@ -0,0 +1,472 @@ +/* downsampling_test.c – mirrors Python downsampling_test.py + * + * Compile: + * gcc -std=c99 -Wall -Wextra -o downsampling_test \ + * downsampling_test.c downsampling.c -lm + * Run: + * ./downsampling_test + */ +#include "downsampling.h" + +#include +#include +#include + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +/* ─── minimal test harness ─────────────────────────────────────────────── */ + +static int g_run = 0; +static int g_pass = 0; +static int g_fail = 0; + +#define CHECK(cond, msg) do { \ + g_run++; \ + printf("%d. check:\t",g_run); \ + if (cond) { \ + g_pass++; \ + printf("%s passed.",msg); \ + } else { \ + g_fail++; \ + fprintf(stderr, "FAIL %-52s (%s:%d)\n", \ + (msg), __FILE__, __LINE__); \ + } \ + printf("\n"); \ +} while (0) + +#define CHECK_FEQ(a, b, eps, msg) \ + CHECK(fabsf((float)(a) - (float)(b)) <= (float)(eps), msg) + +/* ─── signal parameters (mirrors Python setUp) ────────────────────────── */ + +#define FS 40000.0f +#define DSR 10 +#define N_SAMPLES 40001 /* linspace(0, 1, 40001, endpoint=True) */ +#define SENTINEL 1e38f /* value that cannot appear in filter output */ +#define CIC_STAGES 5 + +static SettingsDownSampling g_sets; +static float s_input[N_SAMPLES]; +static float s_uout [N_SAMPLES + 1]; /* +1: room for sentinel boundary check */ +static float s_ref [N_SAMPLES]; /* reference buffer for equivalence tests */ + +/* ─── FIR-equivalent CIC reference ─────────────────────────────────────── */ + +/* Impulse response of a 5-stage CIC filter with DSR=10: + * = 5-fold convolution of the boxcar [1,1,...,1] (length 10), divided by 10^5. + * Length = (DSR-1)*CIC_STAGES + 1 = 46. + * Computed with Python/numpy (float64) and embedded here as the drift-free + * mathematical ground truth. The do_cic() int64 implementation must match + * this reference within float32 output precision (~1e-6). */ +static const double s_cic_h[46] = { + 1.0000000000000001e-05, 5.0000000000000002e-05, 1.4999999999999999e-04, + 3.5000000000000000e-04, 6.9999999999999999e-04, 1.2600000000000001e-03, + 2.0999999999999999e-03, 3.3000000000000000e-03, 4.9500000000000004e-03, + 7.1500000000000001e-03, 9.9600000000000001e-03, 1.3400000000000000e-02, + 1.7450000000000000e-02, 2.2050000000000000e-02, 2.7100000000000000e-02, + 3.2460000000000003e-02, 3.7950000000000000e-02, 4.3350000000000000e-02, + 4.8399999999999999e-02, 5.2800000000000000e-02, 5.6309999999999999e-02, + 5.8749999999999997e-02, 6.0000000000000000e-02, 6.0000000000000000e-02, + 5.8749999999999997e-02, 5.6309999999999999e-02, 5.2800000000000000e-02, + 4.8399999999999999e-02, 4.3350000000000000e-02, 3.7950000000000000e-02, + 3.2460000000000003e-02, 2.7100000000000000e-02, 2.2050000000000000e-02, + 1.7450000000000000e-02, 1.3400000000000000e-02, 9.9600000000000001e-03, + 7.1500000000000001e-03, 4.9500000000000004e-03, 3.3000000000000000e-03, + 2.0999999999999999e-03, 1.2600000000000001e-03, 6.9999999999999999e-04, + 3.5000000000000000e-04, 1.4999999999999999e-04, 5.0000000000000002e-05, + 1.0000000000000001e-05 +}; +#define CIC_H_LEN 46 + +/* Compute the FIR-equivalent CIC output for output index out_idx. + * Negative input indices are treated as 0 (zero initial state). */ +static double fir_cic_ref(size_t out_idx, const float *inp) +{ + double acc = 0.0; + for (int j = 0; j < CIC_H_LEN; j++) { + int src = (int)(out_idx * (size_t)DSR) - j; + if (src >= 0) acc += s_cic_h[j] * (double)inp[src]; + } + return acc; +} + +/* mirrors Python: inp_samp(time) */ +static void generate_input(void) +{ + const float freqs[2] = { 4.0f, 400.0f }; + for (size_t i = 0; i < N_SAMPLES; i++) { + float t = (float)i / (float)(N_SAMPLES - 1); /* linspace(0,1,40001) */ + float z = 0.0f; + for (int f = 0; f < 2; f++) + z += sinf(2.0f * (float)M_PI * freqs[f] * t); + s_input[i] = 0.75f * z / 2.0f; + } +} + +/* mirrors Python: setUp() – called from main() before every test */ +static void setup(void) +{ + g_sets.sampling_rate = FS; + g_sets.dsr = DSR; + generate_input(); + for (size_t i = 0; i < N_SAMPLES + 1; i++) s_uout[i] = SENTINEL; +} + +/* ─── tests ─────────────────────────────────────────────────────────────── */ + +/* mirrors test_output_sampling_rate */ +static void test_output_sampling_rate(void) +{ + SettingsDownSampling s = { .sampling_rate = 10000.0f, .dsr = 4 }; + CHECK_FEQ(sampling_rate_out(&s), 2500.0f, 1e-3f, + "sampling_rate_out: 10000 / 4 == 2500"); +} + +/* mirrors test_do_simple (size check via sentinel boundary) */ +static void test_do_simple_size(void) +{ + /* n = (40001 / 10) * 10 = 40000 → n_blocks = 4000 */ + const size_t expected = N_SAMPLES / (size_t)g_sets.dsr; /* 4000 */ + bool result = do_simple(&g_sets, s_input, N_SAMPLES, s_uout); + CHECK(result, "do_simple: return-val is true"); + CHECK(s_uout[expected - 1] != SENTINEL, "do_simple: last expected element is written"); + CHECK(s_uout[expected] == SENTINEL, "do_simple: no write past expected size"); + CHECK(expected == 4000u, "do_simple: output count is 4000"); +} +static void test_do_simple_no_uin(void) +{ + bool result = do_simple(&g_sets, NULL, N_SAMPLES, s_uout); + CHECK(!result, "do_simple: no uin throws false"); +} +static void test_do_simple_no_uout(void) +{ + bool result = do_simple(&g_sets, s_input, N_SAMPLES, NULL); + CHECK(!result, "do_simple: no uout throws false"); +} +static void test_do_simple_no_settings(void) +{ + bool result = do_simple(NULL, s_input, N_SAMPLES, s_uout); + CHECK(!result, "do_simple: no settings throws false"); +} +static void test_do_simple_dsr_is_zero(void) +{ + g_sets.dsr = 0; + bool result = do_simple(&g_sets, s_input, N_SAMPLES, s_uout); + CHECK(!result, "do_simple: dsr = 0 throws false"); +} +static void test_do_simple_dsr_is_negative(void) +{ + g_sets.dsr = -10; + bool result = do_simple(&g_sets, s_input, N_SAMPLES, s_uout); + CHECK(!result, "do_simple: dsr is negative throws false"); +} +static void test_do_simple_uin_len_is_zero(void) +{ + bool result = do_simple(&g_sets, s_input, 0, s_uout); + CHECK(!result, "do_simple: uin_len = 0 throws false"); +} + +/* mirrors test_cic (spot-check of output[0], derivable analytically) */ +static void test_cic_first_value(void) +{ + /* input[0] = 0.0 (t=0: both sines are 0) + * CIC fires at sample 0 (0 % DSR == 0); all integrators and combs + * start at 0 → z = 0 → output[0] = 0.0 / gain = 0.0 */ + bool result = do_cic(&g_sets, s_input, N_SAMPLES, CIC_STAGES, s_uout); + CHECK(result, "do_cic: return-val is true"); + CHECK_FEQ(s_uout[0], 0.0f, 1e-7f, "cic: output[0] == 0.0"); +} + +/* mirrors test_cic_size */ +static void test_cic_no_settings(void) +{ + bool result = do_cic(NULL, s_input, N_SAMPLES, CIC_STAGES, s_uout); + CHECK(!result, "do_cic: no settings throws false"); +} +static void test_cic_no_uin(void) +{ + bool result = do_cic(&g_sets, NULL, N_SAMPLES, CIC_STAGES, s_uout); + CHECK(!result, "do_cic: no uin throws false"); +} +static void test_cic_no_uout(void) +{ + bool result = do_cic(&g_sets, s_input, N_SAMPLES, CIC_STAGES, NULL); + CHECK(!result, "do_cic: no uout throws false"); +} +static void test_cic_uin_len_is_zero(void) +{ + bool result = do_cic(&g_sets, s_input, 0, CIC_STAGES, s_uout); + CHECK(!result, "do_cic: uin_len = 0 throws false"); +} +static void test_cic_dsr_is_zero(void) +{ + g_sets.dsr = 0; + bool result = do_cic(&g_sets, s_input, N_SAMPLES, CIC_STAGES, s_uout); + CHECK(!result, "do_cic: dsr = 0 throws false"); +} +static void test_cic_dsr_is_negative(void) +{ + g_sets.dsr = -10; + bool result = do_cic(&g_sets, s_input, N_SAMPLES, CIC_STAGES, s_uout); + CHECK(!result, "do_cic: dsr is negative throws false"); +} +static void test_cic_size(void) +{ + /* Fires at 0, DSR, 2*DSR, … → count = (N_SAMPLES-1)/DSR + 1 = 4001 */ + const size_t expected = (N_SAMPLES - 1) / (size_t)g_sets.dsr + 1; /* 4001 */ + do_cic(&g_sets, s_input, N_SAMPLES, CIC_STAGES, s_uout); + CHECK(s_uout[expected - 1] != SENTINEL, "cic: last expected element is written"); + CHECK(s_uout[expected] == SENTINEL, "cic: no write past expected size"); + CHECK(expected == 4001u, "cic: output count is 4001"); +} + +/* compares every CIC output value against the FIR-equivalent reference. + * The FIR convolution uses double arithmetic and avoids the accumulation + * drift of float64 CIC integrators. Tolerance 1e-5 (actual max diff ~7e-8). */ +static void test_cic_all_values(void) +{ + do_cic(&g_sets, s_input, N_SAMPLES, CIC_STAGES, s_uout); + const size_t n_out = (N_SAMPLES - 1) / (size_t)g_sets.dsr + 1; + int ok = 1; + size_t fail_idx = 0; + double fail_diff = 0.0; + for (size_t i = 0; i < n_out; i++) { + double ref = fir_cic_ref(i, s_input); + double diff = fabs(ref - (double)s_uout[i]); + if (diff > 1e-5) { ok = 0; fail_idx = i; fail_diff = diff; break; } + } + if (!ok) + printf(" (first failure at index %zu, diff=%.3e)\n", + fail_idx, fail_diff); + CHECK(ok, "cic: all output values match FIR reference (tol 1e-5)"); +} + +static void test_polyphase_one_no_uin(void) +{ + bool result = do_decimation_polyphase_order_one(NULL, N_SAMPLES, s_uout); + CHECK(!result, "polyphase_one: no uin throws false"); +} +static void test_polyphase_one_no_uout(void) +{ + bool result = do_decimation_polyphase_order_one(s_input, N_SAMPLES, NULL); + CHECK(!result, "polyphase_one: no uout throws false"); +} +static void test_polyphase_one_uin_len_is_zero(void) +{ + bool result = do_decimation_polyphase_order_one(s_input, 0, s_uout); + CHECK(!result, "polyphase_one: uin_len = 0 throws false"); +} +/* mirrors test_polyphase_one (spot-check of output[0]) */ +static void test_polyphase_one_first_value(void) +{ + /* idx=1 (first odd index): + * output[0] = input[1] + last_hs where last_hs initialises to 0 + * = input[1] + 0.0 = input[1] + * Python golden value[0]: 0.023782064257008607 */ + bool result = do_decimation_polyphase_order_one(s_input, N_SAMPLES, s_uout); + CHECK(result, "poyphase_one: return-val is true"); + CHECK_FEQ(s_uout[0], s_input[1], 1e-6f, + "polyphase_one: output[0] == input[1] (last_hs init = 0)"); + CHECK_FEQ(s_uout[0], 0.023782f, 1e-4f, + "polyphase_one: output[0] matches Python golden value"); +} + +/* mirrors test_polyphase_one_size */ +static void test_polyphase_one_size(void) +{ + /* Odd indices in [0..40000]: count = 40001 / 2 = 20000 (integer div) */ + const size_t expected = N_SAMPLES / 2; /* 20000 */ + do_decimation_polyphase_order_one(s_input, N_SAMPLES, s_uout); + CHECK(s_uout[expected - 1] != SENTINEL, "polyphase_one: last expected element is written"); + CHECK(s_uout[expected] == SENTINEL, "polyphase_one: no write past expected size"); + CHECK(expected == 20000u, "polyphase_one: output count is 20000"); +} + +/* mirrors test_polyphase_one_type */ +static void test_polyphase_one_finite(void) +{ + do_decimation_polyphase_order_one(s_input, N_SAMPLES, s_uout); + const size_t n = N_SAMPLES / 2; + bool ok = true; + for (size_t i = 0; i < n; i++) + if (!isfinite(s_uout[i])) { ok = false; break; } + CHECK(ok, "polyphase_one: all output values are finite (not NaN / Inf)"); +} + +static void test_polyphase_two_no_uin(void) +{ + bool result = do_decimation_polyphase_order_two(NULL, N_SAMPLES, s_uout); + CHECK(!result, "polyphase_two: no uin throws false"); +} +static void test_polyphase_two_no_uout(void) +{ + bool result = do_decimation_polyphase_order_two(s_input, N_SAMPLES, NULL); + CHECK(!result, "polyphase_two: no uout throws false"); +} +static void test_polyphase_two_uin_len_is_zero(void) +{ + bool result = do_decimation_polyphase_order_two(s_input, 0, s_uout); + CHECK(!result, "polyphase_two: uin_len = 0 throws false"); +} + +/* mirrors test_polyphase_two (spot-check of output[0]) */ +static void test_polyphase_two_first_value(void) +{ + /* idx=1: + * output[0] = input[1] + last_ls(=0) + 2*last_hs(=0) = input[1] + * Both extra terms vanish because the states initialise to 0. + * Same first element as polyphase_one (confirmed by Python golden). */ + bool result = do_decimation_polyphase_order_two(s_input, N_SAMPLES, s_uout); + CHECK(result, "polyphase_two: return-val is true"); + CHECK_FEQ(s_uout[0], s_input[1], 1e-6f, + "polyphase_two: output[0] == input[1] (states init = 0)"); + CHECK_FEQ(s_uout[0], 0.023782f, 1e-4f, + "polyphase_two: output[0] matches Python golden value"); +} + +/* mirrors test_polyphase_two_size */ +static void test_polyphase_two_size(void) +{ + const size_t expected = N_SAMPLES / 2; /* 20000 */ + do_decimation_polyphase_order_two(s_input, N_SAMPLES, s_uout); + CHECK(s_uout[expected - 1] != SENTINEL, "polyphase_two: last expected element is written"); + CHECK(s_uout[expected] == SENTINEL, "polyphase_two: no write past expected size"); + CHECK(expected == 20000u, "polyphase_two: output count is 20000"); +} + +/* mirrors test_polyphase_two_type */ +static void test_polyphase_two_finite(void) +{ + do_decimation_polyphase_order_two(s_input, N_SAMPLES, s_uout); + const size_t n = N_SAMPLES / 2; + bool ok = true; + for (size_t i = 0; i < n; i++) + if (!isfinite(s_uout[i])) { ok = false; break; } + CHECK(ok, "polyphase_two: all output values are finite (not NaN / Inf)"); +} + +/* is_power_of_two is static — tested indirectly via do_decimation_polyphase */ +static void test_polyphase_no_settings(void) +{ + bool result = do_decimation_polyphase(NULL, s_input, N_SAMPLES, false, s_uout); + CHECK(!result, "polyphase no settings: throws false"); +} +static void test_polyphase_no_uin(void) +{ + bool result = do_decimation_polyphase(&g_sets, NULL, N_SAMPLES, false, s_uout); + CHECK(!result, "polyphase no uin: throws false"); +} +static void test_polyphase_no_uout(void) +{ + bool result = do_decimation_polyphase(&g_sets, s_input, N_SAMPLES, false, NULL); + CHECK(!result, "polyphase no uout: throws false"); +} +static void test_polyphase_uin_len_is_zero(void) +{ + bool result = do_decimation_polyphase(&g_sets, s_input, 0, false, s_uout); + CHECK(!result, "polyphase uin_len=0: throws false"); +} +static void test_polyphase_dsr_is_zero(void) +{ + SettingsDownSampling s = { .sampling_rate = FS, .dsr = 0 }; + bool result = do_decimation_polyphase(&s, s_input, N_SAMPLES, false, s_uout); + CHECK(!result, "polyphase dsr=0: throws false"); +} +static void test_polyphase_dsr_is_one(void) +{ + SettingsDownSampling s = { .sampling_rate = FS, .dsr = 1 }; + bool result = do_decimation_polyphase(&s, s_input, N_SAMPLES, false, s_uout); + CHECK(!result, "polyphase dsr=1: throws false"); +} + +/* dsr=3 (not a power of two): function must return without writing output */ +static void test_polyphase_invalid_dsr(void) +{ + SettingsDownSampling s = { .sampling_rate = FS, .dsr = 3 }; + bool result = do_decimation_polyphase(&s, s_input, N_SAMPLES, 0, s_uout); + CHECK(!result, "polyphase dsr=3: throws false"); + CHECK(s_uout[0] == SENTINEL, "polyphase dsr=3: no output written (not power of two)"); +} + +/* dsr=2, order_two: one pass — output must equal direct order_two call */ +static void test_polyphase_dsr2_order_two(void) +{ + SettingsDownSampling s = { .sampling_rate = FS, .dsr = 2 }; + do_decimation_polyphase_order_two(s_input, N_SAMPLES, s_ref); + do_decimation_polyphase(&s, s_input, N_SAMPLES, 0, s_uout); + CHECK_FEQ(s_uout[0], s_ref[0], 1e-6f, "polyphase dsr=2 order_two: output[0] matches"); + CHECK_FEQ(s_uout[100], s_ref[100], 1e-6f, "polyphase dsr=2 order_two: output[100] matches"); + CHECK_FEQ(s_uout[999], s_ref[999], 1e-6f, "polyphase dsr=2 order_two: output[999] matches"); +} + +/* dsr=2, order_one: one pass — output must equal direct order_one call */ +static void test_polyphase_dsr2_order_one(void) +{ + SettingsDownSampling s = { .sampling_rate = FS, .dsr = 2 }; + do_decimation_polyphase_order_one(s_input, N_SAMPLES, s_ref); + do_decimation_polyphase(&s, s_input, N_SAMPLES, 1, s_uout); + CHECK_FEQ(s_uout[0], s_ref[0], 1e-6f, "polyphase dsr=2 order_one: output[0] matches"); + CHECK_FEQ(s_uout[100], s_ref[100], 1e-6f, "polyphase dsr=2 order_one: output[100] matches"); + CHECK_FEQ(s_uout[999], s_ref[999], 1e-6f, "polyphase dsr=2 order_one: output[999] matches"); +} + +/* dsr=4: two passes → output size = N_SAMPLES / 4 = 10000 */ +static void test_polyphase_dsr4_size(void) +{ + SettingsDownSampling s = { .sampling_rate = FS, .dsr = 4 }; + const size_t expected = N_SAMPLES / 4; /* 10000 */ + do_decimation_polyphase(&s, s_input, N_SAMPLES, 0, s_uout); + CHECK(s_uout[expected - 1] != SENTINEL, "polyphase dsr=4: last expected element written"); + CHECK(s_uout[expected] == SENTINEL, "polyphase dsr=4: no write past expected size"); +} + +/* ─── main ──────────────────────────────────────────────────────────────── */ + +int main(void) +{ + setup(); test_output_sampling_rate(); + setup(); test_do_simple_size(); + setup(); test_do_simple_no_uin(); + setup(); test_do_simple_no_uout(); + setup(); test_do_simple_no_settings(); + setup(); test_do_simple_dsr_is_zero(); + setup(); test_do_simple_dsr_is_negative(); + setup(); test_do_simple_uin_len_is_zero(); + setup(); test_cic_first_value(); + setup(); test_cic_no_settings(); + setup(); test_cic_no_uin(); + setup(); test_cic_no_uout(); + setup(); test_cic_uin_len_is_zero(); + setup(); test_cic_dsr_is_zero(); + setup(); test_cic_dsr_is_negative(); + setup(); test_cic_size(); + setup(); test_cic_all_values(); + setup(); test_polyphase_one_no_uin(); + setup(); test_polyphase_one_no_uout(); + setup(); test_polyphase_one_uin_len_is_zero(); + setup(); test_polyphase_one_first_value(); + setup(); test_polyphase_one_size(); + setup(); test_polyphase_one_finite(); + setup(); test_polyphase_two_no_uin(); + setup(); test_polyphase_two_no_uout(); + setup(); test_polyphase_two_uin_len_is_zero(); + setup(); test_polyphase_two_first_value(); + setup(); test_polyphase_two_size(); + setup(); test_polyphase_two_finite(); + setup(); test_polyphase_no_settings(); + setup(); test_polyphase_no_uin(); + setup(); test_polyphase_no_uout(); + setup(); test_polyphase_uin_len_is_zero(); + setup(); test_polyphase_dsr_is_zero(); + setup(); test_polyphase_dsr_is_one(); + setup(); test_polyphase_invalid_dsr(); + setup(); test_polyphase_dsr2_order_two(); + setup(); test_polyphase_dsr2_order_one(); + setup(); test_polyphase_dsr4_size(); + + printf("\n%d tests run: %d passed, %d failed\n", + g_run, g_pass, g_fail); + return g_fail > 0 ? 1 : 0; +} From 59639be8757d3019f69d50d4825210c197234407 Mon Sep 17 00:00:00 2001 From: Christoph Kuhn Date: Sat, 4 Jul 2026 18:44:08 +0200 Subject: [PATCH 10/20] update(downsampling): update downsampling.c/h --- .../downsampling/c_code/downsampling.c | 25 ++++++------------- .../downsampling/c_code/downsampling.h | 2 -- 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/elasticai/preprocessor/downsampling/c_code/downsampling.c b/elasticai/preprocessor/downsampling/c_code/downsampling.c index 01b3417..32e044f 100644 --- a/elasticai/preprocessor/downsampling/c_code/downsampling.c +++ b/elasticai/preprocessor/downsampling/c_code/downsampling.c @@ -4,23 +4,13 @@ #include #include -/* ------------------------------------------------------------------------- - * default-setting - * ---------------------------------------------------------------------- */ -const SettingsDownSampling DefaultSettingsDownSampling = -{ - .sampling_rate = 1000.0f, - .dsr = 10, -}; - -/* ------------------------------------------------------------------------- - * helpers - * ---------------------------------------------------------------------- */ +// helper static int is_power_of_two(int n) { return n >= 2 && (n & (n - 1)) == 0; } +// Returns the output sampling rate: SR_in/dsr float sampling_rate_out(const SettingsDownSampling *s) { return s->sampling_rate / (float)s->dsr; @@ -75,7 +65,6 @@ static int64_t comb_update(Comb *c, int64_t inp) return c->xn - c->xnm; } - bool do_cic( const SettingsDownSampling *s, const float *uin, @@ -203,7 +192,7 @@ bool do_decimation_polyphase( } if (steps == 0) return false; - /* Einzelstufe: direkt in den vom Aufrufer bereitgestellten Puffer schreiben */ + // only one step: write direct in uout if (steps == 1) { if (take_first_order) @@ -213,9 +202,9 @@ bool do_decimation_polyphase( return true; } - /* Mehrstufig: zwei Ping-Pong-Puffer für interne Zwischenergebnisse. - * Größe uin_len/2 reicht für alle Zwischenschritte, da jede Stufe - * die Datenmenge halbiert. */ + // more steps: two ping-pong buffers for internal intermediate results. + // a size of uin_len/2 suffices for all intermediate steps, + // since each stage halves the amount of data. float *bufs[2] = { malloc((uin_len / 2) * sizeof(float)), @@ -234,7 +223,7 @@ bool do_decimation_polyphase( for (int i = 0; i < steps; i++) { - /* Letzter Schritt schreibt direkt in den Aufrufer-Puffer */ + /* last step writes direct in uout */ float *dst = (i == steps - 1) ? uout : bufs[cur]; if (take_first_order) diff --git a/elasticai/preprocessor/downsampling/c_code/downsampling.h b/elasticai/preprocessor/downsampling/c_code/downsampling.h index 7ad7324..ccc44a0 100644 --- a/elasticai/preprocessor/downsampling/c_code/downsampling.h +++ b/elasticai/preprocessor/downsampling/c_code/downsampling.h @@ -9,8 +9,6 @@ typedef struct { int dsr; /* Downsampling ratio */ } SettingsDownSampling; -extern const SettingsDownSampling DefaultSettingsDownSampling; - // Returns the output sampling rate: SR_in/dsr float sampling_rate_out(const SettingsDownSampling *s); From d567eb3102a25627e26633df159bd6908f7ae58b Mon Sep 17 00:00:00 2001 From: Christoph Kuhn Date: Sat, 4 Jul 2026 18:44:43 +0200 Subject: [PATCH 11/20] test(downsampling): update downsampling_test.c --- .../downsampling/c_code/downsampling_test.c | 102 +++++++++--------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/elasticai/preprocessor/downsampling/c_code/downsampling_test.c b/elasticai/preprocessor/downsampling/c_code/downsampling_test.c index 3299db1..986a1e2 100644 --- a/elasticai/preprocessor/downsampling/c_code/downsampling_test.c +++ b/elasticai/preprocessor/downsampling/c_code/downsampling_test.c @@ -1,11 +1,8 @@ -/* downsampling_test.c – mirrors Python downsampling_test.py - * - * Compile: - * gcc -std=c99 -Wall -Wextra -o downsampling_test \ - * downsampling_test.c downsampling.c -lm - * Run: - * ./downsampling_test - */ +// downsampling_test.c +// Compile: +// gcc -std=c99 -Wall -Wextra -o downsampling_test \ +// downsampling_test.c downsampling.c -lm + #include "downsampling.h" #include @@ -16,8 +13,7 @@ #define M_PI 3.14159265358979323846 #endif -/* ─── minimal test harness ─────────────────────────────────────────────── */ - +// minimal test harness static int g_run = 0; static int g_pass = 0; static int g_fail = 0; @@ -39,27 +35,26 @@ static int g_fail = 0; #define CHECK_FEQ(a, b, eps, msg) \ CHECK(fabsf((float)(a) - (float)(b)) <= (float)(eps), msg) -/* ─── signal parameters (mirrors Python setUp) ────────────────────────── */ - +// signal parameters #define FS 40000.0f #define DSR 10 -#define N_SAMPLES 40001 /* linspace(0, 1, 40001, endpoint=True) */ -#define SENTINEL 1e38f /* value that cannot appear in filter output */ +#define N_SAMPLES 40001 // linspace(0, 1, 40001, endpoint=True) +#define SENTINEL 1e38f // value that cannot appear in filter output #define CIC_STAGES 5 static SettingsDownSampling g_sets; static float s_input[N_SAMPLES]; -static float s_uout [N_SAMPLES + 1]; /* +1: room for sentinel boundary check */ -static float s_ref [N_SAMPLES]; /* reference buffer for equivalence tests */ +static float s_uout [N_SAMPLES + 1]; // +1: room for sentinel boundary check +static float s_ref [N_SAMPLES]; // reference buffer for equivalence tests -/* ─── FIR-equivalent CIC reference ─────────────────────────────────────── */ +// FIR-equivalent CIC reference -/* Impulse response of a 5-stage CIC filter with DSR=10: - * = 5-fold convolution of the boxcar [1,1,...,1] (length 10), divided by 10^5. - * Length = (DSR-1)*CIC_STAGES + 1 = 46. - * Computed with Python/numpy (float64) and embedded here as the drift-free - * mathematical ground truth. The do_cic() int64 implementation must match - * this reference within float32 output precision (~1e-6). */ +// Impulse response of a 5-stage CIC filter with DSR=10: +// = 5-fold convolution of the boxcar [1,1,...,1] (length 10), divided by 10^5. +// Length = (DSR-1)*CIC_STAGES + 1 = 46. +// Computed with Python/numpy (float64) and embedded here as the drift-free +// mathematical ground truth. The do_cic() int64 implementation must match +// this reference within float32 output precision (~1e-6). static const double s_cic_h[46] = { 1.0000000000000001e-05, 5.0000000000000002e-05, 1.4999999999999999e-04, 3.5000000000000000e-04, 6.9999999999999999e-04, 1.2600000000000001e-03, @@ -80,8 +75,8 @@ static const double s_cic_h[46] = { }; #define CIC_H_LEN 46 -/* Compute the FIR-equivalent CIC output for output index out_idx. - * Negative input indices are treated as 0 (zero initial state). */ +// Compute the FIR-equivalent CIC output for output index out_idx. +// Negative input indices are treated as 0 (zero initial state). static double fir_cic_ref(size_t out_idx, const float *inp) { double acc = 0.0; @@ -92,7 +87,7 @@ static double fir_cic_ref(size_t out_idx, const float *inp) return acc; } -/* mirrors Python: inp_samp(time) */ +// mirrors Python: inp_samp(time) static void generate_input(void) { const float freqs[2] = { 4.0f, 400.0f }; @@ -105,7 +100,7 @@ static void generate_input(void) } } -/* mirrors Python: setUp() – called from main() before every test */ +// mirrors Python: setUp() – called from main() before every test static void setup(void) { g_sets.sampling_rate = FS; @@ -114,9 +109,7 @@ static void setup(void) for (size_t i = 0; i < N_SAMPLES + 1; i++) s_uout[i] = SENTINEL; } -/* ─── tests ─────────────────────────────────────────────────────────────── */ - -/* mirrors test_output_sampling_rate */ +// tests static void test_output_sampling_rate(void) { SettingsDownSampling s = { .sampling_rate = 10000.0f, .dsr = 4 }; @@ -124,51 +117,55 @@ static void test_output_sampling_rate(void) "sampling_rate_out: 10000 / 4 == 2500"); } -/* mirrors test_do_simple (size check via sentinel boundary) */ static void test_do_simple_size(void) { - /* n = (40001 / 10) * 10 = 40000 → n_blocks = 4000 */ - const size_t expected = N_SAMPLES / (size_t)g_sets.dsr; /* 4000 */ + // n = (40001 / 10) * 10 = 40000 → n_blocks = 4000 + const size_t expected = N_SAMPLES / (size_t)g_sets.dsr; // 4000 bool result = do_simple(&g_sets, s_input, N_SAMPLES, s_uout); CHECK(result, "do_simple: return-val is true"); CHECK(s_uout[expected - 1] != SENTINEL, "do_simple: last expected element is written"); CHECK(s_uout[expected] == SENTINEL, "do_simple: no write past expected size"); CHECK(expected == 4000u, "do_simple: output count is 4000"); } + static void test_do_simple_no_uin(void) { bool result = do_simple(&g_sets, NULL, N_SAMPLES, s_uout); CHECK(!result, "do_simple: no uin throws false"); } + static void test_do_simple_no_uout(void) { bool result = do_simple(&g_sets, s_input, N_SAMPLES, NULL); CHECK(!result, "do_simple: no uout throws false"); } + static void test_do_simple_no_settings(void) { bool result = do_simple(NULL, s_input, N_SAMPLES, s_uout); CHECK(!result, "do_simple: no settings throws false"); } + static void test_do_simple_dsr_is_zero(void) { g_sets.dsr = 0; bool result = do_simple(&g_sets, s_input, N_SAMPLES, s_uout); CHECK(!result, "do_simple: dsr = 0 throws false"); } + static void test_do_simple_dsr_is_negative(void) { g_sets.dsr = -10; bool result = do_simple(&g_sets, s_input, N_SAMPLES, s_uout); CHECK(!result, "do_simple: dsr is negative throws false"); } + static void test_do_simple_uin_len_is_zero(void) { bool result = do_simple(&g_sets, s_input, 0, s_uout); CHECK(!result, "do_simple: uin_len = 0 throws false"); } -/* mirrors test_cic (spot-check of output[0], derivable analytically) */ static void test_cic_first_value(void) { /* input[0] = 0.0 (t=0: both sines are 0) @@ -179,39 +176,44 @@ static void test_cic_first_value(void) CHECK_FEQ(s_uout[0], 0.0f, 1e-7f, "cic: output[0] == 0.0"); } -/* mirrors test_cic_size */ static void test_cic_no_settings(void) { bool result = do_cic(NULL, s_input, N_SAMPLES, CIC_STAGES, s_uout); CHECK(!result, "do_cic: no settings throws false"); } + static void test_cic_no_uin(void) { bool result = do_cic(&g_sets, NULL, N_SAMPLES, CIC_STAGES, s_uout); CHECK(!result, "do_cic: no uin throws false"); } + static void test_cic_no_uout(void) { bool result = do_cic(&g_sets, s_input, N_SAMPLES, CIC_STAGES, NULL); CHECK(!result, "do_cic: no uout throws false"); } + static void test_cic_uin_len_is_zero(void) { bool result = do_cic(&g_sets, s_input, 0, CIC_STAGES, s_uout); CHECK(!result, "do_cic: uin_len = 0 throws false"); } + static void test_cic_dsr_is_zero(void) { g_sets.dsr = 0; bool result = do_cic(&g_sets, s_input, N_SAMPLES, CIC_STAGES, s_uout); CHECK(!result, "do_cic: dsr = 0 throws false"); } + static void test_cic_dsr_is_negative(void) { g_sets.dsr = -10; bool result = do_cic(&g_sets, s_input, N_SAMPLES, CIC_STAGES, s_uout); CHECK(!result, "do_cic: dsr is negative throws false"); } + static void test_cic_size(void) { /* Fires at 0, DSR, 2*DSR, … → count = (N_SAMPLES-1)/DSR + 1 = 4001 */ @@ -222,9 +224,9 @@ static void test_cic_size(void) CHECK(expected == 4001u, "cic: output count is 4001"); } -/* compares every CIC output value against the FIR-equivalent reference. - * The FIR convolution uses double arithmetic and avoids the accumulation - * drift of float64 CIC integrators. Tolerance 1e-5 (actual max diff ~7e-8). */ +// compares every CIC output value against the FIR-equivalent reference. +// The FIR convolution uses double arithmetic and avoids the accumulation +// drift of float64 CIC integrators. Tolerance 1e-5 (actual max diff ~7e-8). */ static void test_cic_all_values(void) { do_cic(&g_sets, s_input, N_SAMPLES, CIC_STAGES, s_uout); @@ -248,17 +250,19 @@ static void test_polyphase_one_no_uin(void) bool result = do_decimation_polyphase_order_one(NULL, N_SAMPLES, s_uout); CHECK(!result, "polyphase_one: no uin throws false"); } + static void test_polyphase_one_no_uout(void) { bool result = do_decimation_polyphase_order_one(s_input, N_SAMPLES, NULL); CHECK(!result, "polyphase_one: no uout throws false"); } + static void test_polyphase_one_uin_len_is_zero(void) { bool result = do_decimation_polyphase_order_one(s_input, 0, s_uout); CHECK(!result, "polyphase_one: uin_len = 0 throws false"); } -/* mirrors test_polyphase_one (spot-check of output[0]) */ + static void test_polyphase_one_first_value(void) { /* idx=1 (first odd index): @@ -273,7 +277,6 @@ static void test_polyphase_one_first_value(void) "polyphase_one: output[0] matches Python golden value"); } -/* mirrors test_polyphase_one_size */ static void test_polyphase_one_size(void) { /* Odd indices in [0..40000]: count = 40001 / 2 = 20000 (integer div) */ @@ -284,7 +287,6 @@ static void test_polyphase_one_size(void) CHECK(expected == 20000u, "polyphase_one: output count is 20000"); } -/* mirrors test_polyphase_one_type */ static void test_polyphase_one_finite(void) { do_decimation_polyphase_order_one(s_input, N_SAMPLES, s_uout); @@ -300,18 +302,19 @@ static void test_polyphase_two_no_uin(void) bool result = do_decimation_polyphase_order_two(NULL, N_SAMPLES, s_uout); CHECK(!result, "polyphase_two: no uin throws false"); } + static void test_polyphase_two_no_uout(void) { bool result = do_decimation_polyphase_order_two(s_input, N_SAMPLES, NULL); CHECK(!result, "polyphase_two: no uout throws false"); } + static void test_polyphase_two_uin_len_is_zero(void) { bool result = do_decimation_polyphase_order_two(s_input, 0, s_uout); CHECK(!result, "polyphase_two: uin_len = 0 throws false"); } -/* mirrors test_polyphase_two (spot-check of output[0]) */ static void test_polyphase_two_first_value(void) { /* idx=1: @@ -326,7 +329,6 @@ static void test_polyphase_two_first_value(void) "polyphase_two: output[0] matches Python golden value"); } -/* mirrors test_polyphase_two_size */ static void test_polyphase_two_size(void) { const size_t expected = N_SAMPLES / 2; /* 20000 */ @@ -336,7 +338,6 @@ static void test_polyphase_two_size(void) CHECK(expected == 20000u, "polyphase_two: output count is 20000"); } -/* mirrors test_polyphase_two_type */ static void test_polyphase_two_finite(void) { do_decimation_polyphase_order_two(s_input, N_SAMPLES, s_uout); @@ -347,33 +348,37 @@ static void test_polyphase_two_finite(void) CHECK(ok, "polyphase_two: all output values are finite (not NaN / Inf)"); } -/* is_power_of_two is static — tested indirectly via do_decimation_polyphase */ static void test_polyphase_no_settings(void) { bool result = do_decimation_polyphase(NULL, s_input, N_SAMPLES, false, s_uout); CHECK(!result, "polyphase no settings: throws false"); } + static void test_polyphase_no_uin(void) { bool result = do_decimation_polyphase(&g_sets, NULL, N_SAMPLES, false, s_uout); CHECK(!result, "polyphase no uin: throws false"); } + static void test_polyphase_no_uout(void) { bool result = do_decimation_polyphase(&g_sets, s_input, N_SAMPLES, false, NULL); CHECK(!result, "polyphase no uout: throws false"); } + static void test_polyphase_uin_len_is_zero(void) { bool result = do_decimation_polyphase(&g_sets, s_input, 0, false, s_uout); CHECK(!result, "polyphase uin_len=0: throws false"); } + static void test_polyphase_dsr_is_zero(void) { SettingsDownSampling s = { .sampling_rate = FS, .dsr = 0 }; bool result = do_decimation_polyphase(&s, s_input, N_SAMPLES, false, s_uout); CHECK(!result, "polyphase dsr=0: throws false"); } + static void test_polyphase_dsr_is_one(void) { SettingsDownSampling s = { .sampling_rate = FS, .dsr = 1 }; @@ -381,7 +386,6 @@ static void test_polyphase_dsr_is_one(void) CHECK(!result, "polyphase dsr=1: throws false"); } -/* dsr=3 (not a power of two): function must return without writing output */ static void test_polyphase_invalid_dsr(void) { SettingsDownSampling s = { .sampling_rate = FS, .dsr = 3 }; @@ -390,7 +394,6 @@ static void test_polyphase_invalid_dsr(void) CHECK(s_uout[0] == SENTINEL, "polyphase dsr=3: no output written (not power of two)"); } -/* dsr=2, order_two: one pass — output must equal direct order_two call */ static void test_polyphase_dsr2_order_two(void) { SettingsDownSampling s = { .sampling_rate = FS, .dsr = 2 }; @@ -401,7 +404,6 @@ static void test_polyphase_dsr2_order_two(void) CHECK_FEQ(s_uout[999], s_ref[999], 1e-6f, "polyphase dsr=2 order_two: output[999] matches"); } -/* dsr=2, order_one: one pass — output must equal direct order_one call */ static void test_polyphase_dsr2_order_one(void) { SettingsDownSampling s = { .sampling_rate = FS, .dsr = 2 }; @@ -412,7 +414,6 @@ static void test_polyphase_dsr2_order_one(void) CHECK_FEQ(s_uout[999], s_ref[999], 1e-6f, "polyphase dsr=2 order_one: output[999] matches"); } -/* dsr=4: two passes → output size = N_SAMPLES / 4 = 10000 */ static void test_polyphase_dsr4_size(void) { SettingsDownSampling s = { .sampling_rate = FS, .dsr = 4 }; @@ -422,8 +423,7 @@ static void test_polyphase_dsr4_size(void) CHECK(s_uout[expected] == SENTINEL, "polyphase dsr=4: no write past expected size"); } -/* ─── main ──────────────────────────────────────────────────────────────── */ - +// main int main(void) { setup(); test_output_sampling_rate(); From ebab63b015f85df7809998fa0614e45aa2a1fd58 Mon Sep 17 00:00:00 2001 From: ohrenschmaus <90036831+ohrenschmaus@users.noreply.github.com> Date: Sat, 4 Jul 2026 19:38:34 +0200 Subject: [PATCH 12/20] Fix test checks for project path validation --- elasticai/preprocessor/_basics_test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/elasticai/preprocessor/_basics_test.py b/elasticai/preprocessor/_basics_test.py index 55ec2c4..9ea2c2b 100644 --- a/elasticai/preprocessor/_basics_test.py +++ b/elasticai/preprocessor/_basics_test.py @@ -2,7 +2,7 @@ def test_path_to_project() -> None: - checks = ["elastic-ai", "preprocessor"] + checks = ["elasticai", "preprocessor"] rslt = get_path_to_project() assert rslt.is_dir() @@ -10,7 +10,7 @@ def test_path_to_project() -> None: def test_path_to_project_ref() -> None: - checks = ["elastic-ai", "preprocessor", "test"] + checks = ["elasticai", "preprocessor", "test"] rslt = get_path_to_project(new_folder=checks[2]) assert not rslt.exists() From 113d9a40102e9f57d88bbcc32cdbfbfb27bd2066 Mon Sep 17 00:00:00 2001 From: Christoph Kuhn Date: Sat, 4 Jul 2026 19:47:08 +0200 Subject: [PATCH 13/20] test(downsampling): update downsampling_test.py --- elasticai/preprocessor/downsampling/downsampling_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elasticai/preprocessor/downsampling/downsampling_test.py b/elasticai/preprocessor/downsampling/downsampling_test.py index 4a844ca..8c36f88 100644 --- a/elasticai/preprocessor/downsampling/downsampling_test.py +++ b/elasticai/preprocessor/downsampling/downsampling_test.py @@ -20067,7 +20067,7 @@ def test_polyphase_one(self): -0.07125326561763741, ] results = DownSampling(self.sets)._do_decimation_polyphase_order_one(self.input) - np.testing.assert_almost_equal(results, np.array(check), decimal=10) + np.testing.assert_almost_equal(results, np.array(check), decimal=8) def test_polyphase_one_size(self): check = int((self.input.size - 1) / 2) From 5b6bd63d53b2b449046412786223cdbfd823bfc6 Mon Sep 17 00:00:00 2001 From: Christoph Kuhn Date: Sat, 4 Jul 2026 19:52:21 +0200 Subject: [PATCH 14/20] test(downsampling): update downsampling_test.py --- elasticai/preprocessor/downsampling/downsampling_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elasticai/preprocessor/downsampling/downsampling_test.py b/elasticai/preprocessor/downsampling/downsampling_test.py index 8c36f88..4a844ca 100644 --- a/elasticai/preprocessor/downsampling/downsampling_test.py +++ b/elasticai/preprocessor/downsampling/downsampling_test.py @@ -20067,7 +20067,7 @@ def test_polyphase_one(self): -0.07125326561763741, ] results = DownSampling(self.sets)._do_decimation_polyphase_order_one(self.input) - np.testing.assert_almost_equal(results, np.array(check), decimal=8) + np.testing.assert_almost_equal(results, np.array(check), decimal=10) def test_polyphase_one_size(self): check = int((self.input.size - 1) / 2) From 68cf64b83723d0f5ac8d7f735a82697f43941d0b Mon Sep 17 00:00:00 2001 From: Christoph Kuhn Date: Sat, 4 Jul 2026 20:09:31 +0200 Subject: [PATCH 15/20] fix(downsampling): align polyphase_order_two with corrected Python impl - downsampling.c: use last_even_prev/last_even (even-indexed samples) instead of last_ls/last_hs to correctly compute FIR [1,2,1] output[k] = uin[2k+1] + 2*uin[2k] + uin[2k-2] - downsampling_test.py: replace 20000-entry golden data in test_polyphase_two with analytical first-value check; fix setUp to use sampling_rate=40e3 and freq=[4,400] after merge regression Co-Authored-By: Claude Sonnet 4.6 --- .../downsampling/c_code/downsampling.c | 19 +- .../downsampling/c_code/downsampling_test.c | 9 +- .../downsampling/downsampling_test.py | 20010 +--------------- 3 files changed, 21 insertions(+), 20017 deletions(-) diff --git a/elasticai/preprocessor/downsampling/c_code/downsampling.c b/elasticai/preprocessor/downsampling/c_code/downsampling.c index 32e044f..7273c3c 100644 --- a/elasticai/preprocessor/downsampling/c_code/downsampling.c +++ b/elasticai/preprocessor/downsampling/c_code/downsampling.c @@ -152,19 +152,22 @@ bool do_decimation_polyphase_order_two( if (uin == NULL || uout == NULL) return false; if (uin_len == 0) return false; - float last_hs = 0.0f; - float last_ls = 0.0f; - size_t out_idx = 0; + float last_even_prev = 0.0f; + float last_even = 0.0f; + size_t out_idx = 0; - for (size_t idx = 0; idx < uin_len; idx++) + for (size_t idx = 0; idx < uin_len; idx++) { float val = uin[idx]; - if (idx % 2 == 1) + if (idx % 2 == 0) { - uout[out_idx++] = val + last_ls + 2.0f * last_hs; - last_ls = val; + last_even_prev = last_even; + last_even = val; + } + else + { + uout[out_idx++] = val + 2.0f * last_even + last_even_prev; } - last_hs = val; } return true; } diff --git a/elasticai/preprocessor/downsampling/c_code/downsampling_test.c b/elasticai/preprocessor/downsampling/c_code/downsampling_test.c index 986a1e2..4512d94 100644 --- a/elasticai/preprocessor/downsampling/c_code/downsampling_test.c +++ b/elasticai/preprocessor/downsampling/c_code/downsampling_test.c @@ -317,10 +317,11 @@ static void test_polyphase_two_uin_len_is_zero(void) static void test_polyphase_two_first_value(void) { - /* idx=1: - * output[0] = input[1] + last_ls(=0) + 2*last_hs(=0) = input[1] - * Both extra terms vanish because the states initialise to 0. - * Same first element as polyphase_one (confirmed by Python golden). */ + /* idx=1 (odd): + * output[0] = input[1] + 2*last_even(=input[0]=0) + last_even_prev(=0) + * = input[1] + * Both extra terms vanish: input[0]=0 (t=0) and last_even_prev inits to 0. + * Same first element as polyphase_one (confirmed by Python). */ bool result = do_decimation_polyphase_order_two(s_input, N_SAMPLES, s_uout); CHECK(result, "polyphase_two: return-val is true"); CHECK_FEQ(s_uout[0], s_input[1], 1e-6f, diff --git a/elasticai/preprocessor/downsampling/downsampling_test.py b/elasticai/preprocessor/downsampling/downsampling_test.py index 4a844ca..bd098de 100644 --- a/elasticai/preprocessor/downsampling/downsampling_test.py +++ b/elasticai/preprocessor/downsampling/downsampling_test.py @@ -11,7 +11,7 @@ def inp_samp(time: np.ndarray) -> np.ndarray: - freq = [4, 20] + freq = [4, 400] z = 0 * time for f in freq: z += np.sin(2 * np.pi * f * time) @@ -21,7 +21,7 @@ def inp_samp(time: np.ndarray) -> np.ndarray: class TestDownSampling(TestCase): def setUp(self): self.sets: SettingsDownSampling = deepcopy(DefaultSettingsDownSampling) - self.sets.sampling_rate = 2e3 + self.sets.sampling_rate = 40e3 time = np.linspace(0, 1, int(self.sets.sampling_rate) + 1, endpoint=True, dtype=float) self.input = 0.75 * inp_samp(time) @@ -20079,20010 +20079,10 @@ def test_polyphase_one_type(self): self.assertEqual(type(results), np.ndarray) def test_polyphase_two(self): - check = [ - 0.023782064257008607, - 0.18969931787638333, - 0.3764366880773238, - 0.557296874564664, - 0.7294573279043932, - 0.8902326985103935, - 1.037117186164625, - 1.1678240579365189, - 1.2803217112803855, - 1.3728657135742415, - 1.4440263128173976, - 1.4927109856266663, - 1.5181816669358212, - 1.520066389675657, - 1.4983651508699392, - 1.4534499116354087, - 1.3860587310858423, - 1.2972841266520003, - 1.1885558443821787, - 1.0616183109460091, - 0.9185031229368819, - 0.7614970073331264, - 0.5931057584006152, - 0.4160147197733778, - 0.23304643493342564, - 0.047116133967016124, - -0.13881424140220078, - -0.3217827494504554, - -0.4988741600911389, - -0.6672659298416523, - -0.8242727150671434, - -0.9673887215006824, - -1.0943272221626477, - -1.203056620458121, - -1.2918324897157087, - -1.3592250838851176, - -1.404141885533355, - -1.4258448355441766, - -1.4239619727981399, - -1.3984933002685414, - -1.3498107850214147, - -1.2786524921195785, - -1.1861109449425795, - -1.0736158954872297, - -0.9429117763713997, - -0.7960301901364333, - -0.6352578697083171, - -0.46310061530027424, - -0.2822437764933712, - -0.09550990271633256, - 0.09418576999820684, - 0.2838812939805597, - 0.470614721561273, - 0.6514708167084158, - 0.823627029994439, - 0.9843980118399197, - 1.1312779620337483, - 1.261980147652522, - 1.374472966157951, - 1.4670119849356862, - 1.5381674519929094, - 1.5868468439545358, - 1.6123120957626789, - 1.6141912403567074, - 1.592484274769195, - 1.5475631601259265, - 1.4801659555499564, - 1.3913851784815592, - 1.282650574978776, - 1.1557065717212218, - 1.012584765312504, - 0.8555718827414018, - 0.687173718284475, - 0.5100756155866751, - 0.32710011814116474, - 0.14116245604559313, - -0.04477542896476337, - -0.22775159515427856, - -0.4048508124242521, - -0.5732505372797538, - -0.7302654260733702, - -0.8733896845253769, - -1.0003365856431212, - -1.1090745328184153, - -1.1978590993663696, - -1.2652605392229552, - -1.3101863349412106, - -1.3318984273906898, - -1.330024855437512, - -1.3045656220403035, - -1.255892694250191, - -1.1847441371148544, - -1.0922124739984655, - -0.9797274568822272, - -0.8490335183681702, - -0.7021622609815599, - -0.5414004176320713, - -0.3692537885163858, - -0.18840772319878818, - -0.0016847710909904737, - 0.18799983179161472, - 0.37768413779682886, - 0.5644061992729075, - 0.7452507802058694, - 0.91739533118635, - 1.0781545026533403, - 1.225022494414382, - 1.3557125735649578, - 1.4681931375858925, - 1.560719753882191, - 1.6318626704806194, - 1.680529364025912, - 1.705981769480235, - 1.7078479198032432, - 1.6861278120480299, - 1.6411934073611334, - 1.5737827648865939, - 1.4849884020859072, - 1.3762400650385684, - 1.249282180445877, - 1.106146344933365, - 0.9491192855119637, - 0.78070679648062, - 0.603594221506905, - 0.42060410410683635, - 0.23465167440115103, - 0.04869887414844341, - -0.13429235489210894, - -0.3114067825980137, - -0.4798218654503264, - -0.6368522597773818, - -0.7799921712749631, - -0.9069548729257023, - -1.0157087680964652, - -1.1045094300771736, - -1.1719271127783841, - -1.2168692987274854, - -1.2385979287681468, - -1.2367410417403737, - -1.2112986405764448, - -1.1626426923009068, - -1.0915112619346246, - -0.9989968728147265, - -0.8865292768951385, - -0.755852906750376, - -0.6089993648779691, - -0.4482553841596116, - -0.2761267647637746, - -0.09529885622631243, - 0.09140579206974042, - 0.2810719441379004, - 0.47073765235509124, - 0.6574409690989483, - 0.8382666583850894, - 1.0103921708339796, - 1.1711321569146784, - 1.3179808164650237, - 1.4486514166110194, - 1.5611123548642565, - 1.6536191986607307, - 1.7247421960584306, - 1.7733888237335462, - 1.7988210166799306, - 1.8006668078891557, - 1.7789261944464663, - 1.7339711375307805, - 1.6665396963187529, - 1.577724388304722, - 1.4689549596012577, - 1.3419758369429704, - 1.1988186169889246, - 1.0417700267838224, - 0.8733358606606103, - 0.6962014623210913, - 0.5131893753157444, - 0.3272148298000011, - 0.14123976756737674, - -0.041773869587792695, - -0.2189108515076312, - -0.38734863463757774, - -0.5444018752701207, - -0.6875647790649672, - -0.8145506189684416, - -0.9233277983108691, - -1.0121518903454012, - -1.0795931489455979, - -1.1245590566016155, - -1.1463115541196673, - -1.1444786803020668, - -1.1190604380431721, - -1.0704287943293807, - -0.9993218141431772, - -0.9068320207830798, - -0.7943891661641724, - -0.6637376828219042, - -0.5169091732145005, - -0.35619037018413163, - -0.18408707385950485, - -0.0032846337364916094, - 0.18339440084209796, - 0.37303479393022254, - 0.5626745979454882, - 0.7493518653064393, - 0.9301513600698184, - 1.1022505328974608, - 1.2629640343000195, - 1.4097860641571538, - 1.5404298896369233, - 1.6528639082931995, - 1.745343687604484, - 1.8164394756715063, - 1.865058749213424, - 1.890463443267285, - 1.8922815908680872, - 1.8705131891447266, - 1.8255301993200048, - 1.7580706806146837, - 1.669227150567441, - 1.5604293553354163, - 1.43342172169801, - 1.290235846359309, - 1.133158456409273, - 0.96469534622632, - 0.7875318595579599, - 0.6044905400006133, - 0.4184866177558639, - 0.2324820346636258, - 0.04943873256484876, - -0.12772805833574885, - -0.29619579443653105, - -0.453279131982683, - -0.5964722765863921, - -0.7234885011462207, - -0.8322962089445168, - -0.9211509731862247, - -0.9886230476964647, - -1.033619914916734, - -1.0554035156043553, - -1.053601888512525, - -1.0282150364862586, - -0.9796149264623847, - -0.9085396233735932, - -0.816081650468376, - -0.703670759611573, - -0.5730513832881559, - -0.42625512390564646, - -0.2655687142552897, - -0.09349795441464534, - 0.08727180617181068, - 0.27391801821285733, - 0.46352544581429245, - 0.653132141445779, - 0.8397761575781362, - 1.0205422583206265, - 1.1926078943878162, - 1.3532877163433117, - 1.5000759241199613, - 1.6306857849392344, - 1.7430856964086323, - 1.835531226060524, - 1.906592622049717, - 1.9551773611496817, - 1.9805473784520011, - 1.9823307070464316, - 1.9605273441168545, - 1.915509250941278, - 1.8480144867959, - 1.7591355692750512, - 1.6503022445917543, - 1.5232589395815181, - 1.3800372510047598, - 1.2229239060079826, - 1.054424699026398, - 0.8772249738645088, - 0.6941472741759606, - 0.5081068302197937, - 0.3220655838935874, - 0.13898547709618997, - -0.038218259909559286, - -0.20672308346368248, - -0.36384364975280015, - -0.5070741643303072, - -0.6341279000357608, - -0.7429732600922642, - -0.8318658176453088, - -0.8993758264603338, - -0.9444107689189312, - -0.9662325857182978, - -0.9644693155512837, - -0.9391209612023339, - -0.8905594895474818, - -0.8195229654584029, - -0.7271039121223528, - -0.6147320813427062, - -0.484151905542761, - -0.3373949870681348, - -0.17674805864794407, - -0.004716920297403275, - 0.17601307860157306, - 0.3626193888205659, - 0.552186774528369, - 0.7417532882578833, - 0.9283569825433824, - 1.1090826215578011, - 1.2811076560795975, - 1.4417467367364987, - 1.588494063525685, - 1.7190629037331855, - 1.8314216550312787, - 1.9238258850173258, - 1.9948458419113582, - 2.043389002552283, - 2.068717302097339, - 2.0704587737021614, - 2.04861341461673, - 2.0035531861853695, - 1.9360161477508155, - 1.847094816974159, - 1.738218940135396, - 1.6111329441372257, - 1.4678684258074934, - 1.310712112360323, - 1.142169798298791, - 0.9649268274954591, - 0.7818057436722802, - 0.5957217771567813, - 0.40963686991528253, - 0.22651296391558945, - 0.049265289489682854, - -0.11928360963305097, - -0.2764483895696528, - -0.4197232558036841, - -0.5468214811046664, - -0.655711468625456, - -0.7446487914410644, - -0.8122037032462419, - -0.8572836863516757, - -0.8791506813834327, - -0.8774327269630228, - -0.8521298258033307, - -0.803613944708611, - -0.7326231484785514, - -0.6402499602281896, - -0.5279241316884813, - -0.39739009521007307, - -0.2506794530657227, - -0.09007893791147711, - 0.08190565031074712, - 0.2625889622925516, - 0.4491484488792193, - 0.6386688743135216, - 0.8281882912024794, - 1.0147447521547646, - 1.195423021417884, - 1.367400549845105, - 1.5279919881391728, - 1.6746915363725012, - 1.805212461906569, - 1.917523162489316, - 2.009879205793986, - 2.080850840116704, - 2.129345542372678, - 2.1546252477956775, - 2.1563179896180715, - 2.1344237651667877, - 2.08931453586332, - 2.021728361127783, - 1.932757758698854, - 1.8238324749343473, - 1.6966969368149734, - 1.5533827412468093, - 1.396176615522441, - 1.2275843542235845, - 1.0502913013016948, - 0.8671200005577895, - 0.6809856823987204, - 0.4948502888703067, - 0.3116757620200632, - 0.1343773322599467, - -0.03422245660055694, - -0.19143826059807656, - -0.33476428513563583, - -0.4619138029019534, - -0.5708552169688899, - -0.6598441003302519, - -0.727450706599365, - -0.7725825180052827, - -0.7945014750922328, - -0.7928356163996659, - -0.767584944558201, - -0.7191214262896197, - -0.6481831263109088, - -0.5558625676542267, - -0.4435895019674019, - -0.3131083615177686, - -0.16645074849456432, - -0.00590339547007785, - 0.16602789769771342, - 0.34665778178456896, - 0.5331637077201623, - 0.7226304398318023, - 0.9120960308113546, - 1.0985985333524364, - 1.2792227117878023, - 1.4511460170561195, - 1.61168309994575, - 1.7583281606149617, - 1.8887944665112564, - 2.0010504154688475, - 2.0933515752474197, - 2.1642681942297783, - 2.212707749418006, - 2.2379321761329534, - 2.2395695076942834, - 2.217619741516428, - 2.1724548391085854, - 2.104812859978783, - 2.015786321953833, - 1.906804971479855, - 1.7796132356261292, - 1.6362427113874483, - 1.4789801261453648, - 1.3103312745707465, - 1.1329815007044135, - 0.9497533484369557, - 0.7635620482649936, - 0.5773695423243365, - 0.3941377727526899, - 0.21678197005238445, - 0.0481246781235451, - -0.10914875897970132, - -0.25253254656932395, - -0.3797399572428555, - -0.48873939398072475, - -0.5777864296851047, - -0.6454513178775054, - -0.6906415406949341, - -0.7126190385893842, - -0.7110118500078615, - -0.6858199774883356, - -0.6374153876597362, - -0.5665361451459999, - -0.47427477288601205, - -0.36206102243415716, - -0.23163932596408457, - -0.08504128557116046, - 0.07544636626637746, - 0.24731782978485878, - 0.42788775585449096, - 0.6143335954996467, - 0.8037401131425248, - 0.9931453615700564, - 1.1795873935711776, - 1.3601509735741046, - 1.5320135526132115, - 1.6924897815727649, - 1.8390738607071098, - 1.969479057560068, - 2.0816737700623245, - 2.173913566070296, - 2.244768694063662, - 2.2931466311416253, - 2.318309312722333, - 2.319884772222954, - 2.2978730071556233, - 2.252645979127445, - 2.1849417477445527, - 2.0958528309320554, - 1.9868089752345983, - 1.8595546078201322, - 1.7161213257823902, - 1.558795856601997, - 1.3900839950491464, - 1.2126710852641391, - 1.0293796712372754, - 0.843124983565088, - 0.6568689644834551, - 0.4735735562304068, - 0.29615398940874965, - 0.12743280801930135, - -0.029904643782905124, - -0.17335257120877454, - -0.3006242467545328, - -0.4096880732991345, - -0.4987996236430815, - -0.5665291512059869, - -0.6117841380228026, - -0.6338265244432377, - -0.6322843488118348, - -0.6071576135639013, - -0.558818285225501, - -0.48800442831751845, - -0.39580856567558576, - -0.2836604487506311, - -0.15330450961267456, - -0.0067723502532345825, - 0.15364929695349744, - 0.32545463234804983, - 0.5059583069051062, - 0.6923377717536064, - 0.8816777914206009, - 1.0710164187980111, - 1.2573917067799796, - 1.437888419900129, - 1.6096840092984168, - 1.7700931259648982, - 1.916609970259898, - 2.046947809833407, - 2.15907504272249, - 2.2512472368901, - 2.3220346409226944, - 2.370344732026403, - 2.39543944572652, - 2.3969468155475417, - 2.374866839109127, - 2.329571478126091, - 2.261798792312484, - 2.172641299701504, - 2.0635287469460852, - 1.9362055613226807, - 1.7927033400336654, - 1.6353088106685627, - 1.4665277681065805, - 1.2890455565973147, - 1.1056847202404725, - 0.9193604897422138, - 0.733034807448242, - 0.5496696157065901, - 0.37218014523026405, - 0.20338894013047443, - 0.045981344672816685, - -0.09753684624282731, - -0.22487890500175145, - -0.334013234371743, - -0.4231954070419823, - -0.4909956763205619, - -0.5363215241307107, - -0.5584348907102519, - -0.5569638142916344, - -0.5319082971978888, - -0.4836403058426235, - -0.4128979046340612, - -0.32077361629500123, - -0.20869719216335306, - -0.07841306419590564, - 0.06804716572919894, - 0.22839676535137407, - 0.40012993512492145, - 0.5805613261384519, - 0.7668683896351016, - 0.9561358902562049, - 1.1454018810082394, - 1.331704414900023, - 1.5121282565800853, - 1.6838508573034436, - 1.844186868175428, - 1.9906304896717897, - 2.120894989558165, - 2.2329487659874143, - 2.3250473870385098, - 2.3957611014140685, - 2.443997386436606, - 2.4690181777479516, - 2.470451508989343, - 2.448297377897352, - 2.402927746303902, - 2.3350806740403094, - 2.245848679257262, - 2.136661508725325, - 2.0092635898387825, - 1.8656865199180448, - 1.7082170266708, - 1.539360905094674, - 1.3618034995577701, - 1.178367354278587, - 0.9919677000821718, - 0.8055664794333582, - 0.6221256347994542, - 0.44456039701294203, - 0.27569331030464944, - 0.1182097190600377, - -0.02538458170103955, - -0.15280286424365266, - -0.26201353121525617, - -0.3512721551844561, - -0.41914898933863276, - -0.4645515154801074, - -0.4867416737256095, - -0.48534750218633094, - -0.4603690030638576, - -0.41217814265016883, - -0.3415129852317018, - -0.2494660534092642, - -0.13746709839860743, - -0.00726055203420882, - 0.1391219839283414, - 0.29939377735110123, - 0.4710490288112697, - 0.6514023895205023, - 0.8376313108451249, - 1.0268205575499163, - 1.2160081827648739, - 1.402232239622614, - 1.5825774928955503, - 1.7542213939628417, - 1.9144785940540583, - 2.0608432937694388, - 2.1910287609992167, - 2.3030033940210837, - 2.395022761038965, - 2.465657110880653, - 2.5138139209939716, - 2.5387551271462665, - 2.5401087631044437, - 2.5178748267309268, - 2.4724252799836597, - 2.404498182820166, - 2.315186053517482, - 2.2059186389727454, - 2.078440366706934, - 1.9347828341673554, - 1.7772327691887573, - 1.6082959668959909, - 1.4306577717845985, - 1.2471407282006028, - 1.0606600670968507, - 0.8741777310660761, - 0.6906556627036692, - 0.5130090929703865, - 0.34406056622549913, - 0.18649542698305024, - 0.04281947039169541, - -0.08468057568470677, - -0.19397311376449225, - -0.28331371628697954, - -0.35127263631009714, - -0.3967573555065345, - -0.41902981386323535, - -0.41771804936142276, - -0.39282206407255277, - -0.34471382415830704, - -0.2741313937746467, - -0.18216729539174994, - -0.07025128009455345, - 0.059872220413425825, - 0.20617160450774052, - 0.3663601401817752, - 0.537932028144191, - 0.7182019197382656, - 0.9043472664621852, - 1.093452833212647, - 1.2825566732518328, - 1.468696839844651, - 1.6489580978959786, - 1.8205178989176316, - 1.980690894271983, - 2.126971284692234, - 2.2570723382017612, - 2.3689624532115454, - 2.4608971980589978, - 2.531446821705524, - 2.5795188017327453, - 2.60437507404197, - 2.6056436725342227, - 2.5833245952062134, - 2.5377898041503393, - 2.4697773594587287, - 2.3803797795432025, - 2.2710268114358247, - 2.143462882792689, - 1.9997195911963495, - 1.842083664616996, - 1.673060898315049, - 1.4953366369218197, - 1.311733424919225, - 1.1251664933961893, - 0.9385977850816795, - 0.7549892427074683, - 0.5772560973708978, - 0.4082208935679227, - 0.25056897594947647, - 0.10680613980123187, - -0.020780886875733304, - -0.13016050646241628, - -0.2195882912606204, - -0.2876344941905912, - -0.333206596787204, - -0.35556653889939827, - -0.35434235837025346, - -0.329534057132919, - -0.2815136012106082, - -0.2110190546206599, - -0.11914293969447827, - -0.007315007378061539, - 0.12272031076419011, - 0.2689314132470544, - 0.4290315682033381, - 0.6005149764812395, - 0.7806962895638216, - 0.9667529590890777, - 1.1557697500937798, - 1.3447847159802984, - 1.5308359101538445, - 1.7110080976598678, - 1.8824787301507715, - 2.042562459129768, - 2.1887534854710156, - 2.3187650773390143, - 2.4305656332860206, - 2.5224107217908553, - 2.5928705919565123, - 2.640852721506355, - 2.665619046483566, - 2.6667976009312135, - 2.6443883829882013, - 2.598763354889262, - 2.530660576869033, - 2.441172567481976, - 2.331729073902961, - 2.204074523931022, - 2.060240515291824, - 1.9025137760988216, - 1.733400101755836, - 1.555584837037705, - 1.3718905265701022, - 1.185232401585768, - 0.9985724049577078, - 0.8148724795618243, - 0.6370478566397664, - 0.4679210808319657, - 0.3101774969339399, - 0.16632290037614988, - 0.03864401930451984, - -0.07082754851684808, - -0.16034737524457898, - -0.2284857136535714, - -0.27415004513319896, - -0.2966023093867686, - -0.29547054411156526, - -0.2707547510948015, - -0.22282689621360985, - -0.15242504333910192, - -0.060641714656291326, - 0.05109333903532462, - 0.1810356863180233, - 0.3271537258533958, - 0.48716072592121723, - 0.6585508875167828, - 0.8386388622703888, - 1.024602101967453, - 1.213525371792265, - 1.402446725294873, - 1.5884042160283462, - 1.7684826091860633, - 1.9398593565685815, - 2.099849109827333, - 2.245946069984912, - 2.375863505354337, - 2.4875698146365526, - 2.579320566459223, - 2.6496860100742956, - 2.6975736233542564, - 2.7222453424915374, - 2.723329201678605, - 2.700825199203898, - 2.6551052974518328, - 2.5869075568068522, - 2.497324495973389, - 2.3877858622764068, - 2.260036083665182, - 2.116106758015764, - 1.958284613592097, - 1.7890754459487008, - 1.6111646000111914, - 1.4273746205561677, - 1.2406207389674653, - 1.0538648982692815, - 0.8700690414888959, - 0.6921484000194151, - 0.5229255186529265, - 0.3650857423366878, - 0.22113486665306228, - 0.09335961990003644, - -0.016208400006142293, - -0.10582476506976482, - -0.174059727913301, - -0.21982076977352938, - -0.24236983020103886, - -0.24133494674026307, - -0.2167161210254258, - -0.16888531878053292, - -0.09858060372343541, - -0.0068944978857646, - 0.104743248086537, - 0.23458820292937893, - 0.3806087654581735, - 0.540518204106591, - 0.7118107200240349, - 0.8918009649949693, - 1.0776663909591293, - 1.2664917632552923, - 1.455315135588095, - 1.641174561665321, - 1.8211548068352172, - 1.9924333230533007, - 2.1523247621261863, - 2.298323325231654, - 2.42814228083814, - 2.5397500278021026, - 2.6314021349068235, - 2.7016688515600564, - 2.7494576557901693, - 2.774030483945636, - 2.775015370375081, - 2.7524123135232355, - 2.7065932759309357, - 2.6382963181391776, - 2.548613959009069, - 2.4389759460223743, - 2.3111267072853092, - 2.167097840830979, - 2.0091760750805374, - 1.8398672057457741, - 1.6618565779097958, - 1.4779667365067457, - 1.2911129130781656, - 1.1042570508060532, - 0.9203610928756571, - 0.7423402708381677, - 0.5730171296438356, - 0.4150770143982764, - 0.2710257208422844, - 0.14314997743241933, - 0.03348138224364618, - -0.05623563656954207, - -0.12457133147063253, - -0.17043318353735076, - -0.19308313216109246, - -0.19214921472697147, - -0.1676314327097706, - -0.11990175167394039, - -0.04969823517764198, - 0.04188659490729922, - 0.15342298809485472, - 0.2831665132810097, - 0.4290855694413307, - 0.5888934251697892, - 0.760084281776182, - 0.9399727912055322, - 1.12573640555823, - 1.3144598903338003, - 1.503181299397795, - 1.6889386866190024, - 1.8688168175068167, - 2.039993144177998, - 2.1997823186005174, - 2.3456785421136734, - 2.4753950833474927, - 2.586900341320157, - 2.6784498849768115, - 2.748613963887151, - 2.796300056241633, - 2.8207700985509208, - 2.8216521253259583, - 2.798946135173904, - 2.7530240907981374, - 2.684624052902315, - 2.594838540510334, - 2.4850973012668356, - 2.357144763441058, - 2.213012525229215, - 2.054987315215707, - 1.8855749292756951, - 1.7074607126557089, - 1.5234672104535079, - 1.3365096543743178, - 1.149549987763955, - 0.9655501539715683, - 0.787425384712382, - 0.6179982251008199, - 0.45995402040673616, - 0.31579856653530547, - 0.18781859210755905, - 0.07804569536306574, - -0.011775695378967818, - -0.08021583241722562, - -0.12618219666449598, - -0.1489367273471409, - -0.14810746168512195, - -0.12369440098796299, - -0.07606951065474085, - -0.0059708540781500535, - 0.08550904703559005, - 0.1969404423661369, - 0.32657890097528075, - 0.4723928220045084, - 0.6320954742137971, - 0.8031810590791066, - 0.9829642287116647, - 1.1686224353782166, - 1.3572404447447726, - 1.5458563108433916, - 1.731508087709576, - 1.9112805410194478, - 2.0823511230566947, - 2.242034485956245, - 2.3878248312244787, - 2.5174354276586413, - 2.62883467444421, - 2.720278140693729, - 2.790336076144407, - 2.8379159591543175, - 2.8622797264018462, - 2.863055412565754, - 2.8402430164211276, - 2.7942145008393817, - 2.725707926692297, - 2.6358158131720044, - 2.525967908091493, - 2.397908639888427, - 2.2536696069275903, - 2.0955375379619854, - 1.9260182290355436, - 1.7477970255636468, - 1.5636964728129918, - 1.3766318026578406, - 1.1895649586131625, - 1.0054578841973758, - 0.8272258112950415, - 0.6576912851900001, - 0.49953965132170086, - 0.3552767057649233, - 0.22718917731047805, - 0.1173086643677413, - 0.027379595425880893, - -0.04116828164374606, - -0.08724244758380457, - -0.11010484145041335, - -0.10938350029320655, - -0.08507842525128027, - -0.03756158155319429, - 0.032428967578992274, - 0.1238007006097604, - 0.23512386738959906, - 0.36465403715118005, - 0.5103596092070153, - 0.6699538524881814, - 0.8409309686418085, - 1.0206056099504388, - 1.206155228852169, - 1.3946645911844993, - 1.5831717511510677, - 1.7687147629590223, - 1.9483783924562506, - 2.119340092098269, - 2.2789145141919684, - 2.424595860415761, - 2.554097399738996, - 2.6653875315193836, - 2.756721825041768, - 2.8266705302157673, - 2.8741411255719296, - 2.8983955479612282, - 2.8990618322350947, - 2.8761399773413756, - 2.8300019463243333, - 2.761385800228698, - 2.6713840584196165, - 2.5614264688831985, - 2.433257460230338, - 2.288908630999064, - 2.1306667101158183, - 1.9610374937979684, - 1.7827063276344548, - 1.5984957570656502, - 1.4113210141395194, - 1.224144042544867, - 1.0399267859739971, - 0.861584476485494, - 0.6919396595372611, - 0.5336776807429037, - 0.3893043363514641, - 0.26110635532808046, - 0.15111533625656048, - 0.06107570780056164, - -0.007582781993969098, - -0.05376761369501318, - -0.07674072618394133, - -0.0761301563355459, - -0.05193590511400026, - -0.004529937572856496, - 0.06534968324091317, - 0.15661043596696272, - 0.26782257063101644, - 0.3972416566411241, - 0.5428360934851637, - 0.7023191502697417, - 0.8731850288175667, - 1.0527483815868015, - 1.2381866611913532, - 1.4265846336444752, - 1.6149803533257368, - 1.8004118746182547, - 1.9799639635459854, - 2.1508140727405873, - 2.310276854685145, - 2.455846511234376, - 2.5852363115340253, - 2.6964146551182173, - 2.787637111448352, - 2.8574739306106363, - 2.9048325913123194, - 2.9289750305811206, - 2.929529283445314, - 2.906495349029659, - 2.8602451905554016, - 2.79151686924434, - 2.7014029046387673, - 2.5913330449020053, - 2.4630517188222187, - 2.318590525114831, - 2.160236192883697, - 1.9904945185237377, - 1.8120508478014432, - 1.6277277263348235, - 1.4404403863496182, - 1.253150771712439, - 1.0688208262934884, - 0.8903657823292189, - 0.7206081854556257, - 0.5622333814643968, - 0.41774716678274093, - 0.28943627055403176, - 0.17933229154036695, - 0.08917965858381076, - 0.020408119908748884, - -0.025889804874287617, - -0.048976054468066965, - -0.04847866556873179, - -0.024397638961725962, - 0.022895060478200724, - 0.09266136988293144, - 0.18380876807106686, - 0.29490750524733195, - 0.4242131509988295, - 0.5696941049926034, - 0.7290636365144314, - 0.899815947566321, - 1.079265690785775, - 1.264590318966054, - 1.452874598299965, - 1.6411565833465729, - 1.826474328668597, - 2.005912600469631, - 2.1766488515611124, - 2.3359977346059217, - 2.481453451638626, - 2.6107292719848685, - 2.7217935953588075, - 2.8129019914018745, - 2.8826247103804032, - 2.9298692311818053, - 2.953897491014061, - 2.95433752508574, - 2.931189332701969, - 2.8848248772644247, - 2.8159822201754023, - 2.725753881157728, - 2.615569608555356, - 2.4871738313371194, - 2.3425981483991674, - 2.184129289026176, - 2.0142730497938635, - 1.8357147766496873, - 1.6512770153926128, - 1.4638749984294321, - 1.276470669807805, - 1.0920259735790836, - 0.9134561421609695, - 0.7435837213707019, - 0.5850940571813087, - 0.4404929462013425, - 0.3120671177556186, - 0.20184817078775816, - 0.11158053432135977, - 0.04269395676242177, - -0.0037190420968782334, - -0.026920400777582995, - -0.026538155794058382, - -0.0025723077499215513, - 0.04460517866195385, - 0.11425624075540519, - 0.2052883575309994, - 0.31627177937552586, - 0.4454620760581861, - 0.590827647428146, - 0.750081762953446, - 0.9207186248182895, - 1.1000528858425271, - 1.285261999001781, - 1.4734307306712524, - 1.6615971355924821, - 1.846799268510695, - 2.0261218958120737, - 2.1967424704906735, - 2.3559756453920246, - 2.501315622733423, - 2.630475672023273, - 2.741424193158565, - 2.8324167559635978, - 2.902023610887609, - 2.94915223700098, - 2.9730645716947084, - 2.973388650360424, - 2.950124472486362, - 2.903644001657362, - 2.834685299458911, - 2.7443408857970994, - 2.634040509199162, - 2.5055285988173015, - 2.360836753731035, - 2.2022517034084714, - 2.03227924460883, - 1.853604723463075, - 1.669050685953785, - 1.481532364671306, - 1.294011703846999, - 1.1094506477159003, - 0.9307644288794813, - 0.7607755933387892, - 0.6021694872506127, - 0.45745190740743813, - 0.3289095833180007, - 0.21857411410987965, - 0.12818992899067713, - 0.059186776550410616, - 0.01265717676538275, - -0.010660808701334831, - -0.010395216179938271, - 0.013453953910161465, - 0.060514737060353, - 0.1300490707687469, - 0.22096443422025458, - 0.3318310779860212, - 0.46090457201967144, - 0.606153316354821, - 0.765290580643971, - 0.9358105672558843, - 1.115027929194934, - 1.3001201196213943, - 1.4881719050950402, - 1.6762213405421176, - 1.8613064808925834, - 2.0405120927173463, - 2.2110156291952348, - 2.3701317433566, - 2.5153546376035862, - 2.644397581629551, - 2.755228975516345, - 2.8461043892732363, - 2.9155940735344563, - 2.962605507555439, - 2.986400628912224, - 2.9866074731815395, - 2.9632260400367545, - 2.9166282932478653, - 2.8475522945855563, - 2.7570905641411416, - 2.6466728506271355, - 2.5180435833809884, - 2.3732343616675884, - 2.214531915140369, - 2.04444204074393, - 1.865650084794694, - 1.6809785934606216, - 1.4933427995175763, - 1.3057046473824043, - 1.121026081475718, - 0.9422223345845002, - 0.7721159528953934, - 0.6133922827508465, - 0.4685571211289757, - 0.33989719772420735, - 0.22944411184979688, - 0.13894229289908566, - 0.06982148964787166, - 0.023174222258232707, - -0.00026144742094488804, - -0.0001135555340232991, - 0.023617897685459827, - 0.07056094791477888, - 0.13997753283796205, - 0.2307751318258507, - 0.3415239956355904, - 0.47047969440676235, - 0.6156106283590079, - 0.7746300673308676, - 0.9450322138771461, - 1.124131721188362, - 1.3091060426108274, - 1.4970399448904899, - 1.6849714831397493, - 1.8699387124746962, - 2.049026399652509, - 2.219411998038165, - 2.378410160848294, - 2.523515090671302, - 2.65244005738681, - 2.763153461262975, - 2.853910872495394, - 2.9232825419046478, - 2.9701759489325217, - 2.9938530313414344, - 2.993941824894518, - 2.97044232945156, - 2.9237265089689877, - 2.854532425403943, - 2.7639525990342158, - 2.6534167787588148, - 2.5246693941016907, - 2.379742044514239, - 2.2209214598364477, - 2.0507134371995024, - 1.8718033231063385, - 1.6870136639115456, - 1.4992596925775694, - 1.3115033537079164, - 1.126706591909758, - 0.947784640156798, - 0.7775600448222993, - 0.618718152435387, - 0.4737647601609011, - 0.34498659787991987, - 0.2344152650924486, - 0.14379519137854085, - 0.07455612570074731, - 0.027790588407897734, - 0.0042366415356279025, - 0.004266249126363517, - 0.027879411133352724, - 0.07470416342065588, - 0.14400244385912825, - 0.23468173200643755, - 0.34531227880653, - 0.47414965458583, - 0.6191622597508266, - 0.7780633643269506, - 0.9483471710558602, - 1.1273283333149082, - 1.3121843046373292, - 1.4999998519559403, - 1.6878130305700827, - 1.8726618957826906, - 2.051631214537876, - 2.221898440387596, - 2.380778226735309, - 2.5257647763564375, - 2.6545713593174805, - 2.765166376073564, - 2.8558053970072588, - 2.925058673126049, - 2.971833684058714, - 2.99539236775463, - 2.9953627601638924, - 2.971744861333261, - 2.924910635406147, - 2.855598144526657, - 2.764899909159582, - 2.65424567839087, - 2.525379881931501, - 2.3803341194198704, - 2.221395120882917, - 2.0510686836388343, - 1.8720401543775402, - 1.6871320796406284, - 1.499259692577591, - 1.3113849379787923, - 1.1264697606385465, - 0.9474293937174667, - 0.7770863837758214, - 0.6181260775297734, - 0.4730542723310609, - 0.3441576982478507, - 0.23346795496710016, - 0.14272947225582233, - 0.0733719992635956, - 0.026488056526190212, - 0.002815706266252188, - 0.0027269127131662185, - 0.026221676007160258, - 0.07292803219925822, - 0.14210791934726857, - 0.2326688171958468, - 0.34318097687584537, - 0.47189996890070257, - 0.6167941938638106, - 0.775576921977519, - 0.9457423561704825, - 1.124605150006903, - 1.3093427572070158, - 1.4970399448904892, - 1.6847347685435488, - 1.8694652836561536, - 2.048316257359171, - 2.2184651433915024, - 2.3772265953434735, - 2.522094816177353, - 2.650783076146554, - 2.761259775892983, - 2.851780485986074, - 2.920915457620168, - 2.967572170610821, - 2.9910125630942446, - 2.9908646712073224, - 2.9671284951836006, - 2.9201759993532646, - 2.850745246047202, - 2.759928755916926, - 2.649156278235165, - 2.5201722428995907, - 2.3750082497353135, - 2.215951028956021, - 2.0455063780665275, - 1.8663596439435013, - 1.681333373315138, - 1.4933427995175772, - 1.3053498675278794, - 1.120316522326892, - 0.9411579972619052, - 0.7706968390797341, - 0.6116183946831143, - 0.4664284616103817, - 0.3374137701161728, - 0.22660592007402014, - 0.13574934143743214, - 0.06627378354246953, - 0.019271767111389018, - -0.004518645446726255, - -0.004725489716042863, - 0.01865123463007845, - 0.06523956382906658, - 0.1343014361251107, - 0.22474433144922268, - 0.33513850111859933, - 0.46373951583300166, - 0.6085157763721241, - 0.7671805531345977, - 0.9372280492353287, - 1.1159729184247795, - 1.3005926146094045, - 1.488171905095049, - 1.6757488455541254, - 1.8603614916627458, - 2.0390946107379087, - 2.2091256567046242, - 2.367769283339303, - 2.5125196937902694, - 2.641090158496991, - 2.7514490782873864, - 2.8418520239168585, - 2.910869246765748, - 2.9574082268355255, - 2.980730902448328, - 2.9804653099269327, - 2.9566114496907505, - 2.909541286255797, - 2.8399928821387896, - 2.7490587581770143, - 2.638168663828959, - 2.509067029178054, - 2.3637854542350802, - 2.204610669399418, - 2.034048472361529, - 1.8547842101836842, - 1.6696404297797334, - 1.481532364671297, - 1.2934219600210541, - 1.108271160995295, - 0.9289952011268054, - 0.7584166273478469, - 0.5992207867465527, - 0.45391347704668705, - 0.3247814286882069, - 0.21385624172996706, - 0.12288234631079081, - 0.053289491951963336, - 0.006170199561001177, - -0.017737468267841436, - -0.018061546933557285, - 0.005197964075616887, - 0.051669101182216196, - 0.12061380281547537, - 0.21093954909144863, - 0.3212165915123273, - 0.4497005009627908, - 0.5943596784075572, - 0.7529073944300452, - 0.9228378523300655, - 1.1014657060429005, - 1.285968409659726, - 1.4734307306712715, - 1.660890724934522, - 1.8453864483103275, - 2.0240026683003234, - 2.193916839014061, - 2.352443614412636, - 2.497077197828784, - 2.6255308598864953, - 2.735773001598137, - 2.8260591939035207, - 2.8949596883673556, - 2.9413819651754416, - 2.964587962834208, - 2.9642057178506827, - 2.9402352308284856, - 2.893048466467802, - 2.8233834874694823, - 2.7323328148548915, - 2.621326198266564, - 2.4921080679719427, - 2.3467100241657683, - 2.1874187974313406, - 2.0167401856430174, - 1.8373595360468475, - 1.652099395740551, - 1.4638749984294348, - 1.2756482894598826, - 1.090381214181908, - 0.9109890063118298, - 0.7402942129655607, - 0.5809821814147043, - 0.4355587095665059, - 0.30631052804440767, - 0.19526923709059602, - 0.10417926702728698, - 0.03447036755903404, - -0.012764940223395319, - -0.036788593542525394, - -0.03722862761420434, - -0.014085041743557958, - 0.03227020067501443, - 0.10109903825376117, - 0.19130895129167838, - 0.3014701914739235, - 0.4298383298680011, - 0.5743817676214624, - 0.7328137755005015, - 0.902628556987612, - 1.0811407662008121, - 1.2655278574138267, - 1.4528745982999833, - 1.6402190448988048, - 1.824599253253544, - 2.003099991048364, - 2.172898712575056, - 2.331310071977084, - 2.4758282727694425, - 2.6041665857582803, - 2.714293412138204, - 2.8044643230310466, - 2.8732495701835985, - 2.91955663396364, - 2.942647453059533, - 2.942150064160198, - 2.918064468051079, - 2.8707626296141315, - 2.800982611731925, - 2.709816935607501, - 2.598695351064964, - 2.4693622885533504, - 2.3238493484488654, - 2.1644432615162463, - 1.9936498258112478, - 1.8141543887612532, - 1.6287794976451857, - 1.4404403863496216, - 1.252099000402073, - 1.066717285333644, - 0.8872104750416848, - 0.7164011168230819, - 0.5569745581303518, - 0.4114365970516093, - 0.2820739643910445, - 0.17091826057162401, - 0.079713916096222, - 0.009890680850004718, - -0.037458923895708596, - -0.0615968351829517, - -0.06215108804714391, - -0.03912168161304805, - 0.007119420905247323, - 0.07583415830023998, - 0.1659300110510844, - 0.2759772310230737, - 0.4042313894637657, - 0.5486608877006722, - 0.7069789966799709, - 0.8766799200639359, - 1.0550783121504796, - 1.2393516273930003, - 1.4265846336444716, - 1.613815387124093, - 1.7980819440545799, - 1.9764690722996086, - 2.1461542263303746, - 2.3044520604696266, - 2.448856778411744, - 2.577081651141971, - 2.687095080034099, - 2.77715263638903, - 2.845824572132533, - 2.8920183678113673, - 2.9149959622927204, - 2.9143853924443235, - 2.8901866592303493, - 2.842771727711426, - 2.772878660948671, - 2.6815999803236927, - 2.5703654358390193, - 2.4409194581220746, - 2.2952936477273855, - 2.1357747355978685, - 1.9648685199675238, - 1.785260348441783, - 1.5997727684775935, - 1.4113210141395234, - 1.2228670311328895, - 1.0373727651666866, - 0.8577534503159365, - 0.6868316340551853, - 0.5272926640145937, - 0.38164233845971773, - 0.2521673883722506, - 0.14089941435248093, - 0.04958284708057299, - -0.020352563381060215, - -0.06781429558399206, - -0.09206428639317174, - -0.09273057066703627, - -0.06981314735343558, - -0.023683979489622004, - 0.04491887189366267, - 0.13490288745225634, - 0.24483831922805788, - 0.372980738645154, - 0.5172985472074989, - 0.6755050160376612, - 0.8450943489742102, - 1.023381200491257, - 1.2075430252183463, - 1.3946645911845108, - 1.581783954784929, - 1.7659391724182167, - 1.9442150121238402, - 2.1137889285488134, - 2.271975576191478, - 2.416269158921807, - 2.5443829479005533, - 2.6542853446768855, - 2.744231920727116, - 2.812792928152197, - 2.858875847674085, - 2.8817426183350587, - 2.8810212771778536, - 2.8567118253415567, - 2.809186228061648, - 2.7391825485739925, - 2.647793308434871, - 2.5364482578214353, - 2.4068918275355267, - 2.2611556183061836, - 2.1015263612506123, - 1.9305098547770618, - 1.7507914466651675, - 1.5651936845458843, - 1.3766318026578455, - 1.188067746880232, - 1.002463463095859, - 0.8227341855535224, - 0.6517024619013438, - 0.4920536399431113, - 0.3462935181178153, - 0.21670882758053217, - 0.10533116910487396, - 0.013904973544177718, - -0.056140008866012794, - -0.10371125650423688, - -0.12807070606251314, - -0.12884639222641858, - -0.10603831377104457, - -0.060018433560984144, - 0.00847518754561756, - 0.09835003037707656, - 0.20817634714769553, - 0.3362097094538828, - 0.4804185189717703, - 0.6385160469960828, - 0.8079964975374216, - 0.9861745252417997, - 1.17022758491068, - 1.3572404447447566, - 1.5442511613109755, - 1.728297791179457, - 1.9064651025611425, - 2.0759305502744376, - 2.23400878898897, - 2.378194022745907, - 2.506199522877098, - 2.615993691102714, - 2.7058320990699776, - 2.77428499905065, - 2.820259871937406, - 2.843018656943145, - 2.8421893912811242, - 2.817772076260861, - 2.7701386772881653, - 2.7000272577691353, - 2.6085303394301875, - 2.497077672618513, - 2.367413688305894, - 2.221569987391211, - 2.0618333011614514, - 1.8907094281944086, - 1.710883716439366, - 1.5251787136966668, - 1.336509654374313, - 1.1478384845207859, - 0.9621271501879114, - 0.7822908857936693, - 0.6111522391550666, - 0.451396558244745, - 0.3055296416704588, - 0.17583822075587113, - 0.06435389644320441, - -0.02717890024579875, - -0.0973304189072566, - -0.145008137751459, - -0.16947399330230933, - -0.1703560200773454, - -0.14765421668373108, - -0.10174054581823683, - -0.03335306817130264, - 0.05641569725303178, - 0.16613600283653848, - 0.2940634203430701, - 0.43816635161605955, - 0.5961580681173804, - 0.7655327740247949, - 0.9436051241512244, - 1.1275525734650722, - 1.3144598903338047, - 1.5013651314909722, - 1.6853063536733395, - 1.8633683252582274, - 2.032728501230429, - 2.190701536425809, - 2.3347816350516246, - 2.4626820686058184, - 2.5723712389744238, - 2.6621047179704798, - 2.730452758031454, - 2.7763228402155944, - 2.7989769039012953, - 2.7980429864671743, - 2.7735210893880105, - 2.725783178234759, - 2.6555673165785767, - 2.5639660263107595, - 2.452409057943374, - 2.322640842612877, - 2.176692981382743, - 2.016852205704458, - 1.8456243143201798, - 1.6656946553434504, - 1.4798857767387603, - 1.2911129130781451, - 1.1023380105740086, - 0.9165230154419833, - 0.736583162263744, - 0.5653409990198788, - 0.4054818738464962, - 0.25951158551470294, - 0.12971686551140027, - 0.018129314941934094, - -0.07350663500894487, - -0.14376123377446182, - -0.19154195940212743, - -0.2161107482531849, - -0.2170956346826305, - -0.1944966171351955, - -0.14868565814532875, - -0.08040081824129074, - 0.009265383734971586, - 0.11888320032719214, - 0.24670820346104202, - 0.39070879514171447, - 0.5485982469926775, - 0.7178707633531852, - 0.8958409991975478, - 1.079686409655361, - 1.266491763255307, - 1.4532951168918662, - 1.6371345274627602, - 1.8150947635060648, - 1.9843532801672255, - 2.14222473244266, - 2.2862033246999935, - 2.414002328597496, - 2.5235901461813715, - 2.6132223494246842, - 2.681469190924866, - 2.727238151899938, - 2.749791171888002, - 2.7487562884272267, - 2.724133503151835, - 2.6762947817920866, - 2.6059781880783506, - 2.5142762440609765, - 2.4026187004109776, - 2.2727499884236746, - 2.126701709321142, - 1.966760594713541, - 1.7954324435014275, - 1.6154026039566691, - 1.429493624202016, - 1.2406207389674404, - 1.0517458946234313, - 0.8658310375433798, - 0.6857914024666564, - 0.5144495375314768, - 0.3544907910312692, - 0.20842096189457576, - 0.07852678176543391, - -0.03316014809374401, - -0.1248953963412601, - -0.1952492122535693, - -0.24312907372146658, - -0.26779691694966096, - -0.268880776136728, - -0.24638064957110756, - -0.20066849963108618, - -0.13248238668889672, - -0.04291482943057237, - 0.06660442484339443, - 0.19433094821430746, - 0.3382331428428784, - 0.49602428050795744, - 0.6651985657040507, - 0.8430706535605876, - 1.026817999362154, - 1.2135253717922894, - 1.4002308279001996, - 1.583972424738179, - 1.7618349309988268, - 1.9309958019818376, - 2.088769692837881, - 2.2326508080886454, - 2.36035241954628, - 2.469842929410844, - 2.559377909809016, - 2.627527613491784, - 2.673199521830564, - 2.6956555745167003, - 2.6945238092414963, - 2.6698042277921648, - 2.6218687960518157, - 2.5514555779035364, - 2.4596570955502837, - 2.347903099815468, - 2.2179380221467633, - 2.071793463918403, - 1.9117561568925805, - 1.7403319001218098, - 1.5602060420295931, - 1.3742011308904378, - 1.1852324015857543, - 0.9962618006373613, - 0.8102512745699253, - 0.6301160582737775, - 0.458678700038192, - 0.29862454830733454, - 0.15245940216040518, - 0.02246999339200534, - -0.08931207658516488, - -0.18114237627908225, - -0.2515911548161377, - -0.2995658899371675, - -0.32432851769705245, - -0.3255070721446993, - -0.30310155141900896, - -0.25748391774886903, - -0.18939223135725824, - -0.09991901078111357, - 0.009505996828078983, - 0.13713836370041008, - 0.28094649214530454, - 0.4386436540901558, - 0.6077240541778346, - 0.7855023476860752, - 0.9691559900475576, - 1.155769750093793, - 1.3423816850218342, - 1.526029852031616, - 1.7037990199632977, - 1.8728666442639672, - 2.0305473802315435, - 2.1743354325348037, - 2.301944073132903, - 2.411341704372668, - 2.5007838985274606, - 2.5688409084947903, - 2.614420215792449, - 2.6367837602580124, - 2.6355595797288656, - 2.6107476761381623, - 2.562720015514789, - 2.492214661887489, - 2.4003241376047137, - 2.288478193635208, - 2.1584212615718457, - 2.0121849429339402, - 1.8520559696285293, - 1.6805401408529417, - 1.500322805175248, - 1.31422651101441, - 1.1251664933961871, - 0.9361046989864795, - 0.7500030744540356, - 0.5697768548330014, - 0.398248588556358, - 0.23810362421188191, - 0.09184776102206478, - -0.03823226907512699, - -0.15010486452393734, - -0.24202559368939092, - -0.3125647055550522, - -0.36062967771915394, - -0.38548244609404275, - -0.3867510445862946, - -0.3644354711926162, - -0.31890768799986974, - -0.2509057550891092, - -0.1615221908555835, - -0.05218674230917404, - 0.07535616292162772, - 0.21907492728750588, - 0.3766828228570295, - 0.5456740544139544, - 0.7233632773768707, - 0.9069279473191125, - 1.0934528332126487, - 1.2799759923949514, - 1.46353548220606, - 1.6412160716262283, - 1.8101952162424224, - 1.9677875714922248, - 2.1114873421840503, - 2.2390078004163985, - 2.348317348675389, - 2.437671559373481, - 2.505640685547088, - 2.5511322088528163, - 2.573408069266844, - 2.572096304765028, - 2.5471969174188294, - 2.49908187339529, - 2.4284892368611226, - 2.336511530302632, - 2.224578504826228, - 2.0944345921622984, - 1.948111393967519, - 1.7878956422861056, - 1.6162931364524211, - 1.4359892251714288, - 1.249806456998797, - 1.0606600670968596, - 0.8715120022678472, - 0.6853242093168048, - 0.5050119234139385, - 0.3333976931281202, - 0.17316686718287558, - 0.026825244936302617, - -0.10334044153821653, - -0.21529859054963976, - -0.3073047703279602, - -0.3779292297217322, - -0.4260794461944416, - -0.45101735552382277, - -0.45237099148199944, - -0.4301403519313878, - -0.38469739882473925, - -0.3167801921091394, - -0.22748125004604314, - -0.11823031951173615, - 0.00922817199883999, - 0.15286262706958043, - 0.3103863179022348, - 0.4792934494135303, - 0.6568986771548226, - 0.8403794568321581, - 1.026820557549907, - 1.2132600367778692, - 1.3967359519882907, - 1.5743330722932964, - 1.7432288534117526, - 1.9007379509128166, - 2.0443545697364147, - 2.171791982112354, - 2.281018590657869, - 2.370289967916422, - 2.438176367055224, - 2.4835852698615097, - 2.505778616441937, - 2.504384444902654, - 2.4794027574452544, - 2.431205520366756, - 2.360530797963648, - 2.268471112851871, - 2.1564562162672867, - 2.0262305400695517, - 1.8798256860444988, - 1.7195283863652562, - 1.5478444404949627, - 1.367459197267225, - 1.1811952053660746, - 0.9919677000821818, - 0.8027386283458273, - 0.6164699370899771, - 0.4360768616126278, - 0.26438195061015857, - 0.10407055293356963, - -0.04235153193184425, - -0.17259757178563967, - -0.28463596480986864, - -0.3767222791078166, - -0.4474267634014942, - -0.49565689502801746, - -0.5206746096389238, - -0.5221079408803132, - -0.49995688648875497, - -0.45459340829131967, - -0.38675556610959066, - -0.2975358780797015, - -0.1883640909527815, - -0.06098463209879422, - 0.08257090119095847, - 0.24001578124285453, - 0.4088442130980643, - 0.5863708524322414, - 0.7697731550755331, - 0.9561358902562161, - 1.1424971155678294, - 1.3258948886062552, - 1.5034139786069431, - 1.6722318414120196, - 1.8296631327136783, - 1.9732020575746931, - 2.1005618883476176, - 2.209711027772129, - 2.2989050485140594, - 2.3667142038627746, - 2.412045975727475, - 2.434162304336634, - 2.4326912279180144, - 2.4076327487946507, - 2.359358833384826, - 2.2886075461061286, - 2.196471409695376, - 2.084380175509199, - 1.9540782755277637, - 1.8075973116572701, - 1.6472240161910823, - 1.4754641887122755, - 1.295003178174362, - 1.108663533380959, - 0.9193604897422033, - 0.7300559943077242, - 0.5437119941295065, - 0.36324372462454463, - 0.19147373460791783, - 0.031087373049186295, - -0.11540956044793418, - -0.24573033356487572, - -0.3578433443656237, - -0.45000416083564365, - -0.5207830315793046, - -0.5690874338162373, - -0.5941793030807256, - -0.5956866729017462, - -0.5736095408989564, - -0.5283198687826943, - -0.46055571625801317, - -0.37140960134462464, - -0.26231127067753895, - -0.13500515151068823, - 0.008477158980438701, - 0.16584893323779698, - 0.33460437641811963, - 0.5120581443121976, - 0.6953876928653098, - 0.8816777914206217, - 1.0679664976863545, - 1.2512918693729187, - 1.4287386758300953, - 1.5974843730141375, - 1.7548436167312547, - 1.8983106121579376, - 2.0255986317603445, - 2.1346760783915526, - 2.223798524830607, - 2.291536224479898, - 2.3367966593614655, - 2.3588417698164323, - 2.3572995941850285, - 2.332170134902559, - 2.2838253584993957, - 2.2130033295050326, - 2.120796570767987, - 2.0086348337564117, - 1.8782625505618329, - 1.7317113232015593, - 1.5712678840799266, - 1.3994380328907736, - 1.218907118698172, - 1.0324976904161862, - 0.8431249835650675, - 0.653750945304538, - 0.4673375227963373, - 0.28679995156710586, - 0.11496078054136222, - -0.04549464120210589, - -0.19206051395048282, - -0.32245010527636986, - -0.43463181313507926, - -0.5268612054035702, - -0.5977085305779568, - -0.646081265769741, - -0.6712413464053123, - -0.6728168059059338, - -0.6508076417837355, - -0.6055858156417231, - -0.5378893870778156, - -0.44881087400479164, - -0.3397800229508657, - -0.21254126106349797, - -0.0691261854117018, - 0.08817847655258351, - 0.25686693009207795, - 0.43425383110340443, - 0.6175166356373468, - 0.8037401131425583, - 0.9899623214324023, - 1.173221318322308, - 1.3506018732668834, - 1.5192814423270125, - 1.6765746814133258, - 1.8199757958065303, - 1.9471980580768085, - 2.0562098711811325, - 2.1452668080021216, - 2.212939122045663, - 2.258134295437027, - 2.280114268620407, - 2.2785070800388807, - 2.253312732230427, - 2.2049031918278796, - 2.1340165234630044, - 2.041745250086406, - 1.9295191232680886, - 1.7990825752012964, - 1.6524672080047482, - 1.491959754184166, - 1.3200660135343694, - 1.1394713352204553, - 0.9529982682570417, - 0.7635620482649763, - 0.5741246225042138, - 0.38764793823661214, - 0.207047231088692, - 0.035145050084748504, - -0.12537325559705953, - -0.27200188614448856, - -0.40245410903110745, - -0.5146983221133061, - -0.6069900931693304, - -0.6778996705968093, - -0.7263345314089402, - -0.7515566109339809, - -0.7531939424953101, - -0.7312465235073582, - -0.686086315475597, - -0.6184513779006946, - -0.5294342285982783, - -0.42046461399968227, - -0.293286961155643, - -0.14993286703870837, - 0.007310940995514541, - 0.1759386683057647, - 0.3532649708846576, - 0.5364673048786093, - 0.7226304398318084, - 0.9087924336529065, - 1.0919913442523774, - 1.269311941179775, - 1.4379316805905633, - 1.5951652184899343, - 1.7385067602528332, - 1.8656695785435538, - 1.9746220764129139, - 2.0636198268372077, - 2.131233083415777, - 2.1763693283671692, - 2.1982905022286, - 2.1966246435360315, - 2.1713717549200844, - 2.1229038031060155, - 2.051958852817862, - 1.9596294270982328, - 1.8473452776089847, - 1.7168508366349662, - 1.570177706386377, - 1.409612619460044, - 1.2376613757419945, - 1.0570093244878216, - 0.8704790148030417, - 0.6809856823986691, - 0.49149127462503767, - 0.30495773883388144, - 0.12430031074151826, - -0.04765846053820517, - -0.20823322573767444, - -0.35491818495565003, - -0.48542660557659995, - -0.5977268853682964, - -0.6900745920203366, - -0.7610399738420901, - -0.8095305077585819, - -0.8348081290101972, - -0.8365008708325875, - -0.8146087305526827, - -0.7695036695886817, - -0.7019237473541142, - -0.6129614815778138, - -0.5040466186043507, - -0.37692358539810866, - -0.23362397884529446, - -0.0764345262155059, - 0.09213897793585596, - 0.26941118968699024, - 0.4525595652697705, - 0.6386688743135085, - 0.8247771748120022, - 1.0079225247603263, - 1.18518969379278, - 1.3537561381491572, - 1.5109365139187658, - 1.654225026560558, - 1.7813349488224826, - 1.8902346838389548, - 1.97917980466958, - 2.0467405649967803, - 2.091824447122036, - 2.113693391665244, - 2.1119754372448303, - 2.086670586573687, - 2.0381508064591403, - 1.9671541617070363, - 1.8747731754416612, - 1.7624375994062633, - 1.6318918659669233, - 1.4851675774148134, - 1.3245514664275524, - 1.1525493329717098, - 0.9718465263833531, - 0.7852655958479919, - 0.5957217771567631, - 0.40617701773951326, - 0.21959326502767995, - 0.038885754816713226, - -0.13312296370031051, - -0.29374754117700214, - -0.4404821776334047, - -0.5710401403755722, - -0.6833898270929767, - -0.7757868053973072, - -0.846801323520018, - -0.8953408583086422, - -0.920667344926104, - -0.922408816530923, - -0.9005652703730769, - -0.8555086677940223, - -0.7879770681307808, - -0.6990629890358457, - -0.5901961767777532, - -0.46312105824489946, - -0.3198692302479761, - -0.1627274199809831, - 0.005798578075784426, - 0.18302342007562017, - 0.36612456232516033, - 0.5521867745283896, - 0.7382481147533297, - 0.9213466410693802, - 1.0985671231846565, - 1.2670870174127167, - 1.4242209799163477, - 1.567463216227861, - 1.6945269991682514, - 1.8033807319447872, - 1.8922799876897258, - 1.9597950201579204, - 2.0048333117230404, - 2.0266568030769836, - 2.0248935329099647, - 1.9995435040064322, - 1.9509786832450615, - 1.8799371355028032, - 1.787511383974859, - 1.6751311804751756, - 1.5445409574402746, - 1.3977723172316536, - 1.2371119925969123, - 1.0650657835724726, - 0.884319039563968, - 0.6976943098263051, - 0.5081068302197894, - 0.3185185482432129, - 0.13189141139669905, - -0.048859344455646964, - -0.220911170052662, - -0.3815787159797095, - -0.5283561821891232, - -0.6589568359192053, - -0.7713490747920908, - -0.8637884663522295, - -0.9348452587641212, - -0.9834269288085118, - -1.008795411581835, - -1.0105787401762658, - -0.9887769117756768, - -0.9437618876556754, - -0.8762717270875702, - -0.7873989476584871, - -0.6785732955716997, - -0.5515391976506343, - -0.4083282506411552, - -0.2512271816727931, - -0.0827417851613785, - 0.09444259511034503, - 0.27750341551308966, - 0.46352544581430566, - 0.6495467441456149, - 0.832605368639607, - 1.0097860890674062, - 1.1782663618053617, - 1.3353608430788428, - 1.4785637384824737, - 1.6055883208994035, - 1.7144029935987564, - 1.803263329774528, - 1.8707395832430094, - 1.9157392364391066, - 1.9375242301157434, - 1.9357226030239072, - 1.9103343580086236, - 1.861731462008918, - 1.7906519799618739, - 1.6981884351226104, - 1.585770579364722, - 1.4551428451841988, - 1.3083368350017808, - 1.147639281624073, - 0.975555985146253, - 0.7947722950326144, - 0.608110760596331, - 0.4184866177558682, - 0.2288618140678294, - 0.04219829709015875, - -0.13858869725573653, - -0.3106766196513837, - -0.4713801206251842, - -0.6181934000726077, - -0.74882972517555, - -0.8612574934996824, - -0.9537322725334487, - -1.02482431038539, - -1.0734410837806412, - -1.0988445277601802, - -1.1006626753609807, - -1.07889552371194, - -1.0339150340338819, - -0.9664592655436399, - -0.8776207357739148, - -0.7688291908740297, - -0.6418290576134182, - -0.4986519326844403, - -0.3415845431631397, - -0.17313268341220034, - 0.004018302838655251, - 0.18704587201276907, - 0.37303479393024697, - 0.5590231267748247, - 0.7420489287313373, - 0.9191969696225339, - 1.087644705876549, - 1.2447067937699814, - 1.3878774389487163, - 1.5148699143467985, - 1.6236526232840596, - 1.7124811390049484, - 1.7799257153760222, - 1.8248938348821928, - 1.8466474383261993, - 1.8448145645085998, - 1.8193952163237461, - 1.7707613607597905, - 1.6996510628027013, - 1.6071568457562433, - 1.4947084615424948, - 1.3640503427056143, - 1.2172140917143512, - 1.0564864414230346, - 0.8843731919743796, - 0.7035596928799843, - 0.516868493500092, - 0.3272148297999714, - 0.1375606493829718, - -0.04913210014674279, - -0.22994818282141588, - -0.4020650492768429, - -0.5627973499955606, - -0.7096392848276546, - -0.8403041209097148, - -0.9527602557624207, - -1.0452632568293736, - -1.1163833721746248, - -1.1650280784788953, - -1.1904593107391124, - -1.1923051019483348, - -1.1705654491918078, - -1.1256123136469545, - -1.0581837544873702, - -0.9693722892028511, - -0.8606076638999149, - -0.7336343053055723, - -0.5904838100697714, - -0.4334429052266471, - -0.26501738509689726, - -0.08789259336882367, - 0.09510892642237959, - 0.281071944137932, - 0.46703451800249823, - 0.6500347062414848, - 0.8271572787182759, - 0.9955796919010045, - 1.1526166021065394, - 1.295762215020237, - 1.4227298036158524, - 1.5314877712524075, - 1.6202916912134957, - 1.6877118174044947, - 1.7326556323489226, - 1.754385076887893, - 1.752528189860117, - 1.72708497419788, - 1.6784273969269918, - 1.6072935230709442, - 1.5147758759706613, - 1.4023042075852423, - 1.2716229504956282, - 1.1247637072070678, - 0.9640132106102786, - 0.791877260883988, - 0.6110412075756366, - 0.42432760008116877, - 0.234651674401133, - 0.044975378174095346, - -0.14173934096089674, - -0.3225772470014355, - -0.49471579054869064, - -0.6554696220511463, - -0.802332941324755, - -0.9330190154724127, - -1.0454962419812297, - -1.1380201882615297, - -1.2091611023442683, - -1.2578264608773395, - -1.283278198825023, - -1.2851443491480294, - -1.2634249088994478, - -1.2184918392247623, - -1.1510831992659234, - -1.0622915064812097, - -0.9535465069459825, - -0.8265926273562045, - -0.6834614643311026, - -0.5264397448742517, - -0.3580332632761476, - -0.18092736319485472, - 0.002055411864086039, - 0.1879998317916617, - 0.3739439548417565, - 0.556925839269061, - 0.7340302549656765, - 0.9024346584285896, - 1.0594537060029396, - 1.202581603402452, - 1.3295316236287427, - 1.4382721700686854, - 1.5270588160332625, - 1.5944618154552186, - 1.6393886508850657, - 1.6611012631907558, - 1.6592276912375756, - 1.6337679379841525, - 1.5850939704824314, - 1.5139438537817342, - 1.421410111248718, - 1.3089224948678022, - 1.1782254372452208, - 1.0313505409110832, - 0.8705845387808604, - 0.698433231057759, - 0.5175819673134767, - 0.33085329696795207, - 0.14116245604556452, - -0.04852860779160886, - -0.23525794688111798, - -0.41611032519757085, - -0.5882631933192264, - -0.7490312016719809, - -0.8959085500494046, - -1.0266085055321965, - -1.1390994655855957, - -1.2316369975981716, - -1.3027913495794778, - -1.3514699981561709, - -1.3769348782715594, - -1.3788140228655852, - -1.3571074289708274, - -1.3121870577124746, - -1.2447909682124156, - -1.1560116779091678, - -1.0472789328584104, - -0.9203371597368614, - -0.7772179551445138, - -0.6202080460661704, - -0.4518132267735909, - -0.27471884090647813, - -0.09174743195215096, - 0.09418576999822034, - 0.280118823216426, - 0.46308978597440587, - 0.6401834281817972, - 0.808577206352316, - 0.9655857768480904, - 1.1087033453992294, - 1.2356431850237475, - 1.3443736991245658, - 1.4331504610285428, - 1.5005437246839848, - 1.5454609726568296, - 1.5671641458301258, - 1.5652812830840852, - 1.539812387392006, - 1.4911294258202652, - 1.4199704634324002, - 1.3274280236089941, - 1.2149318583482827, - 1.084226400269908, - 0.9373432519173028, - 0.7765691462189335, - 0.6044098833908821, - 0.42355081301731046, - 0.2368144845305255, - 0.04711613396699692, - -0.14258229099933778, - -0.32931884269442446, - -0.5101782850814411, - -0.6823380687275296, - -0.8431128440475946, - -0.9899968108246089, - -1.1207032361287754, - -1.2332005174151348, - -1.3257442220622828, - -1.396904598069991, - -1.4455891220554342, - -1.4710597289526102, - -1.4729444516924421, - -1.4512432872986976, - -1.4063281968879906, - -1.3389372395738646, - -1.2501629327867405, - -1.1414350225744199, - -1.014497935605963, - -0.8713832684740653, - -0.7143777481562065, - -0.5459871689173721, - -0.3688968743904164, - -0.1859294080563369, - 3.1263896811115318e-15, - 0.18592940805636388, - 0.3688968743905452, - 0.5459871689173977, - 0.7143777481562491, - 0.8713832684740705, - 1.0144979356059962, - 1.1414350225744792, - 1.2501629327867763, - 1.3389372395738848, - 1.4063281968880004, - 1.4512432872986993, - 1.472944451692445, - 1.4710597289526068, - 1.4455891220554196, - 1.3969045980699843, - 1.3257442220622808, - 1.2332005174151088, - 1.1207032361287301, - 0.9899968108245897, - 0.8431128440475901, - 0.6823380687275247, - 0.5101782850813755, - 0.32931884269435724, - 0.1425822909992684, - -0.04711613396702387, - -0.236814484530531, - -0.42355081301737807, - -0.6044098833909277, - -0.7765691462189952, - -0.9373432519173418, - -1.084226400269912, - -1.214931858348339, - -1.3274280236090457, - -1.4199704634324108, - -1.491129425820275, - -1.5398123873920067, - -1.5652812830840914, - -1.567164145830123, - -1.545460972656818, - -1.5005437246839701, - -1.43315046102854, - -1.3443736991245276, - -1.2356431850236893, - -1.1087033453991944, - -0.9655857768480349, - -0.8085772063523105, - -0.6401834281816926, - -0.463089785974359, - -0.2801188232163569, - -0.09418576999821443, - 0.09174743195215716, - 0.27471884090654497, - 0.4518132267736753, - 0.6202080460662127, - 0.777217955144571, - 0.9203371597368659, - 1.0472789328584535, - 1.156011677909206, - 1.244790968212444, - 1.312187057712484, - 1.357107428970829, - 1.3788140228655879, - 1.3769348782715534, - 1.3514699981561669, - 1.3027913495794627, - 1.2316369975981694, - 1.1390994655855444, - 1.0266085055321406, - 0.8959085500493529, - 0.74903120167196, - 0.5882631933192216, - 0.4161103251975052, - 0.2352579468810706, - 0.048528607791539835, - -0.1411624560456128, - -0.33085329696795757, - -0.5175819673135229, - -0.6984332310578452, - -0.870584538780921, - -1.0313505409111061, - -1.1782254372452248, - -1.3089224948678186, - -1.4214101112487447, - -1.5139438537817655, - -1.5850939704824467, - -1.6337679379841534, - -1.6592276912375759, - -1.66110126319075, - -1.6393886508850568, - -1.5944618154551984, - -1.52705881603326, - -1.4382721700686694, - -1.3295316236286852, - -1.202581603402402, - -1.0594537060028824, - -0.9024346584285662, - -0.7340302549656506, - -0.5569258392689322, - -0.3739439548417086, - -0.18799983179159188, - -0.002055411864079818, - 0.1809273631948809, - 0.35803326327621243, - 0.526439744874312, - 0.6834614643311414, - 0.8265926273562254, - 0.9535465069459987, - 1.0622915064812803, - 1.1510831992659436, - 1.218491839224785, - 1.2634249088994491, - 1.2851443491480299, - 1.2832781988250195, - 1.257826460877325, - 1.2091611023442532, - 1.1380201882615197, - 1.045496241981214, - 0.9330190154723543, - 0.8023329413247051, - 0.655469622051089, - 0.49471579054866766, - 0.32257724700138946, - 0.14173934096080876, - -0.04497537817416505, - -0.2346516744011814, - -0.42432760008119563, - -0.6110412075756626, - -0.7918772608840732, - -0.9640132106103405, - -1.1247637072071235, - -1.2716229504956487, - -1.4023042075852585, - -1.5147758759707002, - -1.6072935230709549, - -1.678427396927015, - -1.727084974197881, - -1.7525281898601173, - -1.7543850768878877, - -1.7326556323489108, - -1.6877118174044718, - -1.620291691213485, - -1.5314877712523915, - -1.4227298036157676, - -1.2957622150202017, - -1.1526166021064836, - -0.9955796919009989, - -0.82715727871827, - -0.6500347062414382, - -0.46703451800242907, - -0.2810719441378837, - -0.09510892642235208, - 0.08789259336882976, - 0.26501738509700085, - 0.43344290522668927, - 0.5904838100698283, - 0.7336343053056075, - 0.8606076638999189, - 0.9693722892028871, - 1.0581837544874086, - 1.125612313646969, - 1.1705654491918218, - 1.1923051019483355, - 1.1904593107391062, - 1.1650280784788913, - 1.116383372174602, - 1.0452632568293632, - 0.9527602557624179, - 0.8403041209096689, - 0.7096392848275878, - 0.5627973499955216, - 0.40206504927678255, - 0.2299481828214108, - 0.04913210014665362, - -0.13756064938306228, - -0.3272148298000415, - -0.5168684935001189, - -0.7035596928799897, - -0.8843731919744444, - -1.0564864414230777, - -1.2172140917143741, - -1.36405034270565, - -1.4947084615424981, - -1.6071568457562904, - -1.6996510628027426, - -1.770761360759811, - -1.8193952163237528, - -1.8448145645085998, - -1.846647438326194, - -1.8248938348821837, - -1.779925715376002, - -1.7124811390049275, - -1.6236526232840558, - -1.5148699143467534, - -1.3878774389486663, - -1.244706793769959, - -1.0876447058764884, - -0.9191969696225282, - -0.7420489287312285, - -0.559023126774777, - -0.37303479393017747, - -0.18704587201272108, - -0.004018302838649224, - 0.1731326834122644, - 0.34158454316321907, - 0.49865193268447916, - 0.6418290576134699, - 0.7688291908740338, - 0.8776207357739736, - 0.9664592655436525, - 1.033915034033897, - 1.078895523711941, - 1.1006626753609814, - 1.0988445277601773, - 1.0734410837806239, - 1.024824310385375, - 0.9537322725334203, - 0.8612574934996794, - 0.7488297251755317, - 0.6181934000725573, - 0.4713801206251267, - 0.3106766196513412, - 0.13858869725571196, - -0.04219829709018532, - -0.22886181406796252, - -0.4184866177558957, - -0.6081107605963794, - -0.7947722950326199, - -0.9755559851462969, - -1.1476392816241547, - -1.3083368350018367, - -1.4551428451842343, - -1.5857705793647403, - -1.6981884351226237, - -1.7906519799619132, - -1.861731462008941, - -1.9103343580086354, - -1.93572260302391, - -1.9375242301157374, - -1.9157392364390924, - -1.8707395832429994, - -1.8032633297745178, - -1.7144029935987528, - -1.605588320899385, - -1.4785637384824077, - -1.3353608430787873, - -1.1782663618053002, - -1.009786089067381, - -0.8326053686395803, - -0.6495467441455254, - -0.4635254458142576, - -0.27750341551302055, - -0.09444259511033912, - 0.08274178516140332, - 0.2512271816728725, - 0.4083282506412122, - 0.5515391976506528, - 0.6785732955717181, - 0.7873989476585006, - 0.8762717270876268, - 0.9437618876556906, - 0.9887769117756913, - 1.010578740176266, - 1.0087954115818318, - 0.9834269288084994, - 0.9348452587640984, - 0.8637884663522089, - 0.7713490747920775, - 0.6589568359191871, - 0.5283561821890252, - 0.3815787159796701, - 0.22091117005260122, - 0.048859344455641676, - -0.13189141139674643, - -0.31851854824330356, - -0.5081068302198595, - -0.6976943098263535, - -0.8843190395639943, - -1.0650657835724777, - -1.2371119925969731, - -1.397772317231711, - -1.5445409574403248, - -1.6751311804751934, - -1.787511383974862, - -1.879937135502824, - -1.950978683245082, - -1.9995435040064389, - -2.024893532909968, - -2.0266568030769827, - -2.0048333117230213, - -1.9597950201578949, - -1.892279987689695, - -1.8033807319447739, - -1.6945269991682474, - -1.5674632162278095, - -1.4242209799163086, - -1.2670870174126563, - -1.0985671231846115, - -0.9213466410693743, - -0.7382481147532391, - -0.5521867745282989, - -0.36612456232509155, - -0.18302342007559363, - -0.005798578075778556, - 0.16272741998108076, - 0.31986923024801517, - 0.4631210582449509, - 0.5901961767777839, - 0.6990629890358493, - 0.787977068130809, - 0.8555086677940504, - 0.900565270373086, - 0.9224088165309289, - 0.920667344926104, - 0.8953408583086195, - 0.8468013235200027, - 0.7757868053972787, - 0.6833898270929508, - 0.5710401403755687, - 0.4404821776333524, - 0.29374754117692803, - 0.13312296370026783, - -0.038885754816777716, - -0.21959326502768534, - -0.4061770177395831, - -0.595721777156833, - -0.7852655958480612, - -0.97184652638338, - -1.152549332971715, - -1.3245514664276135, - -1.4851675774148871, - -1.631891865966959, - -1.762437599406309, - -1.874773175441664, - -1.9671541617070731, - -2.0381508064591705, - -2.086670586573699, - -2.1119754372448334, - -2.1136933916652425, - -2.091824447122022, - -2.0467405649967656, - -1.9791798046695515, - -1.890234683838929, - -1.7813349488224786, - -1.6542250265605212, - -1.510936513918694, - -1.3537561381490957, - -1.1851896937927553, - -1.0079225247603203, - -0.824777174811975, - -0.6386688743134601, - -0.45255956526970137, - -0.2694111896869434, - -0.09213897793585013, - 0.07643452621552903, - 0.23362397884535124, - 0.37692358539812765, - 0.5040466186043959, - 0.612961481577817, - 0.7019237473541245, - 0.7695036695887094, - 0.8146087305526972, - 0.8365008708325906, - 0.834808129010197, - 0.8095305077585756, - 0.7610399738420485, - 0.6900745920203157, - 0.59772688536826, - 0.4854266055765963, - 0.3549181849556293, - 0.2082332257376181, - 0.04765846053814309, - -0.12430031074156359, - -0.3049577388339072, - -0.4914912746250646, - -0.6809856823988032, - -0.87047901480309, - -1.0570093244878898, - -1.2376613757419999, - -1.409612619460085, - -1.5701777063864528, - -1.716850836635016, - -1.8473452776090156, - -1.9596294270982484, - -2.0519588528178723, - -2.122903803106044, - -2.1713717549200906, - -2.1966246435360346, - -2.1982905022286, - -2.1763693283671577, - -2.1312330834157516, - -2.063619826837177, - -1.9746220764128881, - -1.865669578543537, - -1.7385067602528126, - -1.595165218489861, - -1.4379316805905031, - -1.2693119411797102, - -1.0919913442523512, - -0.9087924336528581, - -0.7226304398317176, - -0.5364673048785825, - -0.35326497088463127, - -0.17593866830575905, - -0.007310940995491351, - 0.14993286703878167, - 0.29328696115569475, - 0.4204646139997257, - 0.529434228598294, - 0.6184513779006974, - 0.6860863154756303, - 0.731246523507367, - 0.7531939424953158, - 0.7515566109339806, - 0.7263345314089396, - 0.6778996705967943, - 0.6069900931693095, - 0.5146983221132903, - 0.40245410903109136, - 0.27200188614448473, - 0.12537325559696727, - -0.03514505008479141, - -0.20704723108875672, - -0.38764793823665916, - -0.5741246225042194, - -0.7635620482650465, - -0.9529982682571322, - -1.1394713352205024, - -1.320066013534435, - -1.491959754184171, - -1.6524672080048386, - -1.799082575201317, - -1.9295191232681197, - -2.041745250086409, - -2.134016523463006, - -2.2049031918279, - -2.253312732230444, - -2.278507080038884, - -2.2801142686204035, - -2.258134295437025, - -2.2129391220456407, - -2.145266808002093, - -2.0562098711810943, - -1.947198058076792, - -1.8199757958065257, - -1.6765746814132687, - -1.5192814423269703, - -1.350601873266859, - -1.173221318322261, - -0.989962321432396, - -0.8037401131424673, - -0.6175166356372562, - -0.43425383110333715, - -0.2568669300920523, - -0.08817847655257802, - 0.06912618541175726, - 0.2125412610635332, - 0.33978002295091125, - 0.4488108740048179, - 0.5378893870778185, - 0.6055858156417485, - 0.6508076417837548, - 0.6728168059059338, - 0.6712413464053121, - 0.6460812657697417, - 0.5977085305779228, - 0.5268612054035361, - 0.43463181313504784, - 0.32245010527633255, - 0.19206051395047063, - 0.045494641202040026, - -0.11496078054143243, - -0.28679995156714144, - -0.4673375227963734, - -0.6537509453045542, - -0.8431249835650838, - -1.0324976904162662, - -1.21890711869825, - -1.3994380328907892, - -1.5712678840799224, - -1.7317113232015715, - -1.878262550561892, - -2.008634833756449, - -2.1207965707680145, - -2.213003329505044, - -2.2838253584994055, - -2.3321701349025763, - -2.3572995941850317, - -2.3588417698164292, - -2.3367966593614637, - -2.2915362244798843, - -2.223798524830559, - -2.1346760783915277, - -2.0255986317603063, - -1.8983106121579416, - -1.7548436167312231, - -1.5974843730140587, - -1.4287386758300302, - -1.2512918693728614, - -1.0679664976863277, - -0.8816777914205733, - -0.6953876928652198, - -0.5120581443121502, - -0.33460437641806484, - -0.16584893323779176, - -0.008477158980400315, - 0.13500515151077064, - 0.2623112706775894, - 0.37140960134465184, - 0.4605557162580157, - 0.5283198687826949, - 0.5736095408989732, - 0.5956866729017503, - 0.594179303080721, - 0.5690874338162364, - 0.5207830315792924, - 0.45000416083560046, - 0.3578433443656026, - 0.24573033356484544, - 0.11540956044791453, - -0.03108737304920066, - -0.19147373460800693, - -0.36324372462461907, - -0.5437119941295848, - -0.73005599430774, - -0.9193604897422198, - -1.1086635333810602, - -1.2950031781744193, - -1.4754641887123305, - -1.6472240161911156, - -1.8075973116572994, - -1.954078275527824, - -2.0843801755092364, - -2.196471409695396, - -2.2886075461061375, - -2.3593588333848357, - -2.407632748794671, - -2.432691227918018, - -2.43416230433663, - -2.4120459757274766, - -2.3667142038627764, - -2.2989050485140377, - -2.209711027772092, - -2.1005618883475803, - -1.9732020575746825, - -1.8296631327136645, - -1.672231841411958, - -1.5034139786068983, - -1.3258948886061979, - -1.1424971155678234, - -0.95613589025621, - -0.7697731550754539, - -0.5863708524321636, - -0.4088442130980096, - -0.24001578124279255, - -0.08257090119097076, - 0.0609846320988513, - 0.18836409095282675, - 0.2975358780797386, - 0.3867555661096115, - 0.4545934082913231, - 0.4999568864887677, - 0.5221079408803158, - 0.5206746096389218, - 0.49565689502800825, - 0.44742676340149534, - 0.3767222791077762, - 0.2846359648098322, - 0.17259757178558766, - 0.04235153193180158, - -0.10407055293358233, - -0.26438195061023945, - -0.43607686161269277, - -0.6164699370900341, - -0.8027386283458859, - -0.9919677000821767, - -1.1811952053661545, - -1.3674591972673034, - -1.5478444404949978, - -1.7195283863652904, - -1.8798256860445113, - -2.0262305400696246, - -2.1564562162673386, - -2.2684711128519037, - -2.3605307979636736, - -2.4312055203667553, - -2.4794027574452637, - -2.5043844449026604, - -2.505778616441933, - -2.483585269861505, - -2.438176367055218, - -2.3702899679163956, - -2.2810185906578386, - -2.171791982112316, - -2.0443545697363943, - -1.9007379509128124, - -1.743228853411681, - -1.574333072293222, - -1.3967359519882334, - -1.2132600367778212, - -1.0268205575498794, - -0.8403794568320788, - -0.6568986771547551, - -0.4792934494134653, - -0.3103863179021922, - -0.1528626270695746, - -0.00922817199881372, - 0.11823031951176671, - 0.22748125004607, - 0.31678019210916, - 0.3846973988247374, - 0.4301403519313956, - 0.4523709914820049, - 0.4510173555238182, - 0.4260794461944324, - 0.37792922972172793, - 0.3073047703279566, - 0.2152985905496137, - 0.10334044153817919, - -0.026825244936353743, - -0.1731668671828802, - -0.33339769312814377, - -0.5050119234140236, - -0.6853242093168417, - -0.8715120022678952, - -1.0606600670968653, - -1.2498064569988128, - -1.4359892251715278, - -1.6162931364524766, - -1.7878956422861672, - -1.948111393967541, - -2.094434592162325, - -2.224578504826294, - -2.3365115303026633, - -2.428489236861149, - -2.499081873395302, - -2.5471969174188303, - -2.5720963047650356, - -2.57340806926684, - -2.551132208852809, - -2.5056406855470845, - -2.4376715593734626, - -2.3483173486753355, - -2.2390078004163603, - -2.1114873421840077, - -1.9677875714921946, - -1.8101952162423882, - -1.6412160716261546, - -1.4635354822060027, - -1.2799759923948928, - -1.0934528332126323, - -0.9069279473190752, - -0.7233632773767622, - -0.5456740544139091, - -0.3766828228569779, - -0.21907492728750927, - -0.07535616292160166, - 0.052186742309246026, - 0.16152219085562067, - 0.2509057550891335, - 0.31890768799987956, - 0.36443547119262404, - 0.38675104458630016, - 0.38548244609404103, - 0.36062967771914206, - 0.31256470555505056, - 0.24202559368936924, - 0.15010486452387795, - 0.03823226907510234, - -0.09184776102209938, - -0.23810362421188663, - -0.39824858855635387, - -0.5697768548330767, - -0.7500030744540928, - -0.9361046989865488, - -1.125166493396214, - -1.3142265110144262, - -1.5003228051753261, - -1.680540140852977, - -1.8520559696285814, - -2.0121849429339704, - -2.158421261571841, - -2.288478193635259, - -2.4003241376047573, - -2.4922146618875045, - -2.562720015514803, - -2.6107476761381605, - -2.635559579728871, - -2.636783760258009, - -2.614420215792439, - -2.5688409084947725, - -2.5007838985274526, - -2.4113417043726244, - -2.3019440731328524, - -2.1743354325347757, - -2.0305473802315137, - -1.872866644263952, - -1.7037990199632027, - -1.526029852031539, - -1.3423816850217545, - -1.1557697500937762, - -0.9691559900475619, - -0.7855023476860187, - -0.6077240541777598, - -0.43864365409010475, - -0.28094649214526457, - -0.1371383637003901, - -0.009505996828029523, - 0.09991901078114646, - 0.18939223135728275, - 0.25748391774888396, - 0.30310155141901174, - 0.32550707214470226, - 0.32432851769704657, - 0.2995658899371594, - 0.2515911548161226, - 0.18114237627908888, - 0.08931207658511975, - -0.022469993392048762, - -0.15245940216045614, - -0.2986245483073735, - -0.458678700038206, - -0.6301160582738627, - -0.8102512745699724, - -0.9962618006374091, - -1.185232401585803, - -1.3742011308904325, - -1.5602060420296815, - -1.740331900121875, - -1.911756156892651, - -2.0717934639184343, - -2.217938022146759, - -2.3479030998155253, - -2.4596570955503214, - -2.551455577903562, - -2.6218687960518343, - -2.6698042277921665, - -2.6945238092415007, - -2.695655574516696, - -2.673199521830556, - -2.6275276134917744, - -2.559377909809009, - -2.469842929410833, - -2.3603524195462295, - -2.2326508080885867, - -2.088769692837868, - -1.9309958019818418, - -1.7618349309988106, - -1.5839724247381013, - -1.400230827900141, - -1.21352537179223, - -1.0268179993621165, - -0.8430706535605514, - -0.6651985657039754, - -0.49602428050790603, - -0.3382331428428486, - -0.19433094821429395, - -0.06660442484337187, - 0.04291482943062695, - 0.13248238668892104, - 0.20066849963111177, - 0.24638064957110728, - 0.26888077613672845, - 0.2677969169496564, - 0.24312907372145337, - 0.1952492122535505, - 0.12489539634125514, - 0.03316014809372199, - -0.07852678176549228, - -0.20842096189461004, - -0.35449079103131753, - -0.5144495375314815, - -0.6857914024667019, - -0.8658310375434886, - -1.0517458946235112, - -1.24062073896751, - -1.4294936242020428, - -1.6154026039566742, - -1.795432443501513, - -1.966760594713593, - -2.1267017093211984, - -2.272749988423679, - -2.4026187004110016, - -2.5142762440610316, - -2.6059781880783666, - -2.676294781792103, - -2.72413350315184, - -2.7487562884272254, - -2.749791171887997, - -2.727238151899927, - -2.6814691909248407, - -2.613222349424679, - -2.5235901461813603, - -2.414002328597432, - -2.28620332469995, - -2.1422247324426125, - -1.9843532801671926, - -1.8150947635060484, - -1.6371345274626832, - -1.4532951168918076, - -1.2664917632552695, - -1.079686409655344, - -0.8958409991975117, - -0.7178707633530907, - -0.5485982469926262, - -0.39070879514166634, - -0.2467082034610139, - -0.11888320032719443, - -0.00926538373494673, - 0.08040081824132034, - 0.14868565814534612, - 0.19449661713520072, - 0.21709563468263093, - 0.21611074825318033, - 0.19154195940211977, - 0.14376123377444291, - 0.07350663500893363, - -0.0181293149419358, - -0.12971686551145317, - -0.2595115855147614, - -0.40548187384654444, - -0.5653409990199395, - -0.7365831622637691, - -0.916523015442062, - -1.1023380105740777, - -1.2911129130782153, - -1.4798857767388083, - -1.6656946553434562, - -1.8456243143202542, - -2.016852205704501, - -2.176692981382783, - -2.3226408426129126, - -2.4524090579433704, - -2.5639660263108075, - -2.6555673165786073, - -2.7257831782347806, - -2.7735210893880193, - -2.798042986467176, - -2.7989769039012886, - -2.7763228402155815, - -2.7304527580314364, - -2.6621047179704553, - -2.5723712389744255, - -2.462682068605774, - -2.3347816350515735, - -2.1907015364257783, - -2.0327285012303964, - -1.863368325258212, - -1.6853063536732407, - -1.5013651314908931, - -1.3144598903337457, - -1.1275525734650138, - -0.9436051241512085, - -0.7655327740247204, - -0.5961580681173098, - -0.43816635161601236, - -0.2940634203430411, - -0.1661360028365284, - -0.05641569725297915, - 0.03335306817132966, - 0.1017405458182544, - 0.14765421668373474, - 0.17035602007734602, - 0.1694739933023022, - 0.14500813775144444, - 0.09733041890723775, - 0.027178900245779347, - -0.06435389644321861, - -0.17583822075592423, - -0.30552964167050056, - -0.4513965582447933, - -0.6111522391551089, - -0.7822908857936741, - -0.9621271501879486, - -1.1478384845208343, - -1.3365096543743613, - -1.525178713696715, - -1.7108837164393509, - -1.8907094281944428, - -2.061833301161513, - -2.221569987391267, - -2.3674136883059362, - -2.497077672618531, - -2.6085303394302124, - -2.7000272577691744, - -2.770138677288184, - -2.8177720762608747, - -2.842189391281125, - -2.8430186569431406, - -2.8202598719373864, - -2.774284999050638, - -2.7058320990699576, - -2.615993691102711, - -2.506199522877086, - -2.3781940227458334, - -2.2340087889889224, - -2.075930550274377, - -1.9064651025611172, - -1.7282977911794206, - -1.544251161310875, - -1.3572404447447193, - -1.1702275849106216, - -0.9861745252417629, - -0.807996497537407, - -0.6385160469959934, - -0.48041851897170496, - -0.33620970945385587, - -0.2081763471476833, - -0.09835003037706952, - -0.008475187545574053, - 0.0600184335610018, - 0.1060383137710561, - 0.12884639222642152, - 0.1280707060625088, - 0.10371125650422368, - 0.05614000886599385, - -0.013904973544194288, - -0.10533116910488095, - -0.21670882758055765, - -0.34629351811789755, - -0.49205363994314977, - -0.651702461901396, - -0.8227341855535174, - -1.0024634630958962, - -1.1880677468803433, - -1.3766318026579154, - -1.5651936845459429, - -1.7507914466651944, - -1.9305098547771065, - -2.101526361250692, - -2.2611556183062236, - -2.4068918275355697, - -2.5364482578214385, - -2.647793308434896, - -2.7391825485740418, - -2.809186228061672, - -2.8567118253415664, - -2.8810212771778536, - -2.8817426183350596, - -2.8588758476740708, - -2.812792928152179, - -2.7442319207270867, - -2.654285344676882, - -2.5443829479005435, - -2.4162691589217475, - -2.271975576191447, - -2.1137889285487717, - -1.9442150121238146, - -1.765939172418221, - -1.5817839547848387, - -1.3946645911844198, - -1.2075430252182668, - -1.0233812004912197, - -0.845094348974215, - -0.6755050160375823, - -0.5172985472074425, - -0.3729807386451106, - -0.24483831922801969, - -0.13490288745224785, - -0.044918871893629114, - 0.023683979489647317, - 0.06981314735344203, - 0.0927305706670406, - 0.09206428639317028, - 0.06781429558397079, - 0.020352563381036026, - -0.049582847080606715, - -0.14089941435248915, - -0.25216738837224695, - -0.38164233845976236, - -0.5272926640146585, - -0.6868316340552374, - -0.8577534503159712, - -1.0373727651667028, - -1.2228670311329697, - -1.4113210141395824, - -1.5997727684776524, - -1.7852603484418093, - -1.9648685199675295, - -2.1357747355979377, - -2.2952936477274513, - -2.440919458122117, - -2.570365435839065, - -2.6815999803236847, - -2.7728786609487033, - -2.842771727711449, - -2.8901866592303627, - -2.914385392444326, - -2.9149959622927195, - -2.8920183678113487, - -2.845824572132518, - -2.777152636389011, - -2.687095080034073, - -2.577081651141974, - -2.4488567784116766, - -2.304452060469571, - -2.146154226330304, - -1.9764690722995741, - -1.7980819440545845, - -1.6138153871240024, - -1.426584633644402, - -1.2393516273929417, - -1.0550783121504224, - -0.8766799200639406, - -0.7069789966799382, - -0.548660887700607, - -0.4042313894637386, - -0.27597723102304794, - -0.1659300110510762, - -0.07583415830023474, - -0.007119420905221843, - 0.03912168161305958, - 0.062151088047148445, - 0.061596835182952864, - 0.0374589238957036, - -0.009890680850035818, - -0.07971391609624777, - -0.17091826057165532, - -0.2820739643910679, - -0.4114365970516226, - -0.5569745581304156, - -0.7164011168231343, - -0.8872104750417202, - -1.0667172853336595, - -1.2520990004021106, - -1.4404403863497235, - -1.6287794976452443, - -1.8141543887613105, - -1.9936498258112834, - -2.1644432615162783, - -2.32384934844894, - -2.4693622885534015, - -2.5986953510650013, - -2.7098169356075115, - -2.800982611731939, - -2.8707626296141604, - -2.9180644680510897, - -2.942150064160201, - -2.9426474530595326, - -2.9195566339636296, - -2.8732495701835647, - -2.804464323031017, - -2.714293412138172, - -2.6041665857582643, - -2.475828272769437, - -2.3313100719770103, - -2.1728987125750043, - -2.003099991048299, - -1.8245992532535382, - -1.6402190448987781, - -1.4528745982998923, - -1.2655278574137894, - -1.0811407662007648, - -0.9026285569875868, - -0.732813775500488, - -0.5743817676213798, - -0.42983832986795756, - -0.30147019147387893, - -0.1913089512916638, - -0.10109903825374568, - -0.03227020067498258, - 0.014085041743568408, - 0.03722862761420867, - 0.036788593542523895, - 0.012764940223390198, - -0.03447036755905715, - -0.10417926702731288, - -0.19526923709061694, - -0.3063105280444166, - -0.4355587095665182, - -0.5809821814147698, - -0.7402942129656129, - -0.9109890063118845, - -1.0903812141819444, - -1.275648289459899, - -1.463874998429494, - -1.6520993957406098, - -1.8373595360469046, - -2.016740185643034, - -2.1874187974313544, - -2.3467100241658496, - -2.4921080679719876, - -2.621326198266601, - -2.732332814854901, - -2.8233834874694814, - -2.8930484664678247, - -2.9402352308285016, - -2.964205717850686, - -2.964587962834206, - -2.941381965175437, - -2.894959688367329, - -2.8260591939034923, - -2.7357730015981, - -2.6255308598864637, - -2.4970771978287805, - -2.3524436144125698, - -2.193916839014019, - -2.024002668300279, - -1.8453864483102806, - -1.6608907249345266, - -1.4734307306711805, - -1.2859684096596566, - -1.1014657060428328, - -0.9228378523300205, - -0.7529073944300304, - -0.5943596784074844, - -0.4497005009627557, - -0.3212165915122892, - -0.21093954909141627, - -0.12061380281547796, - -0.05166910118218947, - -0.005197964075598527, - 0.01806154693355895, - 0.01773746826784106, - -0.006170199561000886, - -0.05328949195199677, - -0.12288234631082441, - -0.21385624172999834, - -0.3247814286882441, - -0.4539134770466997, - -0.5992207867466183, - -0.7584166273479171, - -0.9289952011268408, - -1.108271160995331, - -1.2934219600210706, - -1.481532364671399, - -1.6696404297797922, - -1.8547842101837415, - -2.034048472361544, - -2.204610669399414, - -2.363785454235127, - -2.509067029178113, - -2.6381686638289965, - -2.7490587581770414, - -2.839992882138801, - -2.909541286255807, - -2.9566114496907634, - -2.9804653099269354, - -2.9807309024483253, - -2.9574082268355255, - -2.910869246765735, - -2.84185202391682, - -2.7514490782873615, - -2.6410901584969597, - -2.5125196937902805, - -2.3677692833392716, - -2.2091256567045265, - -2.039094610737844, - -1.8603614916626883, - -1.6757488455540988, - -1.4881719050950006, - -1.300592614609314, - -1.115972918424732, - -0.9372280492352738, - -0.7671805531345925, - -0.6085157763720855, - -0.46373951583291884, - -0.3351385011185486, - -0.22474433144919556, - -0.1343014361251082, - -0.06523956382906596, - -0.018651234630061422, - 0.004725489716047193, - 0.004518645446721967, - -0.01927176711139393, - -0.06627378354248181, - -0.1357493414374748, - -0.2266059200740409, - -0.33741377011620266, - -0.4664284616104015, - -0.6116183946831286, - -0.770696839079823, - -0.9411579972619796, - -1.1203165223269287, - -1.3053498675278954, - -1.493342799517594, - -1.6813333733152391, - -1.8663596439435584, - -2.045506378066583, - -2.215951028956054, - -2.3750082497353424, - -2.520172242899651, - -2.6491562782352025, - -2.7599287559169454, - -2.850745246047211, - -2.9201759993532748, - -2.96712849518362, - -2.9908646712073255, - -2.99101256309424, - -2.967572170610823, - -2.9209154576201546, - -2.851780485986036, - -2.761259775892946, - -2.6507830761465154, - -2.522094816177342, - -2.3772265953434415, - -2.218465143391423, - -2.0483162573591267, - -1.8694652836560963, - -1.6847347685435428, - -1.4970399448904832, - -1.3093427572069465, - -1.124605150006825, - -0.9457423561704177, - -0.7755769219774944, - -0.616794193863823, - -0.4718999689006525, - -0.3431809768758072, - -0.23266881719580948, - -0.14210791934726608, - -0.0729280321992524, - -0.026221676007145894, - -0.002726912713164595, - -0.0028157062662539367, - -0.02648805652619929, - -0.07337199926359472, - -0.14272947225586236, - -0.2334679549671364, - -0.34415769824790254, - -0.4730542723310872, - -0.6181260775297701, - -0.7770863837759019, - -0.9474293937175315, - -1.1264697606386034, - -1.311384937978851, - -1.4992596925775863, - -1.6871320796407079, - -1.8720401543776184, - -2.0510686836388694, - -2.221395120882951, - -2.3803341194198833, - -2.525379881931574, - -2.654245678390922, - -2.764899909159614, - -2.8555981445266823, - -2.924910635406146, - -2.9717448613332706, - -2.995362760163898, - -2.9953923677546257, - -2.971833684058709, - -2.9250586731260433, - -2.855805397007223, - -2.765166376073534, - -2.6545713593174423, - -2.525764776356418, - -2.3807782267353055, - -2.2218984403875246, - -2.0516312145378017, - -1.8726618957826333, - -1.6878130305700139, - -1.4999998519559559, - -1.31218430463726, - -1.12732833331483, - -0.9483471710557954, - -0.7780633643269266, - -0.619162259750821, - -0.47414965458577274, - -0.3453122788064855, - -0.23468173200641046, - -0.14400244385911665, - -0.07470416342065796, - -0.027879411133336987, - -0.004266249126356481, - -0.004236641535632357, - -0.027790588407905437, - -0.074556125700761, - -0.14379519137854455, - -0.23441526509248597, - -0.3449865978799571, - -0.4737647601609364, - -0.6187181524354088, - -0.7775600448223232, - -0.9477846401568728, - -1.1267065919098052, - -1.311503353707943, - -1.4992596925775965, - -1.6870136639115514, - -1.8718033231064164, - -2.0507134371995672, - -2.220921459836509, - -2.379742044514261, - -2.5246693941017107, - -2.653416778758866, - -2.763952599034253, - -2.854532425403965, - -2.9237265089689966, - -2.9704423294515596, - -2.9939418248945238, - -2.9938530313414295, - -2.970175948932517, - -2.9232825419046473, - -2.8539108724953817, - -2.7631534612629203, - -2.6524400573867655, - -2.523515090671268, - -2.378410160848255, - -2.2194119980381313, - -2.049026399652425, - -1.8699387124746285, - -1.684971483139701, - -1.4970399448904625, - -1.3091060426107899, - -1.1241317211882942, - -0.9450322138771006, - -0.7746300673308251, - -0.6156106283589949, - -0.4704796944067279, - -0.34152399563553115, - -0.23077513182581327, - -0.13997753283793754, - -0.07056094791476268, - -0.02361789768545204, - 0.00011355553402775387, - 0.00026144742094189044, - -0.02317422225824578, - -0.06982148964788007, - -0.13894229289910762, - -0.2294441118498508, - -0.3398971977242382, - -0.4685571211290101, - -0.6133922827508684, - -0.7721159528954087, - -0.942222334584585, - -1.1210260814757853, - -1.3057046473824734, - -1.4933427995176034, - -1.6809785934606594, - -1.865650084794782, - -2.044442040743995, - -2.214531915140412, - -2.3732343616676186, - -2.518043583381007, - -2.6466728506271933, - -2.7570905641411914, - -2.847552294585568, - -2.9166282932478715, - -2.963226040036756, - -2.986607473181544, - -2.98640062891222, - -2.9626055075554305, - -2.915594073534444, - -2.846104389273225, - -2.7552289755163075, - -2.6443975816295064, - -2.5153546376035667, - -2.37013174335657, - -2.211015629195211, - -2.040512092717261, - -1.8613064808925162, - -1.6762213405420692, - -1.4881719050950235, - -1.3001201196213885, - -1.1150279291948872, - -0.9358105672557996, - -0.7652905806439286, - -0.60615331635479, - -0.46090457201965174, - -0.3318310779859913, - -0.22096443422021597, - -0.1300490707687223, - -0.06051473706034455, - -0.013453953910159008, - 0.010395216179941436, - 0.010660808701327837, - -0.012657176765390576, - -0.05918677655041915, - -0.1281899289906705, - -0.2185741141099244, - -0.32890958331805764, - -0.45745190740748903, - -0.6021694872506346, - -0.7607755933388034, - -0.9307644288795665, - -1.1094506477159678, - -1.294011703847047, - -1.4815323646713439, - -1.669050685953791, - -1.853604723463163, - -2.032279244608915, - -2.2022517034085043, - -2.360836753731057, - -2.5055285988173055, - -2.6340405091992194, - -2.7443408857971368, - -2.834685299458936, - -2.9036440016573772, - -2.9501244724863662, - -2.9733886503604285, - -2.973064571694704, - -2.9491522370009724, - -2.9020236108875954, - -2.832416755963586, - -2.741424193158515, - -2.630475672023221, - -2.5013156227333573, - -2.355975645392003, - -2.196742470490669, - -2.026121895812028, - -1.8467992685105963, - -1.6615971355924128, - -1.473430730671204, - -1.285261999001754, - -1.1000528858425012, - -0.9207186248182144, - -0.7500817629533847, - -0.5908276474281239, - -0.44546207605816546, - -0.31627177937550965, - -0.20528835753094543, - -0.11425624075537534, - -0.04460517866193761, - 0.0025723077499226338, - 0.0265381557940588, - 0.02692040077757875, - 0.0037190420968651605, - -0.04269395676243014, - -0.1115805343213753, - -0.20184817078778522, - -0.312067117755663, - -0.4404929462013768, - -0.5850940571813397, - -0.7435837213707258, - -0.9134561421610152, - -1.092025973579171, - -1.276470669807885, - -1.4638749984294595, - -1.65127701539264, - -1.8357147766496928, - -2.014273049793938, - -2.1841292890262376, - -2.342598148399224, - -2.487173831337139, - -2.6155696085553792, - -2.725753881157777, - -2.815982220175423, - -2.8848248772644407, - -2.9311893327019742, - -2.954337525085739, - -2.953897491014055, - -2.9298692311817933, - -2.882624710380382, - -2.8129019914018736, - -2.7217935953587973, - -2.6107292719848108, - -2.4814534516385756, - -2.335997734605883, - -2.1766488515610884, - -2.005912600469615, - -1.826474328668509, - -1.6411565833465036, - -1.4528745982999376, - -1.264590318966048, - -1.079265690785739, - -0.8998159475662164, - -0.7290636365143701, - -0.5696941049925461, - -0.4242131509987941, - -0.29490750524730935, - -0.18380876807101681, - -0.09266136988290172, - -0.022895060478185653, - 0.024397638961733706, - 0.048478665568733495, - 0.048976054468062635, - 0.02588980487427596, - -0.020408119908763914, - -0.08917965858381846, - -0.17933229154036912, - -0.28943627055406346, - -0.4177471667828074, - -0.5622333814644449, - -0.7206081854556677, - -0.8903657823292048, - -1.0688208262935357, - -1.2531507717125185, - -1.4404403863496882, - -1.6277277263348506, - -1.8120508478014492, - -1.9904945185237921, - -2.1602361928837572, - -2.318590525114871, - -2.463051718822242, - -2.5913330449020022, - -2.701402904638803, - -2.7915168692443775, - -2.860245190555423, - -2.9064953490296643, - -2.929529283445317, - -2.9289750305811144, - -2.904832591312306, - -2.857473930610623, - -2.7876371114483334, - -2.696414655118211, - -2.585236311533981, - -2.4558465112343253, - -2.31027685468511, - -2.1508140727405594, - -1.9799639635459698, - -1.8004118746181659, - -1.6149803533256568, - -1.4265846336444055, - -1.2381866611912946, - -1.0527483815867855, - -0.8731850288174917, - -0.7023191502696711, - -0.5428360934851247, - -0.39724165664109545, - -0.2678225706310059, - -0.15661043596693197, - -0.06534968324088465, - 0.004529937572872816, - 0.05193590511400542, - 0.07613015633554752, - 0.07674072618393567, - 0.05376761369499611, - 0.007582781993948864, - -0.061075707800581205, - -0.15111533625657828, - -0.26110635532812587, - -0.3893043363515216, - -0.533677680742956, - -0.6919396595372896, - -0.861584476485509, - -1.0399267859740755, - -1.2241440425449257, - -1.4113210141395678, - -1.5984957570656877, - -1.7827063276344708, - -1.9610374937980426, - -2.1306667101158983, - -2.2889086309991296, - -2.4332574602303656, - -2.561426468883224, - -2.671384058419636, - -2.7613858002287266, - -2.8300019463243524, - -2.876139977341385, - -2.8990618322350956, - -2.898395547961224, - -2.8741411255719123, - -2.826670530215752, - -2.7567218250417573, - -2.665387531519372, - -2.5540973997389917, - -2.4245958604156987, - -2.2789145141919125, - -2.1193400920982213, - -1.9483783924562255, - -1.7687147629589859, - -1.5831717511509826, - -1.394664591184445, - -1.2061552288521313, - -1.0206056099504024, - -0.8409309686417938, - -0.6699538524881197, - -0.5103596092069674, - -0.3646540371511679, - -0.23512386738958763, - -0.12380070060975273, - -0.032428967578954054, - 0.037561581553212695, - 0.08507842525129264, - 0.10938350029320901, - 0.11010484145040957, - 0.08724244758379117, - 0.041168281643724575, - -0.027379595425899586, - -0.11730866436775496, - -0.2271891773105001, - -0.35527670576500514, - -0.4995396513217436, - -0.6576912851900426, - -0.8272258112950469, - -1.0054578841974182, - -1.1895649586132795, - -1.376631802657942, - -1.5636964728130187, - -1.7477970255636421, - -1.9260182290356274, - -2.095537537962112, - -2.253669606927639, - -2.397908639888453, - -2.5259679080915456, - -2.6358158131720284, - -2.7257079266923414, - -2.794214500839388, - -2.840243016421142, - -2.863055412565758, - -2.862279726401844, - -2.8379159591543073, - -2.7903360761443974, - -2.7202781406936936, - -2.628834674444205, - -2.517435427658657, - -2.387824831224427, - -2.2420344859561414, - -2.0823511230566534, - -1.9112805410194365, - -1.7315080877095093, - -1.5458563108432748, - -1.3572404447446815, - -1.1686224353782104, - -0.9829642287116025, - -0.803181059079076, - -0.6320954742137271, - -0.4723928220044594, - -0.32657890097526965, - -0.19694044236609182, - -0.08550904703559167, - 0.005970854078165083, - 0.076069510654758, - 0.12369440098798339, - 0.14810746168512418, - 0.14893672734714505, - 0.12618219666449548, - 0.08021583241719306, - 0.011775695378941214, - -0.0780456953630595, - -0.18781859210759133, - -0.3157985665353419, - -0.459954020406822, - -0.617998225100843, - -0.7874253847123833, - -0.9655501539716149, - -1.1495499877640507, - -1.3365096543743877, - -1.5234672104535505, - -1.7074607126557977, - -1.8855749292757062, - -2.054987315215768, - -2.213012525229246, - -2.357144763441119, - -2.4850973012668707, - -2.594838540510321, - -2.6846240529023295, - -2.7530240907981476, - -2.7989461351739218, - -2.8216521253259605, - -2.8207700985509208, - -2.796300056241617, - -2.748613963887114, - -2.678449884976791, - -2.5869003413201472, - -2.4753950833474496, - -2.345678542113583, - -2.199782318600449, - -2.0399931441779886, - -1.8688168175067514, - -1.6889386866189762, - -1.5031812993977096, - -1.3144598903337512, - -1.1257364055582084, - -0.9399727912054643, - -0.7600842817761913, - -0.5888934251697471, - -0.4290855694412836, - -0.2831665132809308, - -0.15342298809483337, - -0.041886594907297056, - 0.049698235177668706, - 0.11990175167397357, - 0.16763143270978703, - 0.1921492147269725, - 0.1930831321610872, - 0.17043318353733833, - 0.1245713314705986, - 0.056235636569527375, - -0.033481382243644886, - -0.1431499774324561, - -0.2710257208423016, - -0.41507701439833655, - -0.5730171296438693, - -0.7423402708382517, - -0.9203610928756782, - -1.1042570508060376, - -1.2911129130781978, - -1.4779667365068356, - -1.661856577909848, - -1.8398672057457603, - -2.0091760750805605, - -2.1670978408310813, - -2.31112670728538, - -2.438975946022386, - -2.5486139590090597, - -2.6382963181392105, - -2.7065932759309774, - -2.752412313523248, - -2.7750153703750806, - -2.7740304839456327, - -2.7494576557901604, - -2.7016688515600293, - -2.6314021349068173, - -2.539750027802058, - -2.428142280838117, - -2.2983233252316486, - -2.1523247621261388, - -1.9924333230532856, - -1.8211548068351426, - -1.6411745616653208, - -1.455315135588126, - -1.266491763255233, - -1.0776663909590176, - -0.8918009649949273, - -0.7118107200240298, - -0.5405182041065435, - -0.38060876545808303, - -0.23458820292932347, - -0.10474324808653213, - 0.00689449788578933, - 0.09858060372346127, - 0.1688853187805705, - 0.21671612102543447, - 0.24133494674026276, - 0.24236983020103647, - 0.21982076977352225, - 0.17405972791327784, - 0.10582476506974758, - 0.016208400006089127, - -0.09335961990004614, - -0.22113486665305238, - -0.3650857423367173, - -0.5229255186529977, - -0.6921484000194695, - -0.8700690414888754, - -1.053864898269314, - -1.240620738967599, - -1.4273746205562685, - -1.6111646000112128, - -1.7890754459486908, - -1.9582846135921401, - -2.116106758015837, - -2.26003608366523, - -2.3877858622764228, - -2.4973244959734355, - -2.586907556806856, - -2.655105297451848, - -2.700825199203904, - -2.7233292016786086, - -2.722245342491536, - -2.6975736233542635, - -2.649686010074289, - -2.5793205664591694, - -2.487569814636511, - -2.3758635053543333, - -2.24594606998493, - -2.0998491098272845, - -1.9398593565684739, - -1.7684826091860284, - -1.58840421602834, - -1.4024467252948147, - -1.2135253717921524, - -1.024602101967373, - -0.838638862270388, - -0.6585508875167336, - -0.48716072592119275, - -0.3271537258533398, - -0.1810356863179908, - -0.05109333903526446, - 0.06064171465632992, - 0.15242504333909623, - 0.22282689621362198, - 0.2707547510948094, - 0.29547054411157325, - 0.2966023093867681, - 0.2741500451331993, - 0.22848571365355796, - 0.16034737524453452, - 0.07082754851681132, - -0.03864401930451555, - -0.16632290037617864, - -0.3101774969340574, - -0.46792108083205386, - -0.6370478566397915, - -0.8148724795619027, - -0.9985724049577451, - -1.1852324015858695, - -1.3718905265701662, - -1.5555848370377356, - -1.7334001017559113, - -1.9025137760988273, - -2.0602405152918752, - -2.2040745239310424, - -2.3317290739030074, - -2.4411725674820026, - -2.530660576869021, - -2.5987633548892686, - -2.644388382988221, - -2.6667976009312198, - -2.6656190464835663, - -2.640852721506358, - -2.5928705919564887, - -2.522410721790801, - -2.4305656332859926, - -2.3187650773390027, - -2.188753485470966, - -2.042562459129737, - -1.882478730150692, - -1.7110080976598527, - -1.5308359101537872, - -1.344784715980261, - -1.1557697500937847, - -0.9667529590890291, - -0.7806962895637234, - -0.600514976481184, - -0.4290315682033419, - -0.26893141324708936, - -0.1227203107641519, - 0.007315007378127528, - 0.11914293969449376, - 0.2110190546206585, - 0.2815136012106242, - 0.32953405713293604, - 0.35434235837025924, - 0.35556653889940004, - 0.33320659678719333, - 0.28763449419057496, - 0.21958829126057605, - 0.13016050646239957, - 0.02078088687568097, - -0.10680613980127396, - -0.2505689759494907, - -0.4082208935679833, - -0.5772560973709333, - -0.7549892427075666, - -0.9385977850816958, - -1.1251664933961738, - -1.3117334249192623, - -1.4953366369218974, - -1.6730608983151043, - -1.842083664616974, - -1.9997195911963703, - -2.1434628827927775, - -2.271026811435884, - -2.3803797795432127, - -2.469777359458755, - -2.5377898041503606, - -2.583324595206239, - -2.6056436725342267, - -2.6043750740419664, - -2.5795188017327337, - -2.531446821705509, - -2.4608971980589605, - -2.3689624532115405, - -2.2570723382017164, - -2.1269712846922073, - -1.9806908942719814, - -1.8205178989175845, - -1.6489580978958838, - -1.4686968398445732, - -1.2825566732518379, - -1.0934528332125986, - -0.9043472664621266, - -0.7182019197381667, - -0.5379320281441555, - -0.36636014018178015, - -0.2061716045076683, - -0.05987222041331933, - 0.0702512800946059, - 0.1821672953917486, - 0.27413139377466533, - 0.3447138241583134, - 0.3928220640725646, - 0.4177180493614269, - 0.41902981386322835, - 0.3967573555065256, - 0.35127263631010297, - 0.2833137162869666, - 0.1939731137644681, - 0.08468057568464965, - -0.04281947039171065, - -0.18649542698304306, - -0.34406056622553144, - -0.5130090929704716, - -0.6906556627037259, - -0.8741777310660609, - -1.0606600670968884, - -1.2471407282007352, - -1.430657771784687, - -1.6082959668960113, - -1.777232769188818, - -1.934782834167383, - -2.0784403667069995, - -2.20591863897278, - -2.315186053517495, - -2.4044981828201966, - -2.4724252799836606, - -2.5178748267309343, - -2.540108763104445, - -2.5387551271462607, - -2.5138139209939663, - -2.4656571108806657, - -2.395022761038959, - -2.303003394021022, - -2.191028760999169, - -2.060843293769436, - -1.9144785940540139, - -1.7542213939627798, - -1.5825774928954408, - -1.4022322396225673, - -1.2160081827648626, - -1.0268205575498468, - -0.8376313108450131, - -0.6514023895204187, - -0.4710490288112635, - -0.299393777351055, - -0.13912198392831882, - 0.007260552034259071, - 0.13746709839863636, - 0.24946605340931194, - 0.3415129852317258, - 0.41217814265016517, - 0.4603690030638613, - 0.4853475021863322, - 0.4867416737256055, - 0.4645515154801043, - 0.4191489893386362, - 0.35127215518442284, - 0.2620135312151858, - 0.15280286424361936, - 0.025384581701051456, - -0.1182097190600651, - -0.27569331030476707, - -0.44456039701303085, - -0.6221256347994801, - -0.8055664794334434, - -0.9919677000822207, - -1.178367354278682, - -1.3618034995578379, - -1.5393609050946986, - -1.708217026670876, - -1.8656865199180506, - -2.009263589838767, - -2.1366615087253678, - -2.2458486792573256, - -2.335080674040331, - -2.402927746303892, - -2.448297377897355, - -2.470451508989348, - -2.4690181777479476, - -2.443997386436606, - -2.3957611014140525, - -2.325047387038481, - -2.232948765987355, - -2.1208949895581384, - -1.9906304896717844, - -1.844186868175377, - -1.6838508573034194, - -1.5121282565800058, - -1.3317044148999755, - -1.1454018810081332, - -0.9561358902561778, - -0.7668683896351014, - -0.5805613261384042, - -0.4001299351248224, - -0.2283967653513122, - -0.06804716572920694, - 0.0784130641959402, - 0.2086971921633834, - 0.32077361629505996, - 0.41289790463407394, - 0.48364030584261886, - 0.5319082971979043, - 0.5569638142916443, - 0.558434890710249, - 0.5363215241307151, - 0.49099567632054686, - 0.4231954070419606, - 0.33401323437169284, - 0.22487890500173519, - 0.09753684624277544, - -0.04598134467285141, - -0.2033889401304802, - -0.3721801452303234, - -0.5496696157066164, - -0.7330348074483273, - -0.9193604897422198, - -1.1056847202404518, - -1.2890455565973864, - -1.4665277681067053, - -1.6353088106686058, - -1.7927033400336496, - -1.9362055613226996, - -2.063528746946165, - -2.1726412997015534, - -2.261798792312489, - -2.3295714781261116, - -2.3748668391091385, - -2.39694681554755, - -2.395439445726518, - -2.370344732026399, - -2.322034640922675, - -2.251247236890086, - -2.159075042722443, - -2.0469478098333727, - -1.9166099702598227, - -1.770093125964875, - -1.609684009298457, - -1.43788841990012, - -1.2573917067798808, - -1.071016418797942, - -0.8816777914206059, - -0.6923377717535641, - -0.5059583069050492, - -0.3254546323479543, - -0.15364929695346846, - 0.0067723502532320845, - 0.1533045096127123, - 0.2836604487506965, - 0.3958085656756245, - 0.4880044283175333, - 0.5588182852255302, - 0.6071576135639042, - 0.632284348811838, - 0.6338265244432367, - 0.6117841380227845, - 0.5665291512059727, - 0.4987996236430911, - 0.4096880732991189, - 0.30062424675450783, - 0.173352571208709, - 0.029904643782894508, - -0.12743280801928664, - -0.2961539894088221, - -0.47357355623052816, - -0.6568689644835108, - -0.8431249835651048, - -1.0293796712373502, - -1.2126710852642577, - -1.3900839950492259, - -1.5587958566020121, - -1.7161213257824413, - -1.8595546078201608, - -1.9868089752346498, - -2.0958528309320865, - -2.1849417477445594, - -2.2526459791274682, - -2.2978730071556237, - -2.319884772222955, - -2.3183093127223273, - -2.2931466311416058, - -2.2447686940636533, - -2.173913566070314, - -2.08167377006232, - -1.9694790575599987, - -1.8390738607070598, - -1.6924897815727697, - -1.5320135526131686, - -1.360150973574049, - -1.1795873935710686, - -0.9931453615700219, - -0.8037401131425215, - -0.614333595499591, - -0.42788775585438765, - -0.24731782978478312, - -0.07544636626634467, - 0.08504128557123894, - 0.23163932596409753, - 0.3620610224341973, - 0.4742747728860336, - 0.5665361451460362, - 0.6374153876597549, - 0.6858199774883331, - 0.7110118500078619, - 0.7126190385893805, - 0.6906415406949176, - 0.6454513178774991, - 0.5777864296851095, - 0.48873939398067734, - 0.3797399572427716, - 0.2525325465692856, - 0.10914875897967838, - -0.048124678123608176, - -0.21678197005242794, - -0.3941377727527799, - -0.5773695423243553, - -0.763562048265066, - -0.9497533484369938, - -1.132981500704419, - -1.3103312745708018, - -1.4789801261453872, - -1.636242711387514, - -1.7796132356261303, - -1.9068049714798376, - -2.015786321953863, - -2.1048128599788343, - -2.172454839108598, - -2.217619741516428, - -2.2395695076942888, - -2.2379321761329445, - -2.212707749417992, - -2.164268194229779, - -2.0933515752473975, - -2.0010504154688107, - -1.8887944665111855, - -1.7583281606149308, - -1.6116830999457443, - -1.4511460170560637, - -1.2792227117877766, - -1.0985985333523636, - -0.9120960308113057, - -0.7226304398317086, - -0.5331637077201379, - -0.34665778178458195, - -0.16602789769767523, - 0.005903395470159535, - 0.16645074849461317, - 0.31310836151776167, - 0.44358950196742514, - 0.5558625676542946, - 0.6481831263109534, - 0.7191214262896262, - 0.7675849445581975, - 0.7928356163996696, - 0.7945014750922255, - 0.7725825180052728, - 0.7274507065993542, - 0.6598441003302176, - 0.5708552169688625, - 0.46191380290189, - 0.33476428513561707, - 0.191438260598015, - 0.03422245660051485, - -0.1343773322599529, - -0.31167576202012526, - -0.4948502888703333, - -0.6809856823988008, - -0.8671200005577953, - -1.0502913013016668, - -1.227584354223646, - -1.3961766155225472, - -1.5533827412468466, - -1.6966969368149827, - -1.8238324749343875, - -1.9327577586989169, - -2.0217283611278183, - -2.0893145358633243, - -2.1344237651667974, - -2.156317989618074, - -2.1546252477956713, - -2.129345542372672, - -2.080850840116698, - -2.009879205793961, - -1.9175231624893243, - -1.805212461906542, - -1.6746915363724644, - -1.5279919881390909, - -1.3674005498450819, - -1.1954230214178887, - -1.014744752154718, - -0.8281882912023831, - -0.6386688743134514, - -0.44914844887923455, - -0.26258896229251016, - -0.08190565031062302, - 0.09007893791156674, - 0.2506794530657456, - 0.3973900952100668, - 0.527924131688511, - 0.6402499602282414, - 0.73262314847858, - 0.8036139447086214, - 0.8521298258033478, - 0.8774327269630253, - 0.879150681383428, - 0.8572836863516708, - 0.8122037032462159, - 0.7446487914410445, - 0.655711468625471, - 0.5468214811046499, - 0.4197232558035959, - 0.2764483895695819, - 0.11928360963304414, - -0.04926528948966701, - -0.22651296391565706, - -0.4096368699154097, - -0.5957217771568294, - -0.7818057436722912, - -0.9649268274955269, - -1.1421697982988996, - -1.3107121123604029, - -1.4678684258075014, - -1.6111329441372735, - -1.7382189401354162, - -1.8470948169742019, - -1.9360161477508382, - -2.0035531861853997, - -2.048613414616744, - -2.0704587737021622, - -2.0687173020973346, - -2.0433890025522707, - -1.994845841911327, - -1.923825885017314, - -1.8314216550312792, - -1.719062903733156, - -1.5884940635256113, - -1.4417467367364445, - -1.2811076560796049, - -1.109082621557758, - -0.9283569825433275, - -0.7417532882577746, - -0.5521867745283335, - -0.36261938882047806, - -0.17601307860152354, - 0.004716920297420636, - 0.17674805864800638, - 0.3373949870681623, - 0.4841519055428263, - 0.614732081342716, - 0.7271039121223388, - 0.8195229654584169, - 0.8905594895475066, - 0.9391209612023443, - 0.9644693155512836, - 0.9662325857182941, - 0.9444107689189066, - 0.899375826460306, - 0.8318658176453031, - 0.7429732600922723, - 0.6341279000357098, - 0.5070741643302163, - 0.36384364975275996, - 0.20672308346366491, - 0.03821825990949236, - -0.13898547709622971, - -0.32206558389367973, - -0.5081068302198131, - -0.694147274176032, - -0.8772249738645461, - -1.0544246990264006, - -1.2229239060080324, - -1.3800372510048429, - -1.5232589395815723, - -1.6503022445917541, - -1.7591355692750308, - -1.8480144867959218, - -1.915509250941313, - -1.9605273441168618, - -1.9823307070464307, - -1.9805473784519987, - -1.9551773611496592, - -1.9065926220496936, - -1.8355312260605239, - -1.7430856964086037, - -1.6306857849391942, - -1.5000759241198802, - -1.3532877163432833, - -1.1926078943877376, - -1.0205422583205772, - -0.8397761575781145, - -0.6531321414457041, - -0.4635254458142507, - -0.2739180182127642, - -0.08727180617179162, - 0.09349795441463035, - 0.2655687142553238, - 0.4262551239057186, - 0.5730513832881975, - 0.7036707596115622, - 0.8160816504683936, - 0.908539623373647, - 0.9796149264624158, - 1.0282150364862641, - 1.0536018885125276, - 1.0554035156043535, - 1.033619914916716, - 0.9886230476964488, - 0.9211509731862129, - 0.8322962089444771, - 0.7234885011462208, - 0.5964722765863519, - 0.453279131982668, - 0.29619579443646715, - 0.1277280583357127, - -0.04943873256481309, - -0.2324820346636422, - -0.4184866177559759, - -0.6044905400006908, - -0.7875318595579631, - -0.9646953462263701, - -1.133158456409327, - -1.2902358463594048, - -1.43342172169804, - -1.5604293553354205, - -1.669227150567475, - -1.75807068061473, - -1.8255301993200295, - -1.8705131891447282, - -1.892281590868089, - -1.8904634432672855, - -1.8650587492134079, - -1.8164394756714943, - -1.7453436876044424, - -1.6528639082931675, - -1.5404298896369344, - -1.4097860641571247, - -1.2629640342999806, - -1.1022505328973744, - -0.9301513600697959, - -0.7493518653064465, - -0.5626745979454482, - -0.3730347939301283, - -0.18339440084203795, - 0.0032846337364769024, - 0.18408707385954196, - 0.35619037018424615, - 0.5169091732145815, - 0.6637376828219231, - 0.7943891661642197, - 0.9068320207831037, - 0.9993218141432172, - 1.0704287943294013, - 1.1190604380431763, - 1.1444786803020732, - 1.1463115541196676, - 1.1245590566016035, - 1.079593148945591, - 1.0121518903453672, - 0.9233277983108454, - 0.8145506189684626, - 0.6875647790649525, - 0.5444018752700273, - 0.3873486346375076, - 0.2189108515076264, - 0.041773869587734686, - -0.141239767567445, - -0.3272148298001213, - -0.5131893753157897, - -0.696201462321102, - -0.8733358606606707, - -1.0417700267838492, - -1.1988186169889918, - -1.3419758369429773, - -1.4689549596012959, - -1.577724388304738, - -1.6665396963187495, - -1.733971137530796, - -1.7789261944464827, - -1.8006668078891614, - -1.7988210166799323, - -1.7733888237335376, - -1.7247421960584126, - -1.6536191986606879, - -1.561112354864243, - -1.4486514166110218, - -1.3179808164649562, - -1.1711321569145654, - -1.0103921708339239, - -0.8382666583850993, - -0.657440969098906, - -0.4707376523550379, - -0.28107194413779313, - -0.09140579206971164, - 0.09529885622638978, - 0.27612676476382, - 0.4482553841596221, - 0.6089993648780226, - 0.7558529067504006, - 0.886529276895194, - 0.998996872814733, - 1.091511261934614, - 1.1626426923009274, - 1.2112986405764694, - 1.236741041740378, - 1.2385979287681494, - 1.2168692987274785, - 1.1719271127783468, - 1.1045094300771383, - 1.0157087680964605, - 0.9069548729256598, - 0.779992171274907, - 0.6368522597772789, - 0.4798218654502837, - 0.31140678259799753, - 0.13429235489204244, - -0.04869887414847858, - -0.23465167440123885, - -0.42060410410684956, - -0.603594221506967, - -0.7807067964806511, - -0.9491192855119628, - -1.1061463449334068, - -1.2492821804459515, - -1.3762400650386133, - -1.4849884020859043, - -1.5737827648866125, - -1.641193407361148, - -1.686127812048051, - -1.7078479198032461, - -1.705981769480234, - -1.680529364025904, - -1.6318626704805859, - -1.5607197538821624, - -1.4681931375858963, - -1.355712573564926, - -1.2250224944143733, - -1.0781545026532853, - -0.91739533118632, - -0.7452507802057893, - -0.564406199272856, - -0.377684137796851, - -0.18799983179158716, - 0.0016847710910285543, - 0.18840772319887555, - 0.3692537885163987, - 0.5414004176320544, - 0.7021622609816204, - 0.8490335183682651, - 0.9797274568822623, - 1.0922124739984542, - 1.184744137114865, - 1.2558926942502284, - 1.3045656220403217, - 1.3300248554375145, - 1.331898427390684, - 1.3101863349412048, - 1.2652605392229268, - 1.1978590993663474, - 1.1090745328184024, - 1.0003365856430744, - 0.8733896845253798, - 0.7302654260733304, - 0.5732505372797014, - 0.4048508124241489, - 0.22775159515424442, - 0.04477542896480259, - -0.14116245604560596, - -0.32710011814127027, - -0.5100756155867463, - -0.6871737182844746, - -0.8555718827414465, - -1.0125847653125508, - -1.1557065717213042, - -1.2826505749788, - -1.3913851784815598, - -1.4801659555499818, - -1.5475631601259585, - -1.5924842747692094, - -1.6141912403567082, - -1.612312095762674, - -1.5868468439545338, - -1.5381674519928858, - -1.467011984935671, - -1.374472966157902, - -1.2619801476524872, - -1.1312779620337632, - -0.9843980118398913, - -0.8236270299944003, - -0.6514708167083273, - -0.47061472156125406, - -0.2838812939805725, - -0.09418576999812563, - 0.0955099027164649, - 0.28224377649342713, - 0.4631006153002965, - 0.6352578697083845, - 0.7960301901364679, - 0.942911776371471, - 1.0736158954872443, - 1.1861109449426173, - 1.2786524921195968, - 1.349810785021415, - 1.3984933002685542, - 1.42396197279814, - 1.4258448355441733, - 1.4041418855333552, - 1.3592250838851254, - 1.29183248971568, - 1.2030566204580597, - 1.0943272221626223, - 0.9673887215007089, - 0.8242727150671285, - 0.6672659298415544, - 0.4988741600910662, - 0.3217827494504526, - 0.13881424140214485, - -0.047116133967080795, - -0.23304643493354144, - -0.41601471977341764, - -0.5931057584006227, - -0.7614970073331804, - -0.9185031229369036, - -1.0616183109460673, - -1.1885558443822073, - -1.297284126652054, - -1.3860587310858534, - -1.4534499116354045, - -1.4983651508699478, - -1.520066389675661, - -1.5181816669358188, - -1.49271098562667, - -1.4440263128173845, - -1.3728657135742195, - -1.2803217112803327, - -1.1678240579365047, - -1.0371171861646304, - -0.890232698510323, - -0.7294573279042723, - -0.5572968745646063, - -0.3764366880772949, - -0.18969931787630306, - 5.528032286427636e-15, - 0.18969931787631403, - 0.3764366880773056, - 0.5572968745647358, - 0.7294573279045442, - 0.8902326985105071, - 1.0371171861646724, - 1.1678240579365373, - 1.2803217112804308, - 1.372865713574245, - 1.4440263128173878, - 1.4927109856266716, - 1.5181816669358188, - 1.5200663896756454, - 1.4983651508699152, - 1.4534499116353907, - 1.3860587310857917, - 1.2972841266519566, - 1.1885558443821749, - 1.061618310945964, - 0.9185031229368609, - 0.7614970073331694, - 0.593105758400611, - 0.41601471977336435, - 0.2330464349333191, - 0.047116133966856696, - -0.13881424140228343, - -0.32178274945050434, - -0.4988741600912353, - -0.6672659298416777, - -0.8242727150671384, - -0.967388721500718, - -1.0943272221626303, - -1.2030566204581072, - -1.2918324897157771, - -1.359225083885144, - -1.4041418855333787, - -1.4258448355441842, - -1.4239619727981387, - -1.3984933002685407, - -1.349810785021401, - -1.2786524921195923, - -1.186110944942612, - -1.0736158954872077, - -0.942911776371337, - -0.7960301901363198, - -0.635257869708225, - -0.4631006153002464, - -0.28224377649329135, - -0.0955099027162836, - 0.09418576999817956, - 0.2838812939805835, - 0.4706147215612647, - 0.651470816708415, - 0.8236270299945995, - 0.9843980118400071, - 1.131277962033801, - 1.2619801476526038, - 1.3744729661579789, - 1.4670119849356926, - 1.5381674519929311, - 1.5868468439545351, - 1.612312095762674, - 1.614191240356702, - 1.592484274769177, - 1.5475631601258772, - 1.4801659555499045, - 1.3913851784815332, - 1.2826505749787636, - 1.1557065717211716, - 1.0125847653125084, - 0.8555718827414354, - 0.6871737182844629, - 0.5100756155866926, - 0.3271001181410066, - 0.1411624560454673, - -0.04477542896481368, - -0.22775159515437868, - -0.4048508124243179, - -0.5732505372797502, - -0.7302654260734092, - -0.8733896845253891, - -1.0003365856430828, - -1.1090745328184295, - -1.1978590993664233, - -1.265260539222982, - -1.3101863349412384, - -1.3318984273906953, - -1.3300248554375078, - -1.304565622040287, - -1.2558926942501878, - -1.1847441371148608, - -1.092212473998449, - -0.9797274568822556, - -0.8490335183680657, - -0.7021622609814397, - -0.5414004176320075, - -0.369253788516268, - -0.18840772319869856, - -0.0016847710909750728, - 0.18799983179159918, - 0.37768413779686194, - 0.5644061992728666, - 0.7452507802057995, - 0.917395331186442, - 1.0781545026534003, - 1.2250224944144734, - 1.3557125735650173, - 1.468193137585903, - 1.560719753882219, - 1.6318626704806314, - 1.6805293640259054, - 1.705981769480234, - 1.7078479198032444, - 1.6861278120480123, - 1.6411934073610825, - 1.573782764886556, - 1.4849884020858732, - 1.3762400650384974, - 1.249282180445852, - 1.1061463449333617, - 0.9491192855119157, - 0.7807067964806396, - 0.603594221506955, - 0.420604104106711, - 0.23465167440105827, - 0.048698874148298134, - -0.1342923548922183, - -0.31140678259804877, - -0.4798218654503297, - -0.636852259777426, - -0.7799921712749494, - -0.9069548729256681, - -1.0157087680964674, - -1.1045094300771945, - -1.1719271127784276, - -1.216869298727507, - -1.2385979287681497, - -1.2367410417403666, - -1.2112986405764348, - -1.1626426923009132, - -1.0915112619346092, - -0.9989968728147275, - -0.8865292768951873, - -0.7558529067502964, - -0.6089993648778738, - -0.4482553841595366, - -0.27612676476365006, - -0.09529885622625531, - 0.09140579206976647, - 0.2810719441379752, - 0.4707376523550917, - 0.6574409690989167, - 0.8382666583851095, - 1.01039217083397, - 1.1711321569148159, - 1.3179808164651226, - 1.4486514166110585, - 1.5611123548643153, - 1.653619198660766, - 1.7247421960584326, - 1.7733888237335393, - 1.7988210166799323, - 1.80066680788916, - 1.77892619444647, - 1.7339711375307412, - 1.6665396963187291, - 1.5777243883046612, - 1.4689549596012093, - 1.341975836942969, - 1.1988186169888775, - 1.0417700267838024, - 0.8733358606606589, - 0.6962014623210899, - 0.5131893753157353, - 0.32721482979989747, - 0.14123976756722234, - -0.04177386958787064, - -0.21891085150767536, - -0.387348634637667, - -0.5444018752701414, - -0.6875647790649608, - -0.8145506189684708, - -0.9233277983108523, - -1.0121518903453879, - -1.079593148945646, - -1.1245590566016308, - -1.146311554119674, - -1.1444786803020612, - -1.1190604380431688, - -1.0704287943293553, - -0.9993218141431606, - -0.906832020783098, - -0.794389166164213, - -0.663737682821882, - -0.5169091732143972, - -0.35619037018397465, - -0.18408707385941295, - -0.003284633736464933, - 0.18339440084217667, - 0.37303479393026845, - 0.5626745979454595, - 0.7493518653064573, - 0.930151360069806, - 1.1022505328974561, - 1.262964034300165, - 1.4097860641572297, - 1.540429889636967, - 1.6528639082932655, - 1.7453436876045043, - 1.8164394756715092, - 1.865058749213437, - 1.8904634432672855, - 1.8922815908680877, - 1.870513189144715, - 1.8255301993199746, - 1.7580706806146178, - 1.669227150567378, - 1.5604293553353885, - 1.4334217216979368, - 1.2902358463592578, - 1.133158456409281, - 0.9646953462263583, - 0.787531859557951, - 0.6044905400006784, - 0.41848661775575224, - 0.23248203466350426, - 0.04943873256480227, - -0.12772805833584158, - -0.29619579443659017, - -0.4532791319826774, - -0.5964722765864228, - -0.7234885011462289, - -0.8322962089444841, - -0.9211509731862185, - -0.9886230476964883, - -1.0336199149167495, - -1.0554035156043646, - -1.0536018885125216, - -1.0282150364862506, - -0.9796149264623595, - -0.9085396233735897, - -0.816081650468388, - -0.7036707596115555, - -0.5730513832881896, - -0.42625512390553427, - -0.2655687142551633, - -0.09349795441458025, - 0.0872718061719277, - 0.2739180182129455, - 0.463525445814305, - 0.6531321414458429, - 0.8397761575781674, - 1.0205422583205874, - 1.1926078943877472, - 1.3532877163433956, - 1.5000759241200432, - 1.6306857849393401, - 1.7430856964086807, - 1.835531226060529, - 1.9065926220497342, - 1.9551773611496883, - 1.9805473784519991, - 1.982330707046429, - 1.960527344116859, - 1.915509250941252, - 1.8480144867958301, - 1.759135569275005, - 1.6503022445917177, - 1.5232589395814395, - 1.3800372510047318, - 1.222923906007984, - 1.0544246990263502, - 0.877224973864534, - 0.6941472741760195, - 0.5081068302196736, - 0.3220655838935006, - 0.13898547709605358, - -0.03821825990966116, - -0.20672308346371385, - -0.36384364975287076, - -0.5070741643303489, - -0.6341279000357471, - -0.7429732600922793, - -0.8318658176453089, - -0.8993758264603566, - -0.9444107689189656, - -0.9662325857183054, - -0.9644693155512771, - -0.9391209612023104, - -0.8905594895474652, - -0.8195229654584117, - -0.7271039121223328, - -0.6147320813427091, - -0.4841519055428184, - -0.3373949870681169, - -0.17674805864784526, - -0.004716920297330063, - 0.1760130786017002, - 0.36261938882061645, - 0.5521867745283884, - 0.7417532882579553, - 0.9283569825433806, - 1.1090826215577683, - 1.2811076560796144, - 1.4417467367364871, - 1.5884940635258078, - 1.7190629037332723, - 1.8314216550313107, - 1.9238258850173713, - 1.9948458419113837, - 2.0433890025522836, - 2.0687173020973413, - 2.0704587737021614, - 2.0486134146167414, - 2.00355318618538, - 1.9360161477507614, - 1.8470948169741055, - 1.7382189401353, - 1.6111329441371742, - 1.467868425807492, - 1.3107121123602796, - 1.142169798298771, - 0.964926827495515, - 0.781805743672279, - 0.5957217771567751, - 0.409636869915188, - 0.22651296391543993, - 0.04926528948961543, - -0.11928360963308987, - -0.2764483895697293, - -0.41972325580369896, - -0.5468214811046572, - -0.655711468625478, - -0.7446487914410502, - -0.8122037032462306, - -0.8572836863517042, - -0.8791506813834382, - -0.8774327269630134, - -0.8521298258033132, - -0.8036139447086073, - -0.7326231484785177, - -0.6402499602281693, - -0.527924131688504, - -0.39739009521005886, - -0.2506794530657005, - -0.0900789379113677, - 0.08190565031091135, - 0.26258896229264495, - 0.44914844887928906, - 0.6386688743136338, - 0.8281882912025226, - 1.014744752154729, - 1.195423021417899, - 1.3674005498450914, - 1.5279919881391, - 1.6746915363725654, - 1.8052124619066339, - 1.9175231624893514, - 2.0098792057940393, - 2.0808508401167174, - 2.1293455423726795, - 2.1546252477956824, - 2.1563179896180724, - 2.1344237651667943, - 2.08931453586332, - 2.0217283611277574, - 1.9327577586987745, - 1.8238324749342723, - 1.6966969368149445, - 1.5533827412467325, - 1.3961766155223878, - 1.2275843542235965, - 1.050291301301655, - 0.867120000557783, - 0.6809856823987882, - 0.49485028887019633, - 0.3116757620199496, - 0.13437733225986337, - -0.034222456600674536, - -0.19143826059812905, - -0.3347642851356549, - -0.4619138029020057, - -0.5708552169688944, - -0.6598441003302232, - -0.7274507065993583, - -0.7725825180052954, - -0.7945014750922361, - -0.7928356163996573, - -0.7675849445581895, - -0.7191214262896064, - -0.6481831263108759, - -0.5558625676542215, - -0.44358950196741803, - -0.3131083615177538, - -0.16645074849460423, - -0.0059033954699604235, - 0.16602789769784537, - 0.3466577817846344, - 0.5331637077202769, - 0.7226304398318909, - 0.9120960308113604, - 1.0985985333524986, - 1.2792227117878274, - 1.4511460170560735, - 1.6116830999457534, - 1.758328160615031, - 1.8887944665113279, - 2.001050415468934, - 2.0933515752474587, - 2.164268194229793, - 2.2127077494180267, - 2.237932176132956, - 2.239569507694287, - 2.2176197415164243, - 2.172454839108594, - 2.1048128599787157, - 2.0157863219537457, - 1.9068049714798054, - 1.7796132356260894, - 1.6362427113873668, - 1.4789801261453415, - 1.3103312745707505, - 1.1329815007043664, - 0.9497533484369814, - 0.7635620482650536, - 0.5773695423243017, - 0.3941377727526051, - 0.2167819700522588, - 0.048124678123449054, - -0.10914875897972393, - -0.25253254656938495, - -0.3797399572428878, - -0.4887393939807091, - -0.5777864296851152, - -0.6454513178775033, - -0.6906415406949307, - -0.7126190385893959, - -0.7110118500078554, - -0.6858199774883198, - -0.6374153876596982, - -0.5665361451459788, - -0.4742747728860023, - -0.3620610224341102, - -0.23163932596408954, - -0.08504128557123007, - 0.0754463662663934, - 0.2473178297849538, - 0.4278877558546472, - 0.6143335954997718, - 0.8037401131425761, - 0.9931453615700755, - 1.179587393571245, - 1.3601509735741004, - 1.5320135526131784, - 1.6924897815727786, - 1.8390738607070976, - 1.9694790575601697, - 2.081673770062398, - 2.1739135660703193, - 2.244768694063694, - 2.29314663114164, - 2.3183093127223335, - 2.3198847722229496, - 2.297873007155621, - 2.2526459791274647, - 2.184941747744534, - 2.0958528309319897, - 1.9868089752345344, - 1.8595546078200278, - 1.7161213257823302, - 1.558795856601963, - 1.390083995049057, - 1.2126710852641234, - 1.0293796712373378, - 0.8431249835650924, - 0.6568689644834569, - 0.47357355623022934, - 0.2961539894086135, - 0.12743280801923776, - -0.02990464378293635, - -0.17335257120884173, - -0.3006242467545439, - -0.4096880732991255, - -0.49879962364309666, - -0.566529151205977, - -0.6117841380227873, - -0.6338265244432422, - -0.6322843488118308, - -0.6071576135638752, - -0.5588182852254736, - -0.48800442831751223, - -0.39580856567554695, - -0.2836604487506099, - -0.15330450961270428, - -0.006772350253223092, - 0.15364929695347815, - 0.32545463234812666, - 0.5059583069052671, - 0.6923377717537025, - 0.8816777914206603, - 1.0710164187981228, - 1.2573917067800169, - 1.437888419900131, - 1.609684009298467, - 1.7700931259648836, - 1.916609970259831, - 2.0469478098334606, - 2.1590750427225416, - 2.2512472368901637, - 2.3220346409227313, - 2.370344732026412, - 2.3954394457265193, - 2.396946815547539, - 2.3748668391091305, - 2.329571478126107, - 2.261798792312484, - 2.1726412997014775, - 2.0635287469459955, - 1.9362055613226004, - 1.7927033400336398, - 1.6353088106684823, - 1.4665277681065356, - 1.2890455565973349, - 1.10568472024044, - 0.9193604897422075, - 0.7330348074483148, - 0.5496696157064827, - 0.3721801452301547, - 0.20338894013039605, - 0.045981344672704025, - -0.09753684624287856, - -0.22487890500176788, - -0.33401323437178987, - -0.42319540704198644, - -0.4909956763205509, - -0.5363215241307179, - -0.5584348907102544, - -0.5569638142916216, - -0.5319082971978644, - -0.4836403058426043, - -0.412897904634012, - -0.32077361629496215, - -0.20869719216335036, - -0.078413064195932, - 0.06804716572921585, - 0.22839676535132195, - 0.4001299351250327, - 0.5805613261385819, - 0.7668683896351556, - 0.9561358902563178, - 1.1454018810083144, - 1.3317044149000288, - 1.5121282565801346, - 1.6838508573034674, - 1.844186868175386, - 1.9906304896717926, - 2.1208949895581704, - 2.232948765987474, - 2.325047387038579, - 2.3957611014140987, - 2.443997386436614, - 2.4690181777479596, - 2.470451508989343, - 2.448297377897352, - 2.402927746303888, - 2.3350806740403254, - 2.2458486792572696, - 2.1366615087252283, - 2.009263589838729, - 1.8656865199179364, - 1.7082170266707162, - 1.5393609050946495, - 1.3618034995577846, - 1.1783673542785442, - 0.9919677000822084, - 0.8055664794334313, - 0.6221256347994282, - 0.44456039701286265, - 0.27569331030453326, - 0.11820971905995102, - -0.025384581701060074, - -0.1528028642437058, - -0.2620135312152835, - -0.35127215518444815, - -0.41914898933864053, - -0.464551515480107, - -0.4867416737256063, - -0.4853475021863196, - -0.46036900306383743, - -0.41217814265014563, - -0.34151298523164797, - -0.24946605340923922, - -0.1374670983985994, - -0.007260552034159026, - 0.13912198392832784, - 0.29939377735106476, - 0.471049028811315, - 0.6514023895205959, - 0.8376313108452794, - 1.0268205575500293, - 1.216008182764917, - 1.4022322396227023, - 1.5825774928956104, - 1.7542213939628288, - 1.9144785940540228, - 2.060843293769444, - 2.1910287609992274, - 2.303003394021191, - 2.3950227610390216, - 2.4656571108806693, - 2.5138139209939903, - 2.5387551271462723, - 2.5401087631044446, - 2.517874826730916, - 2.4724252799836566, - 2.4044981828201912, - 2.3151860535174884, - 2.2059186389726895, - 2.078440366706868, - 1.9347828341672355, - 1.777232769188697, - 1.60829596689596, - 1.430657771784511, - 1.2471407282005966, - 1.060660067096876, - 0.8741777310660488, - 0.6906556627037141, - 0.513009092970264, - 0.34406056622537273, - 0.1864954269829978, - 0.04281947039161123, - -0.08468057568476572, - -0.19397311376449908, - -0.2833137162870083, - -0.35127263631010697, - -0.39675735550652824, - -0.41902981386322957, - -0.41771804936141466, - -0.3928220640725401, - -0.34471382415826746, - -0.27413139377460827, - -0.18216729539174228, - -0.07025128009451465, - 0.05987222041345226, - 0.20617160450771035, - 0.36636014018179, - 0.537932028144166, - 0.7182019197383452, - 0.9043472664623498, - 1.0934528332127387, - 1.2825566732518918, - 1.4686968398447497, - 1.6489580978960146, - 1.8205178989176307, - 1.9806908942720267, - 2.1269712846922153, - 2.257072338201723, - 2.368962453211614, - 2.4608971980590386, - 2.5314468217055657, - 2.5795188017327684, - 2.604375074041973, - 2.6056436725342156, - 2.5833245952062054, - 2.5377898041503464, - 2.469777359458749, - 2.3803797795432056, - 2.2710268114357643, - 2.1434628827925546, - 1.9997195911962597, - 1.8420836646169638, - 1.6730608983149742, - 1.4953366369217629, - 1.3117334249192512, - 1.1251664933961618, - 0.9385977850816836, - 0.7549892427075547, - 0.5772560973708051, - 0.40822089356782437, - 0.2505689759494128, - 0.1068061398011414, - -0.020780886875771606, - -0.13016050646242638, - -0.21958829126065316, - -0.2876344941905945, - -0.333206596787196, - -0.3555665388994014, - -0.3543423583702535, - -0.3295340571328849, - -0.28151360121056757, - -0.21101905462063753, - -0.11914293969441661, - -0.007315007378011287, - 0.12272031076418982, - 0.26893141324709846, - 0.42903156820335175, - 0.6005149764811946, - 0.7806962895637763, - 0.9667529590892109, - 1.1557697500938815, - 1.344784715980442, - 1.530835910153923, - 1.7110080976598638, - 1.882478730150813, - 2.042562459129782, - 2.188753485470974, - 2.31876507733901, - 2.430565633286019, - 2.5224107217908958, - 2.5928705919565616, - 2.6408527215063713, - 2.6656190464835667, - 2.6667976009312087, - 2.644388382988198, - 2.5987633548892655, - 2.530660576869016, - 2.4411725674819964, - 2.331729073902971, - 2.204074523930911, - 2.060240515291764, - 1.9025137760987039, - 1.7334001017557419, - 1.5555848370376841, - 1.3718905265700272, - 1.18523240158573, - 0.998572404957733, - 0.8148724795618908, - 0.637047856639742, - 0.46792108083185924, - 0.3101774969338055, - 0.16632290037607528, - 0.03864401930450827, - -0.07082754851688351, - -0.16034737524459636, - -0.22848571365356152, - -0.27415004513320185, - -0.29660230938676935, - -0.2954705441115619, - -0.270754751094769, - -0.22282689621358065, - -0.15242504333907042, - -0.060641714656232124, - 0.051093339035351515, - 0.1810356863180324, - 0.32715372585345137, - 0.4871607259212027, - 0.6585508875167441, - 0.8386388622703989, - 1.0246021019675118, - 1.2135253717924204, - 1.4024467252949953, - 1.5884042160283935, - 1.7684826091861579, - 1.939859356568634, - 2.09984910982733, - 2.245946069984938, - 2.3758635053543404, - 2.487569814636516, - 2.579320566459263, - 2.649686010074335, - 2.6975736233542715, - 2.722245342491548, - 2.723329201678603, - 2.7008251992039023, - 2.655105297451818, - 2.5869075568068505, - 2.4973244959734293, - 2.3877858622764148, - 2.2600360836651263, - 2.1161067580156905, - 1.9582846135919807, - 1.7890754459486415, - 1.6111646000111595, - 1.427374620556088, - 1.2406207389674593, - 1.0538648982693022, - 0.8700690414888637, - 0.6921484000194582, - 0.5229255186528023, - 0.3650857423365707, - 0.22113486665301124, - 0.09335961989995942, - -0.01620840000618655, - -0.10582476506977286, - -0.17405972791331809, - -0.21982076977353524, - -0.24236983020103747, - -0.2413349467402624, - -0.21671612102540494, - -0.16888531878049762, - -0.09858060372336772, - -0.006894497885716597, - 0.10474324808656901, - 0.23458820292945642, - 0.38060876545819455, - 0.5405182041065537, - 0.7118107200240404, - 0.8918009649949382, - 1.0776663909592843, - 1.2664917632554582, - 1.4553151355881806, - 1.6411745616653728, - 1.8211548068353123, - 1.9924333230533349, - 2.152324762126181, - 2.2983233252316895, - 2.428142280838124, - 2.539750027802064, - 2.6314021349068755, - 2.701668851560086, - 2.749457655790195, - 2.7740304839456433, - 2.7750153703750806, - 2.752412313523219, - 2.7065932759309215, - 2.6382963181391896, - 2.548613959009053, - 2.438975946022378, - 2.3111267072853052, - 2.1670978408308326, - 2.0091760750804397, - 1.8398672057457088, - 1.661856577909672, - 1.4779667365066977, - 1.2911129130781864, - 1.1042570508060259, - 0.9203610928756665, - 0.7423402708382404, - 0.5730171296438227, - 0.4150770143981898, - 0.27102572084223137, - 0.1431499774323401, - 0.03348138224361358, - -0.05623563656954794, - -0.12457133147065451, - -0.17043318353735126, - -0.1930831321610883, - -0.19214921472697213, - -0.16763143270977446, - -0.1199017516738901, - -0.049698235177590394, - 0.041886594907324284, - 0.15342298809492463, - 0.2831665132810638, - 0.42908556944132614, - 0.5888934251698321, - 0.7600842817762017, - 0.9399727912054752, - 1.1257364055582626, - 1.3144598903339344, - 1.5031812993978906, - 1.688938686619153, - 1.868816817506882, - 2.039993144178035, - 2.1997823186005965, - 2.345678542113686, - 2.4753950833474567, - 2.586900341320153, - 2.6784498849768124, - 2.748613963887208, - 2.796300056241662, - 2.820770098550928, - 2.8216521253259543, - 2.798946135173888, - 2.7530240907981334, - 2.6846240529023246, - 2.594838540510315, - 2.4850973012668627, - 2.357144763441078, - 2.2130125252291, - 2.0549873152156466, - 1.8855749292755755, - 1.707460712655621, - 1.5234672104534972, - 1.336509654374248, - 1.149549987763912, - 0.9655501539716032, - 0.787425384712372, - 0.6179982251007967, - 0.45995402040664257, - 0.3157985665351766, - 0.18781859210750043, - 0.07804569536303269, - -0.01177569537901861, - -0.08021583241723869, - -0.1261821966644977, - -0.14893672734714608, - -0.1481074616851237, - -0.12369440098798155, - -0.07606951065471212, - -0.005970854078107421, - 0.08550904703562331, - 0.19694044236620828, - 0.32657890097530756, - 0.4723928220045052, - 0.6320954742138483, - 0.8031810590790867, - 0.9829642287116137, - 1.1686224353782217, - 1.3572404447448212, - 1.5458563108435408, - 1.7315080877096856, - 1.9112805410194884, - 2.082351123056774, - 2.2420344859562893, - 2.387824831224468, - 2.5174354276586643, - 2.628834674444211, - 2.720278140693698, - 2.790336076144438, - 2.8379159591543415, - 2.8622797264018502, - 2.863055412565747, - 2.840243016421118, - 2.794214500839369, - 2.7257079266922637, - 2.6358158131720018, - 2.5259679080915376, - 2.397908639888444, - 2.2536696069275246, - 2.0955375379618397, - 1.92601822903542, - 1.7477970255635902, - 1.5636964728129645, - 1.3766318026577604, - 1.189564958613162, - 1.0054578841974067, - 0.8272258112950153, - 0.65769128519005, - 0.49953965132159983, - 0.3552767057648254, - 0.22718917731043653, - 0.11730866436768252, - 0.027379595425848127, - -0.04116828164374901, - -0.08724244758381453, - -0.11010484145041585, - -0.10938350029321117, - -0.08507842525128015, - -0.037561581553161194, - 0.032428967579042234, - 0.12380070060984845, - 0.23512386738964935, - 0.3646540371512242, - 0.5103596092070968, - 0.6699538524882047, - 0.8409309686418045, - 1.0206056099504748, - 1.2061552288521427, - 1.394664591184478, - 1.583171751151227, - 1.768714762959101, - 1.9483783924563745, - 2.119340092098363, - 2.2789145141919906, - 2.424595860415753, - 2.5540973997390286, - 2.6653875315193676, - 2.756721825041742, - 2.8266705302157744, - 2.8741411255719465, - 2.8983955479612353, - 2.8990618322350894, - 2.8761399773413725, - 2.830001946324307, - 2.7613858002286777, - 2.6713840584196316, - 2.561426468883187, - 2.433257460230342, - 2.2889086309990656, - 2.130666710115664, - 1.9610374937978747, - 1.782706327634397, - 1.5984957570655283, - 1.411321014139471, - 1.224144042544851, - 1.0399267859739394, - 0.8615844764854979, - 0.6919396595373346, - 0.5336776807428971, - 0.38930433635138945, - 0.2611063553279831, - 0.1511153362564911, - 0.06107570780053999, - -0.007582781993970972, - -0.0537676136950275, - -0.07674072618394179, - -0.07613015633554698, - -0.0519359051140008, - -0.004529937572861534, - 0.0653496832409832, - 0.1566104359670275, - 0.2678225706310532, - 0.39724165664119904, - 0.5428360934852198, - 0.7023191502697368, - 0.8731850288176022, - 1.052748381586817, - 1.2381866611912846, - 1.4265846336445023, - 1.6149803533258595, - 1.8004118746183428, - 1.9799639635461204, - 2.150814072740644, - 2.3102768546851706, - 2.4558465112344434, - 2.58523631153403, - 2.6964146551182044, - 2.7876371114483662, - 2.857473930610637, - 2.9048325913123514, - 2.928975030581131, - 2.9295292834453113, - 2.9064953490296332, - 2.860245190555375, - 2.7915168692443357, - 2.7014029046387744, - 2.5913330449019822, - 2.46305171882225, - 2.3185905251148946, - 2.160236192883616, - 1.9904945185236635, - 1.8120508478013138, - 1.6277277263347336, - 1.4404403863496127, - 1.2531507717123807, - 1.0688208262934409, - 0.8903657823292526, - 0.7206081854556211, - 0.5622333814644171, - 0.41774716678269286, - 0.2894362705539185, - 0.1793322915403172, - 0.08917965858378744, - 0.020408119908712913, - -0.02588980487429407, - -0.04897605446806601, - -0.04847866556873029, - -0.024397638961731624, - 0.022895060478183696, - 0.0926613698829896, - 0.18380876807111474, - 0.2949075052474255, - 0.4242131509989106, - 0.5696941049926245, - 0.7290636365145119, - 0.8998159475663656, - 1.0792656907857494, - 1.2645903189660177, - 1.4528745982999705, - 1.641156583346663, - 1.8264743286687684, - 2.005912600469746, - 2.176648851561156, - 2.3359977346059946, - 2.4814534516386626, - 2.6107292719848596, - 2.721793595358826, - 2.812901991401878, - 2.88262471038038, - 2.9298692311818226, - 2.95389749101407, - 2.954337525085733, - 2.931189332701945, - 2.884824877264411, - 2.81598222017539, - 2.725753881157692, - 2.6155696085553597, - 2.4871738313371448, - 2.342598148399163, - 2.1841292890261146, - 2.0142730497937094, - 1.8357147766495583, - 1.6512770153925649, - 1.4638749984293198, - 1.276470669807725, - 1.0920259735790774, - 0.9134561421610042, - 0.743583721370696, - 0.5850940571813464, - 0.4404929462013719, - 0.31206711775553253, - 0.2018481707877312, - 0.11158053432131838, - 0.04269395676239238, - -0.0037190420968806065, - -0.026920400777584785, - -0.026538155794058174, - -0.0025723077499339164, - 0.04460517866195689, - 0.11425624075540873, - 0.20528835753105573, - 0.3162717793756238, - 0.44546207605823607, - 0.5908276474281859, - 0.750081762953525, - 0.9207186248183047, - 1.1000528858425123, - 1.2852619990018288, - 1.4734307306712155, - 1.6615971355924448, - 1.8467992685108352, - 2.026121895812159, - 2.1967424704907903, - 2.3559756453920992, - 2.5013156227334283, - 2.630475672023323, - 2.7414241931585916, - 2.8324167559635827, - 2.902023610887583, - 2.949152237000985, - 2.973064571694715, - 2.9733886503604148, - 2.950124472486346, - 2.903644001657355, - 2.834685299458875, - 2.7443408857970746, - 2.6340405091991865, - 2.50552859881728, - 2.3608367537310473, - 2.2022517034084736, - 2.0322792446086666, - 1.8536047234629873, - 1.6690506859537158, - 1.4815323646711827, - 1.2940117038469507, - 1.109450647715895, - 0.9307644288794359, - 0.7607755933387929, - 0.602169487250643, - 0.4574519074074036, - 0.3289095833179417, - 0.21857411410980404, - 0.12818992899061918, - 0.059186776550394504, - 0.01265717676536697, - -0.010660808701339078, - -0.010395216179940561, - 0.013453953910171873, - 0.060514737060353416, - 0.1300490707687581, - 0.2209644342203595, - 0.33183107798610545, - 0.46090457201973895, - 0.6061533163549373, - 0.7652905806440315, - 0.9358105672558694, - 1.1150279291949814, - 1.3001201196214, - 1.4881719050949713, - 1.676221340542102, - 1.861306480892651, - 2.0405120927174307, - 2.211015629195353, - 2.370131743356648, - 2.515354637603621, - 2.64439758162961, - 2.7552289755163493, - 2.8461043892732194, - 2.9155940735344688, - 2.962605507555433, - 2.9864006289122282, - 2.9866074731815324, - 2.9632260400367434, - 2.916628293247826, - 2.8475522945855185, - 2.757090564141139, - 2.6466728506270902, - 2.518043583380969, - 2.373234361667627, - 2.2145319151404372, - 2.0444420407438453, - 1.8656500847945847, - 1.6809785934604577, - 1.4933427995174853, - 1.3057046473823983, - 1.1210260814756507, - 0.9422223345844745, - 0.7721159528954344, - 0.6133922827508425, - 0.4685571211290014, - 0.33989719772416593, - 0.2294441118497077, - 0.13894229289904575, - 0.069821489647858, - 0.02317422225821439, - -0.0002614474209479273, - -0.00011355553402159213, - 0.02361789768546757, - 0.07056094791476626, - 0.13997753283793452, - 0.23077513182592357, - 0.3415239956356475, - 0.47047969440686066, - 0.6156106283590899, - 0.7746300673308908, - 0.9450322138772314, - 1.1241317211884085, - 1.3091060426108012, - 1.497039944890517, - 1.684971483139734, - 1.8699387124747833, - 2.0490263996526736, - 2.2194119980382547, - 2.3784101608483494, - 2.523515090671401, - 2.652440057386842, - 2.7631534612629616, - 2.8539108724954048, - 2.923282541904651, - 2.970175948932508, - 2.9938530313414304, - 2.993941824894512, - 2.970442329451542, - 2.923726508968948, - 2.8545324254039235, - 2.7639525990342113, - 2.653416778758764, - 2.5246693941016876, - 2.379742044514268, - 2.2209214598364433, - 2.0507134371995157, - 1.8718033231061777, - 1.6870136639114133, - 1.499259692577521, - 1.311503353707805, - 1.1267065919096901, - 0.947784640156802, - 0.7775600448222575, - 0.6187181524353814, - 0.4737647601609425, - 0.3449865978799537, - 0.23441526509237576, - 0.14379519137850327, - 0.07455612570070476, - 0.027790588407881997, - 0.004236641535626237, - 0.00426624912636793, - 0.027879411133352516, - 0.0747041634206406, - 0.14400244385913194, - 0.23468173200644182, - 0.345312278806589, - 0.4741496545859347, - 0.6191622597508993, - 0.7780633643269935, - 0.9483471710559445, - 1.127328333314924, - 1.3121843046373138, - 1.4999998519559887, - 1.6878130305700254, - 1.872661895782664, - 2.0516312145380304, - 2.2218984403876485, - 2.380778226735417, - 2.525764776356505, - 2.654571359317492, - 2.7651663760736067, - 2.8558053970072663, - 2.9250586731260415, - 2.9718336840587165, - 2.9953923677546292, - 2.995362760163884, - 2.9717448613332307, - 2.924910635406116, - 2.8555981445266307, - 2.764899909159517, - 2.654245678390848, - 2.525379881931536, - 2.3803341194198557, - 2.2213951208829403, - 2.0510686836388374, - 1.8720401543773804, - 1.6871320796405487, - 1.4992596925775106, - 1.311384937978691, - 1.1264697606385095, - 0.9474293937174618, - 0.7770863837757784, - 0.618126077529777, - 0.4730542723311115, - 0.34415769824785325, - 0.2334679549670639, - 0.14272947225576654, - 0.07337199926355688, - 0.0264880565261838, - 0.002815706266247775, - 0.0027269127131706317, - 0.026221676007153513, - 0.07292803219927184, - 0.142107919347279, - 0.23266881719580323, - 0.34318097687592736, - 0.47189996890078356, - 0.6167941938638849, - 0.7755769219776543, - 0.945742356170527, - 1.12460515000694, - 1.3093427572070848, - 1.4970399448904952, - 1.6847347685434915, - 1.8694652836561279, - 2.0483162573592555, - 2.2184651433916383, - 2.3772265953435907, - 2.522094816177413, - 2.650783076146563, - 2.7612597758930333, - 2.851780485986078, - 2.920915457620158, - 2.96757217061083, - 2.991012563094241, - 2.9908646712073086, - 2.9671284951835752, - 2.920175999353247, - 2.8507452460471487, - 2.7599287559168832, - 2.6491562782351554, - 2.520172242899547, - 2.3750082497353002, - 2.2159510289560633, - 2.045506378066531, - 1.8663596439434023, - 1.681333373315037, - 1.4933427995174118, - 1.3053498675277995, - 1.1203165223268556, - 0.9411579972618103, - 0.7706968390797186, - 0.611618394683152, - 0.46642846161037826, - 0.3374137701161952, - 0.22660592007393532, - 0.13574934143736872, - 0.06627378354244401, - 0.019271767111381066, - -0.004518645446733333, - -0.004725489716041156, - 0.018651234630076827, - 0.06523956382908032, - 0.13430143612510298, - 0.2247443314491814, - 0.33513850111862503, - 0.4637395158330514, - 0.6085157763722329, - 0.7671805531346954, - 0.9372280492353438, - 1.115972918424868, - 1.3005926146094313, - 1.4881719050950126, - 1.6757488455541525, - 1.8603614916627207, - 2.0390946107379126, - 2.2091256567047606, - 2.3677692833393857, - 2.512519693790335, - 2.641090158497063, - 2.751449078287414, - 2.8418520239168688, - 2.9108692467657673, - 2.9574082268355273, - 2.980730902448323, - 2.980465309926927, - 2.956611449690729, - 2.9095412862557506, - 2.8399928821387332, - 2.749058758176989, - 2.638168663828947, - 2.509067029177997, - 2.3637854542350842, - 2.2046106693994396, - 2.0340484723615138, - 1.854784210183709, - 1.669640429779569, - 1.4815323646711738, - 1.2934219600209953, - 1.1082711609951965, - 0.9289952011267304, - 0.7584166273478501, - 0.5992207867465233, - 0.4539134770466746, - 0.3247814286882492, - 0.21385624172995074, - 0.12288234631073632, - 0.05328949195194031, - 0.006170199560969328, - -0.017737468267847306, - -0.018061546933552955, - 0.005197964075632749, - 0.05166910118221682, - 0.12061380281547533, - 0.21093954909145596, - 0.32121659151232573, - 0.4497005009629357, - 0.5943596784076645, - 0.752907394430115, - 0.9228378523301706, - 1.1014657060429882, - 1.2859684096597528, - 1.4734307306712349, - 1.66089072493456, - 1.845386448310272, - 2.024002668300288, - 2.1939168390141974, - 2.352443614412684, - 2.4970771978288804, - 2.62553085988654, - 2.7357730015981416, - 2.826059193903549, - 2.8949596883673614, - 2.9413819651754363, - 2.964587962834207, - 2.9642057178506853, - 2.940235230828467, - 2.893048466467758, - 2.8233834874694397, - 2.7323328148548596, - 2.6213261982664995, - 2.492108067971917, - 2.3467100241657715, - 2.187418797431289, - 2.0167401856430223, - 1.8373595360469555, - 1.6520993957404495, - 1.4638749984293329, - 1.2756482894597396, - 1.0903812141817886, - 0.9109890063117941, - 0.7402942129655474, - 0.5809821814146554, - 0.4355587095665244, - 0.30631052804443837, - 0.19526923709059835, - 0.10417926702726342, - 0.03447036755898991, - -0.012764940223419008, - -0.0367885935425301, - -0.03722862761419747, - -0.014085041743547674, - 0.03227020067500469, - 0.10109903825377911, - 0.19130895129168057, - 0.3014701914738721, - 0.4298383298680939, - 0.5743817676215434, - 0.7328137755005728, - 0.9026285569877356, - 1.0811407662008587, - 1.2655278574138644, - 1.452874598300053, - 1.640219044898811, - 1.8245992532535291, - 2.00309999104837, - 2.1728987125751247, - 2.3313100719772084, - 2.47582827276954, - 2.6041665857583265, - 2.7142934121382574, - 2.804464323031086, - 2.873249570183595, - 2.919556633963632, - 2.9426474530595357, - 2.9421500641602023, - 2.9180644680510497, - 2.8707626296140982, - 2.8009826117319, - 2.709816935607434, - 2.5986953510649267, - 2.469362288553347, - 2.3238493484488254, - 2.164443261516232, - 1.9936498258112927, - 1.8141543887612572, - 1.6287794976450845, - 1.4404403863495199, - 1.2520990004019295, - 1.0667172853335654, - 0.8872104750416503, - 0.7164011168229927, - 0.5569745581303371, - 0.4114365970516143, - 0.282073964391019, - 0.170918260571649, - 0.0797139160962377, - 0.009890680849958089, - -0.03745892389572458, - -0.061596835182958984, - -0.06215108804713966, - -0.039121681613041595, - 0.007119420905246407, - 0.07583415830025576, - 0.16593001105106997, - 0.2759772310230306, - 0.40423138946379467, - 0.5486608877007357, - 0.7069789966800797, - 0.8766799200640499, - 1.055078312150495, - 1.2393516273930807, - 1.42658463364452, - 1.6138153871240568, - 1.7980819440546165, - 1.9764690722995857, - 2.146154226330369, - 2.304452060469787, - 2.4488567784118107, - 2.577081651142021, - 2.6870950800341604, - 2.7771526363890517, - 2.84582457213254, - 2.892018367811378, - 2.914995962292721, - 2.9143853924443257, - 2.8901866592303396, - 2.8427717277113924, - 2.7728786609486074, - 2.681599980323622, - 2.570365435839003, - 2.440919458121999, - 2.2952936477273216, - 2.1357747355978915, - 1.9648685199675573, - 1.7852603484417777, - 1.5997727684775767, - 1.4113210141393147, - 1.2228670311327885, - 1.0373727651666291, - 0.8577534503158422, - 0.686831634055133, - 0.5272926640145965, - 0.38164233845969164, - 0.2521673883722396, - 0.1408994143525164, - 0.04958284708057016, - -0.020352563381100433, - -0.06781429558400526, - -0.09206428639318173, - -0.09273057066703448, - -0.06981314735342671, - -0.023683979489599105, - 0.044918871893660256, - 0.13490288745224444, - 0.24483831922806704, - 0.37298073864511944, - 0.5172985472076093, - 0.6755050160377776, - 0.8450943489742848, - 1.0233812004913556, - 1.207543025218426, - 1.3946645911845166, - 1.5817839547849768, - 1.7659391724182538, - 1.9442150121238067, - 2.113788928548744, - 2.2719755761915756, - 2.41626915892188, - 2.544382947900659, - 2.6542853446769463, - 2.7442319207271195, - 2.81279292815222, - 2.8588758476740908, - 2.8817426183350583, - 2.88102127717785, - 2.8567118253415646, - 2.809186228061619, - 2.7391825485739276, - 2.6477933084348226, - 2.536448257821389, - 2.4068918275354525, - 2.261155618306145, - 2.1015263612506248, - 1.9305098547770174, - 1.750791446665183, - 1.5651936845459526, - 1.3766318026577116, - 1.1880677468801624, - 1.0024634630957197, - 0.8227341855534069, - 0.651702461901329, - 0.49205363994303825, - 0.3462935181177794, - 0.2167088275805484, - 0.10533116910490019, - 0.01390497354417955, - -0.05614000886603994, - -0.1037112565042741, - -0.12807070606252022, - -0.12884639222641847, - -0.10603831377102725, - -0.060018433560966616, - 0.008475187545604779, - 0.09835003037709866, - 0.2081763471476913, - 0.3362097094538171, - 0.48041851897185495, - 0.6385160469961704, - 0.8079964975374969, - 0.9861745252419183, - 1.1702275849107178, - 1.3572404447447943, - 1.5442511613110348, - 1.7282977911794528, - 1.906465102561108, - 2.075930550274444, - 2.234008788989034, - 2.3781940227460114, - 2.5061995228771767, - 2.6159936911027524, - 2.705832099070015, - 2.7742849990506753, - 2.8202598719374046, - 2.8430186569431464, - 2.8421893912811242, - 2.8177720762608773, - 2.770138677288176, - 2.7000272577690883, - 2.6085303394301373, - 2.4970776726184147, - 2.367413688305851, - 2.2215699873912067, - 2.06183330116139, - 1.890709428194394, - 1.710883716439402, - 1.525178713696682, - 1.3365096543743071, - 1.147838484520674, - 0.9621271501877712, - 0.7822908857935841, - 0.6111522391550432, - 0.4513965582446622, - 0.3055296416704298, - 0.17583822075588978, - 0.06435389644317752, - -0.027178900245783885, - -0.09733041890724395, - -0.14500813775149235, - -0.16947399330231394, - -0.17035602007733458, - -0.1476542166837142, - -0.1017405458182322, - -0.033353068171267916, - 0.05641569725305151, - 0.16613600283652152, - 0.2940634203430832, - 0.43816635161607465, - 0.596158068117488, - 0.765532774024948, - 0.9436051241513226, - 1.127552573465131, - 1.314459890333928, - 1.5013651314910101, - 1.6853063536732942, - 1.8633683252582423, - 2.0327285012304075, - 2.1907015364258022, - 2.334781635051753, - 2.462682068605877, - 2.5723712389744646, - 2.6621047179705246, - 2.7304527580314666, - 2.7763228402155944, - 2.7989769039013, - 2.7980429864671756, - 2.7735210893880207, - 2.725783178234743, - 2.6555673165785296, - 2.5639660263106867, - 2.452409057943296, - 2.3226408426128575, - 2.1766929813826685, - 2.0168522057043976, - 1.8456243143202045, - 1.6656946553434033, - 1.479885776738776, - 1.2911129130782246, - 1.102338010573897, - 0.9165230154418841, - 0.7365831622636594, - 0.5653409990197799, - 0.40548187384644785, - 0.259511585514705, - 0.12971686551139142, - 0.018129314941930222, - -0.07350663500891202, - -0.1437612337744515, - -0.1915419594021438, - -0.2161107482531896, - -0.21709563468262227, - -0.19449661713518257, - -0.14868565814532197, - -0.08040081824125297, - 0.009265383734973709, - 0.1188832003271772, - 0.24670820346106834, - 0.39070879514167667, - 0.5485982469928059, - 0.7178707633533183, - 0.8958409991976044, - 1.079686409655483, - 1.2664917632553874, - 1.4532951168918828, - 1.637134527462817, - 1.8150947635061006, - 1.9843532801671855, - 2.1422247324426555, - 2.2862033247000664, - 2.41400232859756, - 2.5235901461814603, - 2.6132223494247206, - 2.6814691909248753, - 2.7272381518999613, - 2.7497911718880053, - 2.7487562884272307, - 2.7241335031518323, - 2.6762947817921, - 2.605978188078275, - 2.5142762440609, - 2.4026187004109274, - 2.272749988423623, - 2.1267017093210683, - 1.9667605947135078, - 1.7954324435014413, - 1.615402603956623, - 1.4294936242020317, - 1.2406207389675201, - 1.0517458946233091, - 0.8658310375433113, - 0.685791402466532, - 0.5144495375313772, - 0.35449079103125547, - 0.20842096189451004, - 0.07852678176541564, - -0.033160148093730524, - -0.12489539634127504, - -0.19524921225356134, - -0.24312907372148043, - -0.2677969169496741, - -0.26888077613672245, - -0.2463806495710919, - -0.20066849963105532, - -0.1324823866888724, - -0.04291482943058757, - 0.06660442484340663, - 0.19433094821430286, - 0.3382331428428058, - 0.49602428050797465, - 0.6651985657041438, - 0.8430706535606451, - 1.0268179993622752, - 1.2135253717923273, - 1.4002308279002156, - 1.5839724247382576, - 1.7618349309988226, - 1.9309958019818143, - 2.0887696928378956, - 2.232650808088625, - 2.3603524195463845, - 2.46984292941091, - 2.559377909809042, - 2.6275276134918153, - 2.673199521830579, - 2.695655574516702, - 2.6945238092414927, - 2.6698042277921625, - 2.6218687960518388, - 2.5514555779035164, - 2.459657095550212, - 2.347903099815408, - 2.2179380221466425, - 2.0717934639183557, - 1.9117561568925463, - 1.7403319001217057, - 1.5602060420295873, - 1.374201130890485, - 1.18523240158577, - 0.9962618006373558, - 0.8102512745697337, - 0.630116058273652, - 0.45867870003812067, - 0.298624548307313, - 0.15245940216033807, - 0.022469993391986853, - -0.08931207658514902, - -0.18114237627910396, - -0.25159115481612015, - -0.29956588993715605, - -0.32432851769706406, - -0.325507072144697, - -0.303101551418983, - -0.2574839177488488, - -0.1893922313572517, - -0.09991901078107006, - 0.009505996828089558, - 0.13713836370038246, - 0.2809464921453106, - 0.4386436540901715, - 0.6077240541779487, - 0.7855023476862348, - 0.9691559900476581, - 1.1557697500938515, - 1.3423816850219352, - 1.5260298520316535, - 1.7037990199632929, - 1.8728666442640192, - 2.030547380231524, - 2.174335432534739, - 2.3019440731329515, - 2.4113417043727114, - 2.5007838985275197, - 2.568840908494823, - 2.6144202157924568, - 2.6367837602580106, - 2.6355595797288642, - 2.610747676138164, - 2.5627200155148104, - 2.492214661887492, - 2.4003241376046796, - 2.2884781936351146, - 2.158421261571756, - 2.0121849429339105, - 1.8520559696284575, - 1.6805401408528673, - 1.5003228051752737, - 1.314226511014372, - 1.1251664933961816, - 0.9361046989865586, - 0.7500030744539169, - 0.5697768548329057, - 0.3982485885562877, - 0.23810362421175507, - 0.09184776102202818, - -0.0382322690751493, - -0.1501048645239758, - -0.24202559368939455, - -0.31256470555503535, - -0.3606296777191461, - -0.3854824460940475, - -0.38675104458628407, - -0.36443547119259323, - -0.3189076879998497, - -0.2509057550891002, - -0.1615221908555357, - -0.05218674230918491, - 0.07535616292161074, - 0.21907492728753564, - 0.3766828228569694, - 0.5456740544140805, - 0.7233632773769991, - 0.9069279473191706, - 1.0934528332127718, - 1.2799759923950096, - 1.4635354822060762, - 1.6412160716262834, - 1.8101952162424375, - 1.967787571492188, - 2.1114873421840463, - 2.239007800416461, - 2.348317348675442, - 2.4376715593735425, - 2.5056406855471143, - 2.551132208852821, - 2.573408069266851, - 2.572096304765029, - 2.5471969174188285, - 2.499081873395281, - 2.4284892368611444, - 2.3365115303025505, - 2.224578504826137, - 2.094434592162239, - 1.9481113939674097, - 1.7878956422860268, - 1.616293136452386, - 1.435989225171454, - 1.2498064569987597, - 1.0606600670968755, - 0.8715120022679268, - 0.685324209316769, - 0.5050119234138722, - 0.33339769312800327, - 0.17316686718278362, - 0.02682524493629762, - -0.10334044153826658, - -0.21529859054967804, - -0.3073047703279456, - -0.3779292297217418, - -0.4260794461944395, - -0.4510173555238185, - -0.452370991481989, - -0.43014035193137234, - -0.38469739882471327, - -0.3167801921090927, - -0.2274812500460182, - -0.11823031951171754, - 0.009228171998882748, - 0.152862627069585, - 0.31038631790218474, - 0.47929344941357566, - 0.656898677154931, - 0.840379456832301, - 1.0268205575500402, - 1.2132600367779172, - 1.3967359519883882, - 1.574333072293372, - 1.7432288534117304, - 1.9007379509127866, - 2.04435456973642, - 2.1717919821123615, - 2.281018590657981, - 2.3702899679164746, - 2.438176367055243, - 2.4835852698615284, - 2.5057786164419413, - 2.504384444902657, - 2.479402757445245, - 2.431205520366752, - 2.36053079796368, - 2.2684711128518478, - 2.156456216267209, - 2.0262305400694913, - 1.8798256860443816, - 1.7195283863652049, - 1.5478444404949268, - 1.3674591972671475, - 1.1811952053660795, - 0.9919677000821869, - 0.8027386283458118, - 0.6164699370899828, - 0.4360768616124636, - 0.26438195061004005, - 0.1040705529335039, - -0.042351531931917985, - -0.1725975717856913, - -0.2846359648098846, - -0.37672227910779904, - -0.44742676340150633, - -0.49565689502800736, - -0.5206746096389168, - -0.5221079408803049, - -0.4999568864887449, - -0.45459340829127753, - -0.38675556610956285, - -0.2975358780796993, - -0.18836409095273576, - -0.06098463209878223, - 0.082570901190928, - 0.24001578124284254, - 0.4088442130980402, - 0.5863708524323191, - 0.7697731550756761, - 0.9561358902563066, - 1.142497115567898, - 1.3258948886063537, - 1.503413978606988, - 1.6722318414120054, - 1.8296631327137272, - 1.9732020575746918, - 2.100561888347573, - 2.209711027772199, - 2.298905048514099, - 2.3667142038628164, - 2.4120459757274997, - 2.4341623043366356, - 2.4326912279180064, - 2.407632748794642, - 2.3593588333848348, - 2.2886075461061486, - 2.1964714096953806, - 2.0843801755091302, - 1.9540782755276287, - 1.807597311657187, - 1.6472240161910492, - 1.4754641887121995, - 1.2950031781743052, - 1.1086635333809851, - 0.9193604897421656, - 0.7300559943077289, - 0.5437119941295947, - 0.3632437246244513, - 0.19147373460782718, - 0.031087373049121514, - -0.11540956044803277, - -0.24573033356490742, - -0.3578433443656421, - -0.45000416083567063, - -0.5207830315793032, - -0.5690874338162328, - -0.5941793030807266, - -0.5956866729017389, - -0.5736095408989269, - -0.5283198687826547, - -0.46055571625798486, - -0.37140960134457535, - -0.26231127067748805, - -0.13500515151070003, - 0.008477158980410265, - 0.16584893323782027, - 0.3346043764180565, - 0.5120581443123274, - 0.6953876928654203, - 0.88167779142067, - 1.0679664976864658, - 1.2512918693729762, - 1.428738675830101, - 1.597484373014179, - 1.754843616731269, - 1.8983106121579052, - 2.025598631760327, - 2.1346760783915544, - 2.2237985248306433, - 2.291536224479943, - 2.3367966593614815, - 2.358841769816433, - 2.3572995941850223, - 2.3321701349025576, - 2.2838253584994024, - 2.2130033295050136, - 2.1207965707680088, - 2.008634833756425, - 1.878262550561712, - 1.7317113232014945, - 1.5712678840797982, - 1.399438032890679, - 1.2189071186981555, - 1.0324976904161063, - 0.8431249835650297, - 0.653750945304564, - 0.4673375227964045, - 0.2867999515670722, - 0.114960780541254, - -0.045494641202240615, - -0.1920605139505583, - -0.32245010527638185, - -0.43463181313512056, - -0.5268612054035878, - -0.5977085305779425, - -0.6460812657697454, - -0.6712413464053124, - -0.672816805905928, - -0.6508076417837053, - -0.6055858156416957, - -0.5378893870777851, - -0.44881087400473285, - -0.3397800229508501, - -0.2125412610634772, - -0.06912618541164564, - 0.08817847655258913, - 0.25686693009204403, - 0.43425383110345245, - 0.6175166356374358, - 0.8037401131426912, - 0.9899623214325137, - 1.1732213183223341, - 1.3506018732669873, - 1.5192814423270742, - 1.6765746814133142, - 1.8199757958065643, - 1.9471980580768147, - 2.056209871181132, - 2.1452668080022064, - 2.2129391220456984, - 2.258134295437046, - 2.280114268620415, - 2.278507080038878, - 2.253312732230431, - 2.20490319182787, - 2.134016523463002, - 2.0417452500864384, - 1.929519123268069, - 1.7990825752011834, - 1.65246720800469, - 1.4919597541840304, - 1.3200660135343443, - 1.1394713352204284, - 0.9529982682569724, - 0.7635620482649711, - 0.5741246225042296, - 0.38764793823658605, - 0.20704723108874618, - 0.03514505008461438, - -0.12537325559715162, - -0.2720018861445409, - -0.402454109031179, - -0.5146983221133549, - -0.606990093169343, - -0.6778996705968293, - -0.7263345314089464, - -0.7515566109339804, - -0.7531939424953147, - -0.7312465235073368, - -0.6860863154755744, - -0.6184513779006202, - -0.529434228598232, - -0.42046461399967855, - -0.29328696115559183, - -0.1499328670386868, - 0.007310940995463498, - 0.17593866830579116, - 0.3532649708846428, - 0.5364673048786996, - 0.7226304398319836, - 0.9087924336529961, - 1.091991344252424, - 1.2693119411798597, - 1.4379316805905877, - 1.5951652184899214, - 1.7385067602528852, - 1.8656695785435455, - 1.9746220764128823, - 2.0636198268372614, - 2.131233083415807, - 2.176369328367191, - 2.198290502228608, - 2.196624643536031, - 2.171371754920062, - 2.1229038031060083, - 2.0519588528178696, - 1.9596294270982173, - 1.8473452776089956, - 1.7168508366348956, - 1.5701777063862354, - 1.4096126194599634, - 1.2376613757418895, - 1.0570093244877126, - 0.8704790148029722, - 0.6809856823987271, - 0.4914912746250115, - 0.30495773883389626, - 0.12430031074161205, - -0.04765846053828348, - -0.2082332257377667, - -0.3549181849557004, - -0.4854266055766999, - -0.5977268853683128, - -0.6900745920203468, - -0.7610399738420994, - -0.8095305077585798, - -0.8348081290101919, - -0.8365008708325861, - -0.8146087305526839, - -0.7695036695886335, - -0.7019237473540677, - -0.6129614815777781, - -0.5040466186043053, - -0.3769235853980424, - -0.23362397884529146, - -0.07643452621546151, - 0.09213897793588122, - 0.26941118968693467, - 0.4525595652697979, - 0.6386688743136621, - 0.8247771748120705, - 1.0079225247604966, - 1.185189693792866, - 1.3537561381491983, - 1.510936513918841, - 1.654225026560563, - 1.7813349488224466, - 1.8902346838389463, - 1.9791798046695726, - 2.0467405649968384, - 2.091824447122066, - 2.1136933916652483, - 2.111975437244827, - 2.08667058657367, - 2.038150806459141, - 1.9671541617070498, - 1.8747731754416481, - 1.7624375994063022, - 1.6318918659669315, - 1.4851675774146877, - 1.3245514664274916, - 1.1525493329715832, - 0.9718465263832656, - 0.7852655958479856, - 0.5957217771566929, - 0.4061770177394863, - 0.21959326502769533, - 0.03888575481672867, - -0.1331229637003335, - -0.2937475411770937, - -0.44048217763351905, - -0.5710401403756304, - -0.683389827093013, - -0.7757868053973571, - -0.8468013235200407, - -0.8953408583086322, - -0.920667344926104, - -0.9224088165309277, - -0.9005652703730754, - -0.8555086677939769, - -0.7879770681307428, - -0.6990629890358073, - -0.5901961767776828, - -0.46312105824488065, - -0.3198692302479534, - -0.16272741998096013, - 0.005798578075770104, - 0.1830234200755652, - 0.36612456232520924, - 0.5521867745284801, - 0.7382481147534612, - 0.9213466410694886, - 1.0985671231846819, - 1.2670870174127777, - 1.4242209799164047, - 1.5674632162278512, - 1.694526999168281, - 1.8033807319447928, - 1.892279987689693, - 1.959795020157945, - 2.0048333117230563, - 2.0266568030769863, - 2.0248935329099584, - 1.9995435040064202, - 1.9509786832450438, - 1.8799371355027672, - 1.7875113839748562, - 1.6751311804752285, - 1.5445409574403, - 1.397772317231596, - 1.237111992596775, - 1.0650657835723285, - 0.8843190395638997, - 0.6976943098262782, - 0.508106830219698, - 0.3185185482432068, - 0.1318914113967355, - -0.048859344455671715, - -0.22091117005261104, - -0.3815787159798337, - -0.5283561821892074, - -0.6589568359192514, - -0.7713490747921501, - -0.8637884663522607, - -0.9348452587641238, - -0.9834269288085232, - -1.0087954115818374, - -1.0105787401762671, - -0.988776911775678, - -0.9437618876556404, - -0.8762717270875403, - -0.787398947658406, - -0.678573295571656, - -0.5515391976505972, - -0.4083282506410652, - -0.2512271816727697, - -0.0827417851614331, - 0.09444259511037242, - 0.27750341551303315, - 0.46352544581446, - 0.6495467441457685, - 0.8326053686396944, - 1.0097860890674504, - 1.1782663618054412, - 1.3353608430788662, - 1.4785637384824617, - 1.6055883208994222, - 1.7144029935987497, - 1.8032633297745022, - 1.8707395832430476, - 1.9157392364391255, - 1.937524230115748, - 1.9357226030239039, - 1.910334358008622, - 1.861731462008895, - 1.7906519799618636, - 1.6981884351226206, - 1.5857705793647041, - 1.4551428451842119, - 1.308336835001773, - 1.1476392816239194, - 0.9755559851461679, - 0.7947722950325462, - 0.6081107605962193, - 0.41848661775579865, - 0.2288618140678446, - 0.04219829709009096, - -0.13858869725572234, - -0.310676619651295, - -0.471380120625185, - -0.6181934000726914, - -0.7488297251756479, - -0.8612574934997672, - -0.9537322725334617, - -1.0248243103853973, - -1.073441083780656, - -1.0988445277601802, - -1.1006626753609796, - -1.078895523711935, - -1.0339150340338854, - -0.9664592655435558, - -0.8776207357738564, - -0.768829190873987, - -0.6418290576133661, - -0.49865193268438474, - -0.3415845431631538, - -0.1731326834121537, - 0.0040183028386811155, - 0.1870458720127124, - 0.3730347939302746, - 0.5590231267749772, - 0.7420489287314043, - 0.9191969696226778, - 1.087644705876573, - 1.244706793770019, - 1.387877438948785, - 1.5148699143468025, - 1.6236526232840505, - 1.7124811390049617, - 1.779925715376016, - 1.8248938348822275, - 1.84664743832621, - 1.844814564508593, - 1.819395216323721, - 1.7707613607597619, - 1.6996510628027008, - 1.6071568457562608, - 1.4947084615424795, - 1.3640503427056583, - 1.2172140917143615, - 1.0564864414228978, - 0.8843731919743146, - 0.7035596928798536, - 0.5168684935000016, - 0.3272148297999651, - 0.137560649382924, - -0.049132100146747945, - -0.2299481828214012, - -0.4020650492768284, - -0.5627973499955813, - -0.7096392848277364, - -0.8403041209098154, - -0.9527602557624696, - -1.0452632568293945, - -1.1163833721746528, - -1.1650280784789098, - -1.19045931073911, - -1.192305101948331, - -1.170565449191819, - -1.1256123136469856, - -1.0581837544873367, - -0.9693722892028156, - -0.8606076638998283, - -0.7336343053054916, - -0.5904838100697496, - -0.43344290522662277, - -0.26501738509687217, - -0.08789259336883838, - 0.09510892642232205, - 0.28107194413791764, - 0.46703451800254525, - 0.6500347062416334, - 0.8271572787183805, - 0.9955796919010655, - 1.1526166021065947, - 1.2957622150202885, - 1.4227298036158171, - 1.5314877712524315, - 1.6202916912135008, - 1.6877118174044707, - 1.7326556323489393, - 1.7543850768879008, - 1.7525281898601106, - 1.7270849741978513, - 1.6784273969269847, - 1.6072935230709207, - 1.5147758759706145, - 1.4023042075852388, - 1.271622950495656, - 1.1247637072070638, - 0.9640132106102156, - 0.7918772608838419, - 0.6110412075755278, - 0.4243276000810994, - 0.23465167440102044, - 0.04497537817400454, - -0.14173934096090277, - -0.3225772470013998, - -0.49471579054869613, - -0.6554696220510816, - -0.802332941324835, - -0.9330190154724864, - -1.0454962419812688, - -1.1380201882615766, - -1.2091611023442912, - -1.2578264608773408, - -1.2832781988250257, - -1.2851443491480292, - -1.2634249088994594, - -1.2184918392247646, - -1.1510831992658752, - -1.0622915064811715, - -0.9535465069458856, - -0.8265926273561552, - -0.6834614643310799, - -0.5264397448741714, - -0.3580332632761226, - -0.18092736319486902, - 0.0020554118641556186, - 0.1879998317916039, - 0.3739439548417417, - 0.5569258392691698, - 0.7340302549657407, - 0.9024346584286872, - 1.059453706003013, - 1.2025816034024723, - 1.3295316236287862, - 1.4382721700687018, - 1.5270588160332577, - 1.5944618154551868, - 1.6393886508850697, - 1.6611012631907602, - 1.659227691237564, - 1.6337679379841326, - 1.5850939704824236, - 1.5139438537817036, - 1.4214101112486817, - 1.3089224948678406, - 1.1782254372452001, - 1.0313505409110981, - 0.8705845387808536, - 0.6984332310575951, - 0.517581967313387, - 0.3308532969678823, - 0.14116245604545186, - -0.04852860779163612, - -0.2352579468811443, - -0.4161103251976357, - -0.588263193319231, - -0.7490312016719503, - -0.8959085500494384, - -1.0266085055322578, - -1.1390994655856659, - -1.2316369975982213, - -1.3027913495794872, - -1.3514699981561908, - -1.3769348782715651, - -1.378814022865587, - -1.3571074289708318, - -1.3121870577124741, - -1.2447909682124079, - -1.1560116779090643, - -1.0472789328583403, - -0.9203371597368122, - -0.7772179551444569, - -0.6202080460661101, - -0.45181322677360514, - -0.2747188409064512, - -0.09174743195214476, - 0.0941857699981632, - 0.280118823216452, - 0.46308978597455536, - 0.640183428181861, - 0.8085772063524513, - 0.9655857768481133, - 1.108703345399248, - 1.2356431850237923, - 1.3443736991245694, - 1.4331504610285357, - 1.500543724683995, - 1.5454609726568256, - 1.5671641458301353, - 1.565281283084079, - 1.5398123873919936, - 1.491129425820229, - 1.419970463432361, - 1.3274280236089935, - 1.2149318583482498, - 1.0842264002698894, - 0.9373432519173509, - 0.7765691462190222, - 0.6044098833907767, - 0.42355081301720054, - 0.2368144845303492, - 0.04711613396690555, - -0.14258229099934372, - -0.32931884269449185, - -0.5101782850814671, - -0.6823380687274788, - -0.8431128440476151, - -0.9899968108245973, - -1.1207032361288296, - -1.2332005174152325, - -1.3257442220623226, - -1.3969045980700066, - -1.4455891220554506, - -1.4710597289526133, - -1.4729444516924413, - -1.4512432872986851, - -1.4063281968879964, - -1.3389372395738866, - -1.2501629327866675, - -1.141435022574365, - -1.0144979356058639, - -0.8713832684739761, - -0.7143777481561838, - -0.5459871689172673, - -0.3688968743903895, - -0.18592940805635214, - -3.324645620836751e-14, - 0.18592940805637076, - 0.36889687439057073, - 0.545987168917561, - 0.7143777481563477, - 0.8713832684741267, - 1.0144979356060626, - 1.1414350225744831, - 1.2501629327867467, - 1.3389372395738954, - 1.406328196888003, - 1.4512432872986898, - 1.472944451692447, - 1.4710597289526, - 1.445589122055405, - 1.396904598069937, - 1.3257442220622417, - 1.233200517415105, - 1.1207032361287141, - 0.9899968108245856, - 0.8431128440476019, - 0.6823380687274644, - 0.5101782850813301, - 0.3293188426942263, - 0.1425822909991563, - -0.04711613396709513, - -0.23681448453066378, - -0.4235508130174254, - -0.6044098833909133, - -0.7765691462190365, - -0.9373432519173641, - -1.084226400269901, - -1.2149318583482858, - -1.3274280236090945, - -1.4199704634324584, - -1.49112942582033, - -1.53981238739203, - -1.565281283084091, - -1.5671641458301195, - -1.5454609726568163, - -1.5005437246839886, - -1.4331504610285273, - -1.3443736991245336, - -1.2356431850236445, - -1.1087033453990833, - -0.9655857768479613, - -0.8085772063522495, - -0.6401834281816485, - -0.4630897859743741, - -0.28011882321639214, - -0.09418576999814443, - 0.09174743195216338, - 0.2747188409065093, - 0.4518132267737798, - 0.620208046066274, - 0.7772179551446772, - 0.9203371597369479, - 1.0472789328584597, - 1.15601167790923, - 1.244790968212457, - 1.3121870577124808, - 1.3571074289708362, - 1.3788140228655892, - 1.376934878271547, - 1.3514699981561327, - 1.3027913495794288, - 1.2316369975981198, - 1.139099465585498, - 1.0266085055321366, - 0.8959085500493966, - 0.7490312016719369, - 0.5882631933192166, - 0.4161103251975386, - 0.23525794688092005, - 0.048528607791448686, - -0.14116245604568334, - -0.33085329696811294, - -0.5175819673135706, - -0.6984332310578094, - -0.870584538780945, - -1.0313505409111112, - -1.178225437245212, - -1.3089224948678764, - -1.421410111248784, - -1.5139438537818202, - -1.5850939704824833, - -1.6337679379841683, - -1.6592276912375823, - -1.6611012631907487, - -1.6393886508850606, - -1.5944618154551802, - -1.5270588160332492, - -1.4382721700686416, - -1.3295316236285877, - -1.202581603402336, - -1.0594537060028264, - -0.902434658428412, - -0.7340302549655675, - -0.5569258392689885, - -0.3739439548416812, - -0.18799983179158514, - -0.002055411864137019, - 0.1809273631948872, - 0.358033263276256, - 0.526439744874372, - 0.6834614643312671, - 0.8265926273562914, - 0.9535465069460289, - 1.062291506481297, - 1.1510831992659385, - 1.218491839224771, - 1.2634249088994636, - 1.2851443491480314, - 1.2832781988250082, - 1.2578264608773047, - 1.2091611023442317, - 1.1380201882614598, - 1.045496241981167, - 0.9330190154723657, - 0.8023329413246678, - 0.6554696220510683, - 0.49471579054868164, - 0.32257724700138446, - 0.14173934096076163, - -0.0449753781742352, - -0.23465167440133716, - -0.42432760008128684, - -0.611041207575752, - -0.791877260884138, - -0.9640132106103452, - -1.124763707207077, - -1.2716229504956678, - -1.402304207585249, - -1.5147758759707575, - -1.6072935230710228, - -1.6784273969270433, - -1.7270849741978935, - -1.7525281898601288, - -1.7543850768878897, - -1.7326556323489142, - -1.6877118174044643, - -1.6202916912134924, - -1.531487771252421, - -1.4227298036157219, - -1.2957622150201522, - -1.1526166021063742, - -0.9955796919009022, - -0.827157278718206, - -0.6500347062413703, - -0.4670345180024021, - -0.2810719441378989, - -0.09510892642230345, - 0.08789259336885658, - 0.2650173850970441, - 0.4334429052268245, - 0.5904838100699015, - 0.7336343053056569, - 0.860607663900031, - 0.9693722892029148, - 1.0581837544874015, - 1.125612313646992, - 1.1705654491918234, - 1.1923051019483335, - 1.1904593107390973, - 1.1650280784788736, - 1.116383372174552, - 1.0452632568292972, - 0.9527602557623687, - 0.8403041209096654, - 0.7096392848275693, - 0.5627973499955345, - 0.40206504927681397, - 0.22994818282138588, - 0.049132100146689395, - -0.1375606493831954, - -0.3272148298001546, - -0.516868493500189, - -0.7035596928801193, - -0.884373191974491, - -1.0564864414230644, - -1.2172140917144112, - -1.3640503427056703, - -1.4947084615424895, - -1.6071568457562897, - -1.6996510628027817, - -1.770761360759832, - -1.819395216323783, - -1.8448145645086063, - -1.8466474383261935, - -1.8248938348821717, - -1.7799257153759993, - -1.7124811390049528, - -1.6236526232840398, - -1.5148699143467619, - -1.3878774389485529, - -1.2447067937698346, - -1.0876447058764092, - -0.9191969696224639, - -0.7420489287311818, - -0.5590231267747922, - -0.373034793930214, - -0.1870458720126938, - -0.004018302838662953, - 0.17313268341220978, - 0.34158454316331777, - 0.49865193268453545, - 0.641829057613565, - 0.7688291908741058, - 0.8776207357739562, - 0.9664592655436706, - 1.0339150340339072, - 1.0788955237119398, - 1.100662675360982, - 1.098844527760174, - 1.0734410837806085, - 1.0248243103853278, - 0.9537322725333809, - 0.86125749349964, - 0.7488297251754484, - 0.6181934000725535, - 0.4713801206251388, - 0.3106766196512805, - 0.13858869725570694, - -0.04219829709019145, - -0.22886181406807454, - -0.41848661775598683, - -0.6081107605965337, - -0.7947722950327711, - -0.9755559851463436, - -1.1476392816241203, - -1.308336835001859, - -1.4551428451842234, - -1.5857705793647143, - -1.698188435122629, - -1.7906519799619236, - -1.8617314620089802, - -1.910334358008659, - -1.9357226030239159, - -1.937524230115732, - -1.9157392364390913, - -1.8707395832430054, - -1.8032633297744938, - -1.7144029935987393, - -1.60558832089941, - -1.4785637384823547, - -1.3353608430787143, - -1.178266361805239, - -1.009786089067238, - -0.8326053686395138, - -0.6495467441455397, - -0.4635254458141876, - -0.2775034155130145, - -0.09444259511035424, - 0.08274178516145052, - 0.25122718167289565, - 0.40832825064131834, - 0.5515391976507658, - 0.6785732955717756, - 0.7873989476585264, - 0.87627172708764, - 0.943761887655687, - 0.9887769117756823, - 1.0105787401762694, - 1.0087954115818374, - 0.9834269288084777, - 0.9348452587640643, - 0.8637884663521797, - 0.771349074792003, - 0.6589568359191299, - 0.528356182189069, - 0.3815787159796477, - 0.22091117005259656, - 0.04885934445565631, - -0.1318914113967516, - -0.3185185482433523, - -0.50810683021993, - -0.6976943098265074, - -0.8843190395640832, - -1.0650657835725428, - -1.237111992597054, - -1.397772317231715, - -1.544540957440312, - -1.6751311804752387, - -1.7875113839748646, - -1.8799371355028787, - -1.9509786832451184, - -1.9995435040064562, - -2.024893532909977, - -2.0266568030769747, - -2.0048333117230226, - -1.9597950201579035, - -1.892279987689684, - -1.8033807319447823, - -1.6945269991682688, - -1.5674632162277442, - -1.4242209799162542, - -1.2670870174125384, - -1.0985671231845078, - -0.9213466410693074, - -0.7382481147531915, - -0.5521867745282922, - -0.36612456232514873, - -0.18302342007554712, - -0.005798578075752639, - 0.162727419981048, - 0.3198692302481406, - 0.46312105824501687, - 0.5901961767778263, - 0.6990629890359331, - 0.787977068130822, - 0.8555086677940448, - 0.9005652703731003, - 0.9224088165309299, - 0.9206673449261038, - 0.8953408583086186, - 0.8468013235199823, - 0.7757868053972188, - 0.683389827092891, - 0.5710401403755099, - 0.44048217763328545, - 0.29374754117690727, - 0.13312296370028243, - -0.03888575481674412, - -0.21959326502771143, - -0.4061770177395886, - -0.5957217771570102, - -0.7852655958481736, - -0.9718465263834479, - -1.152549332971839, - -1.3245514664276572, - -1.4851675774148407, - -1.6318918659669766, - -1.7624375994063122, - -1.8747731754416566, - -1.9671541617070725, - -2.0381508064591993, - -2.086670586573711, - -2.111975437244845, - -2.113693391665238, - -2.09182444712202, - -2.046740564996745, - -1.979179804669549, - -1.890234683838936, - -1.7813349488224341, - -1.6542250265605163, - -1.5109365139185849, - -1.353756138148999, - -1.1851896937926911, - -1.0079225247601906, - -0.8247771748118429, - -0.6386688743134756, - -0.4525595652697374, - -0.2694111896869166, - -0.09213897793586376, - 0.07643452621551342, - 0.23362397884544225, - 0.37692358539817855, - 0.5040466186044787, - 0.6129614815778774, - 0.7019237473541475, - 0.769503669588717, - 0.8146087305526988, - 0.8365008708325883, - 0.8348081290101919, - 0.8095305077585777, - 0.7610399738420355, - 0.6900745920202509, - 0.5977268853682107, - 0.48542660557655015, - 0.3549181849555333, - 0.20823322573761316, - 0.04765846053815648, - -0.1243003107416275, - -0.3049577388339124, - -0.49149127462502806, - -0.6809856823988735, - -0.8704790148031603, - -1.0570093244880192, - -1.2376613757421049, - -1.4096126194601295, - -1.5701777063864903, - -1.7168508366350368, - -1.847345277609006, - -1.9596294270982257, - -2.0519588528178763, - -2.1229038031060625, - -2.1713717549201244, - -2.1966246435360435, - -2.198290502228597, - -2.176369328367141, - -2.1312330834157494, - -2.0636198268372024, - -1.974622076412872, - -1.8656695785435333, - -1.7385067602528712, - -1.595165218489802, - -1.4379316805904239, - -1.2693119411796456, - -1.0919913442522018, - -0.9087924336528104, - -0.7226304398317538, - -0.5364673048785132, - -0.3532649708846248, - -0.1759386683057737, - -0.007310940995447053, - 0.14993286703880337, - 0.2932869611557897, - 0.4204646139997976, - 0.529434228598332, - 0.618451377900751, - 0.686086315475648, - 0.731246523507366, - 0.7531939424953167, - 0.7515566109339802, - 0.7263345314089441, - 0.6778996705967553, - 0.6069900931692622, - 0.5146983221132289, - 0.40245410903097834, - 0.272001886144403, - 0.12537325559699872, - -0.035145050084816054, - -0.20704723108876177, - -0.38764793823660215, - -0.5741246225042461, - -0.7635620482651162, - -0.9529982682572022, - -1.1394713352206538, - -1.3200660135345204, - -1.4919597541842315, - -1.6524672080048792, - -1.799082575201321, - -1.9295191232681084, - -2.041745250086447, - -2.134016523463009, - -2.204903191827886, - -2.2533127322304676, - -2.2785070800388905, - -2.280114268620393, - -2.2581342954370065, - -2.2129391220456416, - -2.1452668080020696, - -2.056209871181081, - -1.9471980580768027, - -1.8199757958065506, - -1.6765746814132632, - -1.5192814423268717, - -1.3506018732666956, - -1.1732213183221534, - -0.9899623214323274, - -0.8037401131424187, - -0.6175166356372499, - -0.43425383110339316, - -0.25686693009202677, - -0.08817847655257273, - 0.06912618541172603, - 0.21254126106364696, - 0.33978002295096865, - 0.4488108740048534, - 0.5378893870778851, - 0.6055858156417526, - 0.6508076417837458, - 0.6728168059059401, - 0.6712413464053122, - 0.646081265769743, - 0.5977085305779217, - 0.526861205403507, - 0.43463181313497334, - 0.32245010527626183, - 0.1920605139504199, - 0.04549464120198278, - -0.11496078054145545, - -0.2867999515671268, - -0.4673375227964207, - -0.6537509453045807, - -0.8431249835651322, - -1.0324976904164203, - -1.218907118698339, - -1.399438032890894, - -1.5712678840800778, - -1.7317113232016466, - -1.8782625505618507, - -2.008634833756465, - -2.120796570768017, - -2.21300332950502, - -2.283825358499418, - -2.3321701349025936, - -2.357299594185035, - -2.3588417698164212, - -2.3367966593614473, - -2.291536224479869, - -2.223798524830549, - -2.134676078391524, - -2.025598631760315, - -1.8983106121578914, - -1.7548436167312538, - -1.5974843730139765, - -1.4287386758299272, - -1.2512918693727948, - -1.0679664976861956, - -0.8816777914204823, - -0.6953876928652345, - -0.5120581443121034, - -0.3346043764180392, - -0.16584893323780392, - -0.00847715898039507, - 0.13500515151080347, - 0.2623112706776327, - 0.37140960134474554, - 0.4605557162580642, - 0.528319868782712, - 0.5736095408989768, - 0.5956866729017509, - 0.5941793030807265, - 0.5690874338162304, - 0.5207830315792985, - 0.45000416083558503, - 0.35784334436552023, - 0.24573033356478682, - 0.11540956044786274, - -0.03108737304930778, - -0.1914737346079926, - -0.3632437246245857, - -0.5437119941296109, - -0.7300559943077455, - -0.9193604897421824, - -1.1086635333811297, - -1.2950031781744875, - -1.475464188712455, - -1.6472240161912153, - -1.8075973116573407, - -1.954078275527857, - -2.0843801755092546, - -2.1964714096953886, - -2.2886075461061557, - -2.359358833384839, - -2.407632748794672, - -2.4326912279180295, - -2.434162304336625, - -2.4120459757274544, - -2.366714203862722, - -2.2989050485140194, - -2.209711027772124, - -2.1005618883475607, - -1.973202057574678, - -1.8296631327137118, - -1.6722318414118764, - -1.5034139786068144, - -1.3258948886061304, - -1.1424971155676702, - -0.9561358902561199, - -0.7697731550754479, - -0.5863708524321364, - -0.408844213098023, - -0.2400157812428262, - -0.0825709011909128, - 0.060984632098886354, - 0.18836409095290932, - 0.2975358780797998, - 0.38675556610964174, - 0.4545934082913613, - 0.4999568864887795, - 0.5221079408803161, - 0.5206746096389165, - 0.4956568950280049, - 0.4474267634015018, - 0.37672227910777123, - 0.2846359648097827, - 0.17259757178554155, - 0.04235153193168892, - -0.10407055293365623, - -0.2643819506102446, - -0.43607686161275705, - -0.6164699370900397, - -0.8027386283458284, - -0.9919677000822037, - -1.1811952053661385, - -1.367459197267454, - -1.5478444404951426, - -1.719528386365371, - -1.879825686044568, - -2.026230540069662, - -2.156456216267329, - -2.2684711128518815, - -2.360530797963687, - -2.431205520366757, - -2.4794027574452535, - -2.5043844449026693, - -2.50577861644193, - -2.4835852698614778, - -2.438176367055185, - -2.3702899679163956, - -2.28101859065781, - -2.1717919821122997, - -2.0443545697364063, - -1.9007379509127715, - -1.743228853411676, - -1.5743330722931568, - -1.396735951988084, - -1.2132600367777315, - -1.0268205575498102, - -0.8403794568319884, - -0.6568986771547489, - -0.4792934494135184, - -0.31038631790216864, - -0.15286262706957, - -0.00922817199881118, - 0.11823031951186597, - 0.2274812500461182, - 0.3167801921091883, - 0.38469739882478604, - 0.4301403519314069, - 0.4523709914820002, - 0.4510173555238177, - 0.42607944619443705, - 0.37792922972173715, - 0.3073047703279179, - 0.21529859054957717, - 0.10334044153809122, - -0.02682524493643526, - -0.1731668671829365, - -0.33339769312824297, - -0.5050119234140482, - -0.6853242093168264, - -0.8715120022679435, - -1.0606600670968929, - -1.2498064569987763, - -1.4359892251715949, - -1.6162931364525621, - -1.7878956422862275, - -1.9481113939676673, - -2.094434592162377, - -2.224578504826283, - -2.336511530302701, - -2.428489236861151, - -2.4990818733952853, - -2.5471969174188307, - -2.572096304765036, - -2.5734080692668293, - -2.5511322088527812, - -2.505640685547057, - -2.4376715593734417, - -2.3483173486753213, - -2.2390078004163705, - -2.1114873421840326, - -1.9677875714921729, - -1.8101952162424213, - -1.6412160716260686, - -1.4635354822058944, - -1.2799759923947396, - -1.0934528332125417, - -0.9069279473189853, - -0.7233632773767358, - -0.5456740544139035, - -0.3766828228570278, - -0.2190749272874516, - -0.07535616292162627, - 0.052186742309300024, - 0.16152219085568148, - 0.25090575508916385, - 0.3189076879999026, - 0.36443547119264336, - 0.3867510445863006, - 0.3854824460940355, - 0.3606296777191381, - 0.31256470555505683, - 0.24202559368938287, - 0.1501048645238288, - 0.038232269075000255, - -0.09184776102222832, - -0.23810362421197712, - -0.3982485885564149, - -0.5697768548331601, - -0.7500030744540984, - -0.936104698986491, - -1.1251664933961985, - -1.3142265110144313, - -1.5003228051754547, - -1.6805401408531218, - -1.852055969628662, - -2.0121849429339935, - -2.158421261571956, - -2.2884781936352647, - -2.400324137604756, - -2.4922146618875347, - -2.5627200155148047, - -2.6107476761381507, - -2.635559579728871, - -2.6367837602580053, - -2.614420215792406, - -2.5688409084947397, - -2.500783898527425, - -2.4113417043726066, - -2.3019440731328356, - -2.1743354325347877, - -2.0305473802314404, - -1.8728666442639283, - -1.7037990199632351, - -1.5260298520313893, - -1.342381685021664, - -1.1557697500936217, - -0.9691559900473876, - -0.7855023476859708, - -0.6077240541778135, - -0.43864365409004236, - -0.2809464921452595, - -0.13713836370043103, - -0.009505996828082147, - 0.099919010781195, - 0.1893922313573263, - 0.25748391774893276, - 0.30310155141902867, - 0.3255070721447023, - 0.3243285176970464, - 0.2995658899371586, - 0.25159115481611033, - 0.1811423762790609, - 0.089312076585165, - -0.022469993392111795, - -0.15245940216053738, - -0.29862454830743, - -0.45867870003836103, - -0.6301160582739072, - -0.8102512745699566, - -0.9962618006374155, - -1.1852324015858298, - -1.3742011308904174, - -1.560206042029603, - -1.7403319001219604, - -1.9117561568926758, - -2.0717934639185778, - -2.2179380221468423, - -2.3479030998155035, - -2.459657095550309, - -2.551455577903565, - -2.6218687960518174, - -2.6698042277921807, - -2.6945238092414985, - -2.695655574516696, - -2.6731995218305293, - -2.627527613491747, - -2.559377909808957, - -2.469842929410764, - -2.3603524195462398, - -2.2326508080886445, - -2.088769692837812, - -1.9309958019818367, - -1.7618349309988042, - -1.5839724247379934, - -1.4002308279000721, - -1.2135253717921395, - -1.0268179993620055, - -0.8430706535605041, - -0.6651985657038904, - -0.49602428050788167, - -0.3382331428428597, - -0.19433094821429303, - -0.06660442484336587, - 0.04291482943068378, - 0.13248238668898787, - 0.2006684996311393, - 0.24638064957112135, - 0.26888077613673955, - 0.2677969169496561, - 0.2431290737214658, - 0.19524921225355146, - 0.12489539634125248, - 0.0331601480937672, - -0.07852678176554016, - -0.20842096189467715, - -0.35449079103133874, - -0.5144495375316175, - -0.6857914024667464, - -0.8658310375434954, - -1.0517458946235374, - -1.2406207389674946, - -1.429493624201964, - -1.615402603956722, - -1.7954324435014968, - -1.9667605947137479, - -2.1267017093212903, - -2.2727499884237314, - -2.402618700411043, - -2.5142762440610475, - -2.6059781880783603, - -2.676294781792131, - -2.7241335031518457, - -2.7487562884272263, - -2.749791171887989, - -2.7272381518999103, - -2.681469190924802, - -2.6132223494246047, - -2.523590146181314, - -2.41400232859747, - -2.2862033246998994, - -2.1422247324426076, - -1.9843532801672437, - -1.8150947635060815, - -1.637134527462595, - -1.453295116891696, - -1.266491763255115, - -1.0796864096552539, - -0.8958409991975056, - -0.7178707633530647, - -0.5485982469926387, - -0.3907087951416649, - -0.24670820346099293, - -0.11888320032719056, - -0.009265383734877869, - 0.08040081824136926, - 0.1486856581453686, - 0.19449661713523325, - 0.21709563468263904, - 0.21611074825318305, - 0.19154195940211338, - 0.143761233774436, - 0.07350663500894146, - -0.018129314941984845, - -0.12971686551148634, - -0.2595115855147804, - -0.4054818738466698, - -0.5653409990200194, - -0.7365831622638757, - -0.9165230154421494, - -1.1023380105740834, - -1.2911129130781567, - -1.4798857767388778, - -1.665694655343462, - -1.845624314320219, - -2.016852205704638, - -2.176692981382857, - -2.3226408426129916, - -2.4524090579434707, - -2.5639660263108124, - -2.6555673165785736, - -2.7257831782347894, - -2.773521089388018, - -2.7980429864671708, - -2.798976903901293, - -2.77632284021557, - -2.7304527580314035, - -2.662104717970409, - -2.57237123897439, - -2.4626820686057034, - -2.334781635051555, - -2.1907015364257916, - -2.0327285012303884, - -1.8633683252581867, - -1.6853063536732757, - -1.50136513149074, - -1.314459890333655, - -1.127552573464987, - -0.9436051241510581, - -0.7655327740246947, - -0.5961580681172876, - -0.43816635161595485, - -0.294063420343037, - -0.1661360028365641, - -0.05641569725295509, - 0.033353068171367795, - 0.1017405458183166, - 0.14765421668376477, - 0.17035602007735123, - 0.16947399330229634, - 0.14500813775144122, - 0.09733041890724399, - 0.02717890024581328, - -0.06435389644323214, - -0.17583822075593006, - -0.30552964167062946, - -0.45139655824488367, - -0.61115223915517, - -0.7822908857937609, - -0.9621271501880364, - -1.1478384845208187, - -1.3365096543744523, - -1.5251787136967416, - -1.7108837164393362, - -1.890709428194408, - -2.0618333011615935, - -2.221569987391356, - -2.3674136883060504, - -2.4970776726185893, - -2.608530339430218, - -2.7000272577692046, - -2.7701386772881857, - -2.8177720762608747, - -2.8421893912811305, - -2.8430186569431455, - -2.820259871937364, - -2.7742849990505913, - -2.7058320990699194, - -2.615993691102698, - -2.506199522877003, - -2.3781940227458453, - -2.2340087889889153, - -2.0759305502743537, - -1.9064651025611319, - -1.7282977911795179, - -1.5442511613108474, - -1.3572404447446496, - -1.1702275849104469, - -0.9861745252416538, - -0.8079964975373608, - -0.6385160469960087, - -0.48041851897170007, - -0.33620970945386586, - -0.20817634714762526, - -0.09835003037706365, - -0.008475187545602489, - 0.06001843356105034, - 0.10603831377107309, - 0.1288463922264243, - 0.1280707060625027, - 0.10371125650422251, - 0.056140008866013544, - -0.013904973544222848, - -0.10533116910488412, - -0.21670882758050497, - -0.3462935181179201, - -0.4920536399432237, - -0.6517024619014966, - -0.8227341855536616, - -1.0024634630959426, - -1.188067746880265, - -1.3766318026579425, - -1.5651936845459278, - -1.7507914466651981, - -1.9305098547771125, - -2.1015263612507544, - -2.2611556183062946, - -2.4068918275356523, - -2.536448257821484, - -2.64779330843497, - -2.7391825485740444, - -2.8091862280616553, - -2.856711825341562, - -2.8810212771778563, - -2.8817426183350623, - -2.858875847674051, - -2.8127929281521515, - -2.744231920727077, - -2.6542853446768, - -2.5443829479004854, - -2.4162691589217102, - -2.271975576191391, - -2.1137889285487668, - -1.9442150121238693, - -1.7659391724181537, - -1.5817839547848327, - -1.3946645911842435, - -1.2075430252181554, - -1.0233812004911318, - -0.8450943489741122, - -0.6755050160375383, - -0.5172985472074543, - -0.37298073864516834, - -0.24483831922800103, - -0.13490288745225504, - -0.044918871893657134, - 0.023683979489683246, - 0.06981314735345598, - 0.09273057066704089, - 0.09206428639316416, - 0.06781429558398028, - 0.02035256338101575, - -0.04958284708060884, - -0.1408994143524799, - -0.25216738837225466, - -0.3816423384597336, - -0.5272926640147519, - -0.6868316340553726, - -0.8577534503160558, - -1.037372765166729, - -1.2228670311330596, - -1.4113210141395887, - -1.5997727684776786, - -1.7852603484418772, - -1.9648685199675346, - -2.135774735597904, - -2.2952936477275427, - -2.4409194581221696, - -2.570365435839178, - -2.681599980323769, - -2.7728786609487086, - -2.8427717277114457, - -2.890186659230369, - -2.9143853924443266, - -2.914995962292725, - -2.892018367811337, - -2.845824572132498, - -2.777152636388936, - -2.6870950800340143, - -2.5770816511419303, - -2.4488567784116704, - -2.3044520604695666, - -2.1461542263303555, - -1.9764690722994895, - -1.798081944054558, - -1.6138153871240384, - -1.4265846336442471, - -1.2393516273928515, - -1.0550783121503147, - -0.8766799200637962, - -0.7069789966798765, - -0.5486608877006528, - -0.40423138946368664, - -0.27597723102304417, - -0.16593001105106472, - -0.07583415830021188, - -0.007119420905199195, - 0.03912168161307136, - 0.06215108804715644, - 0.06159683518294708, - 0.037458923895672916, - -0.009890680850042771, - -0.07971391609624003, - -0.17091826057166268, - -0.2820739643910842, - -0.4114365970516598, - -0.5569745581305587, - -0.716401116823232, - -0.8872104750417846, - -1.0667172853338305, - -1.2520990004022008, - -1.4404403863496655, - -1.6287794976452288, - -1.8141543887613163, - -1.9936498258112296, - -2.164443261516322, - -2.3238493484489418, - -2.4693622885534223, - -2.5986953510651007, - -2.7098169356075603, - -2.8009826117319756, - -2.870762629614183, - -2.9180644680510905, - -2.9421500641601983, - -2.9426474530595295, - -2.919556633963639, - -2.873249570183532, - -2.8044643230309703, - -2.714293412138136, - -2.6041665857582026, - -2.4758282727693413, - -2.3313100719770237, - -2.1728987125749244, - -2.0030999910482743, - -1.8245992532535538, - -1.6402190448987923, - -1.45287459829978, - -1.2655278574136366, - -1.0811407662005945, - -0.9026285569874821, - -0.7328137755004445, - -0.5743817676213225, - -0.429838329867953, - -0.30147019147391485, - -0.1913089512916753, - -0.1010990382537508, - -0.03227020067495161, - 0.014085041743598675, - 0.037228627614214374, - 0.03678859354252327, - 0.012764940223367757, - -0.03447036755905894, - -0.10417926702732803, - -0.195269237090653, - -0.30631052804442005, - -0.43555870956647497, - -0.5809821814148108, - -0.7402942129656738, - -0.9109890063120485, - -1.0903812141820532, - -1.2756482894599683, - -1.4638749984295212, - -1.6520993957406365, - -1.8373595360468897, - -2.0167401856429596, - -2.187418797431379, - -2.3467100241658185, - -2.4921080679721164, - -2.621326198266674, - -2.73233281485494, - -2.8233834874695156, - -2.8930484664678424, - -2.940235230828492, - -2.9642057178506915, - -2.9645879628342056, - -2.9413819651754487, - -2.8949596883673507, - -2.826059193903453, - -2.7357730015980364, - -2.625530859886366, - -2.4970771978287143, - -2.352443614412601, - -2.193916839013958, - -2.024002668300273, - -1.8453864483102531, - -1.660890724934458, - -1.4734307306712595, - -1.285968409659567, - -1.101465706042724, - -0.9228378523299552, - -0.752907394429876, - -0.5943596784074436, - -0.44970050096276587, - -0.3212165915122893, - -0.21093954909140078, - -0.12061380281548337, - -0.05166910118221653, - -0.005197964075581665, - 0.018061546933564487, - 0.017737468267829987, - -0.006170199561020745, - -0.05328949195198274, - -0.1228823463108215, - -0.2138562417300012, - -0.324781428688206, - -0.4539134770467495, - -0.5992207867466424, - -0.7584166273479404, - -0.9289952011269846, - -1.1082711609954194, - -1.2934219600211825, - -1.4815323646714469, - -1.6696404297797982, - -1.8547842101836856, - -2.0340484723616097, - -2.204610669399419, - -2.3637854542350953, - -2.509067029178196, - -2.638168663829042, - -2.7490587581770853, - -2.83999288213885, - -2.9095412862558243, - -2.9566114496907803, - -2.9804653099269385, - -2.9807309024483275, - -2.9574082268355193, - -2.9108692467657358, - -2.8418520239167684, - -2.7514490782872674, - -2.641090158496889, - -2.512519693790231, - -2.3677692833391646, - -2.209125656704521, - -2.039094610737898, - -1.8603614916627023, - -1.675748845554093, - -1.4881719050949953, - -1.3005926146091604, - -1.115972918424644, - -0.9372280492352485, - -0.7671805531344561, - -0.6085157763720446, - -0.46373951583291806, - -0.3351385011185303, - -0.22474433144919237, - -0.13430143612513162, - -0.06523956382904839, - -0.01865123463006825, - 0.004725489716058226, - 0.004518645446716138, - -0.019271767111405838, - -0.06627378354250733, - -0.1357493414374851, - -0.22660592007403152, - -0.3374137701162607, - -0.4664284616104204, - -0.6116183946830974, - -0.7706968390798861, - -0.9411579972620644, - -1.12031652232708, - -1.3053498675280704, - -1.493342799517685, - -1.6813333733151816, - -1.8663596439436265, - -2.0455063780665883, - -2.2159510289560043, - -2.3750082497353113, - -2.5201722428997178, - -2.649156278235271, - -2.75992875591703, - -2.8507452460472495, - -2.9201759993532788, - -2.9671284951836263, - -2.9908646712073255, - -2.991012563094234, - -2.9675721706108105, - -2.920915457620168, - -2.851780485985993, - -2.7612597758928867, - -2.650783076146473, - -2.522094816177214, - -2.3772265953433696, - -2.218465143391437, - -2.0483162573591196, - -1.8694652836560701, - -1.6847347685435583, - -1.497039944890392, - -1.3093427572068987, - -1.1246051500067988, - -0.945742356170273, - -0.7755769219774148, - -0.6167941938637, - -0.4718999689005844, - -0.3431809768758034, - -0.23266881719583946, - -0.14210791934723516, - -0.07292803219925065, - -0.026221676007123496, - -0.0027269127131535204, - -0.0028157062662596405, - -0.02648805652622427, - -0.07337199926364127, - -0.14272947225586236, - -0.23346795496709383, - -0.34415769824791886, - -0.47305427233109154, - -0.6181260775297943, - -0.7770863837758684, - -0.9474293937175962, - -1.1264697606386929, - -1.3113849379789624, - -1.499259692577656, - -1.6871320796408198, - -1.872040154377645, - -2.0510686836388556, - -2.2213951208829537, - -2.3803341194199064, - -2.5253798819315447, - -2.654245678391022, - -2.7648999091596633, - -2.855598144526695, - -2.9249106354062, - -2.971744861333282, - -2.995362760163896, - -2.995392367754623, - -2.9718336840587076, - -2.9250586731260624, - -2.855805397007181, - -2.7651663760734855, - -2.6545713593174263, - -2.525764776356306, - -2.3807782267352318, - -2.221898440387481, - -2.051631214537777, - -1.8726618957826484, - -1.6878130305700925, - -1.499999851955886, - -1.3121843046372546, - -1.1273283333146593, - -0.9483471710556902, - -0.7780633643268647, - -0.6191622597507506, - -0.47414965458573566, - -0.3453122788064943, - -0.23468173200636167, - -0.14400244385910377, - -0.07470416342066141, - -0.027879411133354473, - -0.004266249126350735, - -0.00423664153564339, - -0.027790588407933206, - -0.07455612570078915, - -0.14379519137856267, - -0.2344152650925223, - -0.3449865978799609, - -0.4737647601608933, - -0.618718152435399, - -0.7775600448223089, - -0.9477846401569789, - -1.1267065919099548, - -1.3115033537080332, - -1.4992596925776236, - -1.6870136639116844, - -1.871803323106402, - -2.0507134371995708, - -2.220921459836533, - -2.3797420445142494, - -2.5246693941016964, - -2.653416778758938, - -2.7639525990342912, - -2.85453242540404, - -2.9237265089690325, - -2.9704423294515716, - -2.993941824894519, - -2.9938530313414295, - -2.9701759489325212, - -2.9232825419046193, - -2.8539108724953812, - -2.7631534612629474, - -2.6524400573866673, - -2.5235150906712014, - -2.378410160848161, - -2.2194119980380154, - -2.0490263996524196, - -1.869938712474685, - -1.6849714831396319, - -1.4970399448904568, - -1.3091060426108683, - -1.1241317211882274, - -0.9450322138770156, - -0.7746300673307285, - -0.6156106283588687, - -0.47047969440669063, - -0.3415239956355819, - -0.23077513182579762, - -0.13997753283794284, - -0.07056094791476597, - -0.02361789768544842, - 0.00011355553403349927, - 0.0002614474209308576, - -0.023174222258265473, - -0.0698214896479003, - -0.13894229289916205, - -0.22944411184985408, - -0.33989719772422733, - -0.46855712112901815, - -0.6133922827508895, - -0.7721159528953754, - -0.9422223345846512, - -1.1210260814758735, - -1.3057046473825005, - -1.4933427995177584, - -1.6809785934607284, - -1.8656500847948072, - -2.0444420407440607, - -2.214531915140417, - -2.3732343616675724, - -2.5180435833810444, - -2.646672850627181, - -2.7570905641412855, - -2.847552294585635, - -2.9166282932478995, - -2.9632260400367727, - -2.9866074731815493, - -2.9864006289122216, - -2.9626055075554456, - -2.915594073534437, - -2.8461043892732327, - -2.7552289755162436, - -2.6443975816294354, - -2.5153546376035165, - -2.3701317433564926, - -2.2110156291951135, - -2.040512092717296, - -1.861306480892428, - -1.6762213405420425, - -1.488171905095039, - -1.3001201196213832, - -1.1150279291947571, - -0.9358105672556964, - -0.7652905806437922, - -0.6061533163547163, - -0.460904572019631, - -0.33183107798593103, - -0.22096443422021295, - -0.13004907076871436, - -0.06051473706032173, - -0.013453953910157967, - 0.010395216179936273, - 0.010660808701322216, - -0.012657176765407438, - -0.05918677655047877, - -0.12818992899073545, - -0.21857411410992528, - -0.3289095833180655, - -0.45745190740750785, - -0.6021694872506215, - -0.7607755933387338, - -0.9307644288796126, - -1.109450647716035, - -1.2940117038472216, - -1.4815323646714558, - -1.6690506859538603, - -1.8536047234631678, - -2.0322792446089206, - -2.202251703408492, - -2.3608367537311308, - -2.5055285988173264, - -2.6340405091991936, - -2.7443408857972207, - -2.8346852994589753, - -2.903644001657408, - -2.950124472486397, - -2.9733886503604317, - -2.9730645716947084, - -2.9491522370009604, - -2.902023610887593, - -2.832416755963571, - -2.741424193158537, - -2.6304756720231772, - -2.501315622733287, - -2.355975645391878, - -2.196742470490589, - -2.0261218958119045, - -1.84679926851057, - -1.6615971355924282, - -1.4734307306711982, - -1.285261999001727, - -1.100052885842536, - -0.9207186248181316, - -0.7500817629532854, - -0.5908276474280666, - -0.44546207605803667, - -0.31627177937544937, - -0.2052883575309753, - -0.11425624075538579, - -0.04460517866193582, - 0.00257230774992101, - 0.026538155794064586, - 0.02692040077757321, - 0.00371904209686158, - -0.04269395676247664, - -0.11158053432141381, - -0.20184817078783635, - -0.31206711775570656, - -0.4404929462013811, - -0.5850940571812919, - -0.7435837213707865, - -0.9134561421609801, - -1.0920259735792606, - -1.2764706698079962, - -1.4638749984295505, - -1.651277015392751, - -1.835714776649823, - -2.014273049793924, - -2.1841292890261688, - -2.342598148399247, - -2.4871738313371288, - -2.615569608555367, - -2.7257538811578383, - -2.815982220175454, - -2.8848248772644633, - -2.9311893327019964, - -2.9543375250857444, - -2.953897491014052, - -2.9298692311817924, - -2.882624710380401, - -2.812901991401866, - -2.721793595358797, - -2.6107292719847353, - -2.481453451638463, - -2.335997734605809, - -2.1766488515610654, - -2.0059126004694914, - -1.8264743286685035, - -1.6411565833464765, - -1.4528745982998683, - -1.2645903189660421, - -1.0792656907858156, - -0.8998159475661927, - -0.7290636365143083, - -0.5696941049924032, - -0.42421315099871115, - -0.29490750524727627, - -0.1838087680710183, - -0.09266136988288894, - -0.0228950604781894, - 0.024397638961718843, - 0.048478665568736534, - 0.04897605446805947, - 0.02588980487424311, - -0.020408119908797137, - -0.08917965858384677, - -0.17933229154042193, - -0.28943627055409243, - -0.41774716678276413, - -0.5622333814645009, - -0.720608185455673, - -0.8903657823291902, - -1.0688208262936245, - -1.2531507717126087, - -1.4404403863498003, - -1.6277277263350043, - -1.8120508478015371, - -1.9904945185237588, - -2.16023619288382, - -2.3185905251148764, - -2.463051718822259, - -2.591333044902048, - -2.7014029046388544, - -2.7915168692444112, - -2.8602451905554593, - -2.9064953490296785, - -2.929529283445328, - -2.928975030581114, - -2.9048325913123105, - -2.857473930610616, - -2.7876371114483227, - -2.6964146551182204, - -2.585236311534015, - -2.4558465112342436, - -2.3102768546850543, - -2.1508140727404044, - -1.9799639635458657, - -1.800411874618202, - -1.614980353325672, - -1.4265846336443997, - -1.2381866611913521, - -1.0527483815867176, - -0.8731850288174683, - -0.7023191502696464, - -0.5428360934849983, - -0.3972416566410286, - -0.2678225706309372, - -0.15661043596688107, - -0.06534968324088232, - 0.004529937572856246, - 0.051935905114019534, - 0.07613015633554794, - 0.07674072618393525, - 0.05376761369497654, - 0.007582781993928839, - -0.06107570780062442, - -0.15111533625663706, - -0.2611063553281274, - -0.38930433635158834, - -0.5336776807429775, - -0.691939659537276, - -0.8615844764855163, - -1.039926785974039, - -1.2241440425450798, - -1.4113210141397436, - -1.5984957570657987, - -1.7827063276345383, - -1.9610374937981283, - -2.1306667101159036, - -2.2889086309990834, - -2.433257460230352, - -2.561426468883228, - -2.671384058419637, - -2.7613858002287937, - -2.8300019463243804, - -2.876139977341391, - -2.8990618322351063, - -2.898395547961223, - -2.8741411255719056, - -2.8266705302157322, - -2.756721825041755, - -2.6653875315194044, - -2.5540973997389047, - -2.424595860415648, - -2.2789145141917695, - -2.119340092098123, - -1.9483783924561606, - -1.7687147629589175, - -1.5831717511509558, - -1.394664591184461, - -1.206155228852041, - -1.0206056099503757, - -0.8409309686418269, - -0.6699538524880422, - -0.5103596092068752, - -0.3646540371510575, - -0.2351238673894748, - -0.12380070060970165, - -0.0324289675789777, - 0.037561581553235385, - 0.08507842525129385, - 0.10938350029320626, - 0.11010484145040911, - 0.08724244758377431, - 0.041168281643686105, - -0.027379595425964076, - -0.11730866436780334, - -0.2271891773105016, - -0.35527670576502396, - -0.4995396513217488, - -0.6576912851900685, - -0.8272258112951115, - -1.005457884197382, - -1.189564958613349, - -1.3766318026580329, - -1.5636964728131089, - -1.7477970255638549, - -1.9260182290356735, - -2.0955375379620427, - -2.25366960692764, - -2.397908639888491, - -2.5259679080914954, - -2.6358158131719653, - -2.7257079266923387, - -2.7942145008394155, - -2.8402430164211685, - -2.863055412565764, - -2.862279726401843, - -2.837915959154301, - -2.7903360761443845, - -2.7202781406937273, - -2.628834674444156, - -2.517435427658629, - -2.3878248312244517, - -2.2420344859560677, - -2.082351123056572, - -1.9112805410193112, - -1.7315080877094207, - -1.5458563108433117, - -1.3572404447447606, - -1.1686224353781203, - -0.9829642287116374, - -0.8031810590790727, - -0.6320954742136087, - -0.4723928220043855, - -0.3265789009751736, - -0.19694044236603364, - -0.08550904703554234, - 0.005970854078224286, - 0.07606951065477537, - 0.12369440098796827, - 0.14810746168511935, - 0.14893672734713892, - 0.1261821966644522, - 0.08021583241715467, - 0.011775695378902662, - -0.07804569536310796, - -0.1878185921076741, - -0.31579856653537525, - -0.4599540204067579, - -0.6179982251008511, - -0.7874253847124276, - -0.9655501539715384, - -1.1495499877640993, - -1.336509654374478, - -1.5234672104535985, - -1.7074607126558854, - -1.8855749292757906, - -2.0549873152158087, - -2.21301252522932, - -2.3571447634410942, - -2.485097301266821, - -2.594838540510371, - -2.684624052902348, - -2.7530240907982173, - -2.7989461351739386, - -2.8216521253259663, - -2.82077009855091, - -2.79630005624161, - -2.7486139638871387, - -2.678449884976753, - -2.5869003413201233, - -2.4753950833475002, - -2.34567854211367, - -2.1997823186003744, - -2.0399931441778314, - -1.8688168175066275, - -1.6889386866188878, - -1.5031812993977465, - -1.3144598903336606, - -1.1257364055581598, - -0.9399727912055413, - -0.7600842817761878, - -0.5888934251697782, - -0.42908556944117693, - -0.28316651328086423, - -0.15342298809477492, - -0.04188659490726879, - 0.049698235177707634, - 0.11990175167396441, - 0.16763143270978276, - 0.19214921472697788, - 0.19308313216109235, - 0.1704331835373424, - 0.12457133147057095, - 0.05623563656948899, - -0.033481382243759794, - -0.14314997743251393, - -0.2710257208423349, - -0.41507701439834455, - -0.5730171296439103, - -0.7423402708381783, - -0.9203610928757667, - -1.1042570508061713, - -1.2911129130782886, - -1.477966736506968, - -1.661856577909936, - -1.839867205745922, - -2.0091760750806786, - -2.1670978408310537, - -2.3111267072853225, - -2.4389759460224436, - -2.5486139590090886, - -2.6382963181391617, - -2.7065932759309743, - -2.752412313523264, - -2.7750153703750864, - -2.774030483945626, - -2.749457655790154, - -2.7016688515600533, - -2.6314021349067795, - -2.5397500278020804, - -2.4281422808381095, - -2.298323325231615, - -2.1523247621260646, - -1.9924333230531666, - -1.8211548068350578, - -1.641174561665232, - -1.455315135587909, - -1.2664917632551849, - -1.0776663909590964, - -0.8918009649949228, - -0.7118107200239844, - -0.5405182041066132, - -0.380608765458045, - -0.23458820292925703, - -0.1047432480864738, - 0.006894497885863604, - 0.0985806037234845, - 0.1688853187805674, - 0.21671612102545107, - 0.24133494674026826, - 0.24236983020104108, - 0.21982076977351575, - 0.17405972791327096, - 0.1058247650696574, - 0.016208400006040666, - -0.09335961990010405, - -0.22113486665315146, - -0.3650857423367911, - -0.5229255186529642, - -0.6921484000193958, - -0.8700690414889642, - -1.0538648982692778, - -1.2406207389676471, - -1.4273746205563587, - -1.6111646000113002, - -1.7890754459488136, - -1.9582846135922196, - -2.1161067580158086, - -2.260036083665296, - -2.3877858622764565, - -2.4973244959733933, - -2.5869075568068545, - -2.6551052974518914, - -2.7008251992039316, - -2.7233292016786192, - -2.7222453424915303, - -2.697573623354246, - -2.6496860100742503, - -2.579320566459187, - -2.4875698146365535, - -2.3758635053543253, - -2.245946069984897, - -2.0998491098271748, - -1.9398593565683941, - -1.7684826091859436, - -1.5884042160282936, - -1.4024467252947233, - -1.2135253717921892, - -1.024602101967368, - -0.8386388622703003, - -0.6585508875167667, - -0.4871607259212629, - -0.3271537258533028, - -0.18103568631792416, - -0.051093339035176905, - 0.06064171465637909, - 0.15242504333913565, - 0.22282689621363416, - 0.2707547510948214, - 0.2954705441115679, - 0.29660230938676224, - 0.2741500451331923, - 0.22848571365355105, - 0.16034737524448073, - 0.07082754851676307, - -0.03864401930463167, - -0.16632290037627395, - -0.31017749693402585, - -0.4679210808319846, - -0.6370478566398763, - -0.8148724795618663, - -0.998572404957667, - -1.1852324015857478, - -1.371890526570256, - -1.5555848370378644, - -1.733400101755995, - -1.9025137760989064, - -2.060240515291847, - -2.2040745239311095, - -2.331729073902986, - -2.4411725674820017, - -2.5306605768690598, - -2.5987633548892606, - -2.644388382988227, - -2.6667976009312255, - -2.6656190464835596, - -2.6408527215063193, - -2.592870591956477, - -2.522410721790836, - -2.4305656332859846, - -2.3187650773389743, - -2.1887534854710236, - -2.042562459129627, - -1.882478730150612, - -1.711008097659768, - -1.5308359101536575, - -1.3447847159801705, - -1.1557697500936501, - -0.9667529590889394, - -0.7806962895637587, - -0.6005149764812582, - -0.4290315682032618, - -0.26893141324698305, - -0.12272031076398986, - 0.0073150073781861474, - 0.11914293969454284, - 0.2110190546207133, - 0.2815136012106527, - 0.32953405713293116, - 0.3543423583702545, - 0.35556653889939394, - 0.33320659678720266, - 0.28763449419058296, - 0.21958829126053697, - 0.13016050646235156, - 0.02078088687564858, - -0.10680613980133999, - -0.2505689759495284, - -0.4082208935680633, - -0.5772560973709777, - -0.75498924270749, - -0.9385977850817022, - -1.1251664933962227, - -1.3117334249194363, - -1.4953366369220267, - -1.6730608983151887, - -1.842083664617053, - -1.99971959119648, - -2.1434628827927527, - -2.271026811435884, - -2.3803797795432615, - -2.4697773594587416, - -2.537789804150326, - -2.5833245952062347, - -2.605643672534232, - -2.604375074041955, - -2.579518801732716, - -2.5314468217054964, - -2.4608971980589534, - -2.368962453211492, - -2.2570723382017417, - -2.126971284692266, - -1.9806908942719441, - -1.820517898917576, - -1.6489580978957599, - -1.4686968398444846, - -1.282556673251747, - -1.09345283321255, - -0.9043472664620781, - -0.7182019197382441, - -0.5379320281440709, - -0.3663601401817367, - -0.2061716045077653, - -0.059872220413318536, - 0.07025128009466465, - 0.182167295391839, - 0.27413139377472484, - 0.3447138241583419, - 0.39282206407256026, - 0.4177180493614323, - 0.41902981386323357, - 0.3967573555065187, - 0.35127263631007455, - 0.2833137162869128, - 0.19397311376439436, - 0.08468057568459245, - -0.04281947039177639, - -0.1864954269832182, - -0.3440605662256119, - -0.5130090929704367, - -0.6906556627037334, - -0.8741777310661512, - -1.0606600670968525, - -1.2471407282007825, - -1.4306577717847748, - -1.6082959668960952, - -1.777232769188936, - -1.934782834167456, - -2.078440366706975, - -2.20591863897278, - -2.3151860535175244, - -2.404498182820163, - -2.472425279983689, - -2.517874826730941, - -2.5401087631044503, - -2.5387551271462545, - -2.513813920993949, - -2.4656571108806054, - -2.3950227610389048, - -2.303003394021044, - -2.1910287609992207, - -2.060843293769369, - -1.9144785940540456, - -1.7542213939628113, - -1.5825774928953555, - -1.402232239622479, - -1.216008182764729, - -1.0268205575497553, - -0.8376313108450497, - -0.6514023895203302, - -0.4710490288111793, - -0.2993937773510861, - -0.13912198392831776, - 0.007260552034233966, - 0.13746709839874496, - 0.2494660534093865, - 0.341512985231765, - 0.4121781426501935, - 0.4603690030638893, - 0.4853475021863377, - 0.48674167372560995, - 0.4645515154800981, - 0.4191489893386233, - 0.35127215518443555, - 0.26201353121513804, - 0.1528028642435615, - 0.025384581700985967, - -0.11820971906017097, - -0.2756933103047335, - -0.444560397013039, - -0.6221256347995683, - -0.8055664794334069, - -0.9919677000821414, - -1.178367354278731, - -1.3618034995579253, - -1.5393609050949029, - -1.7082170266709547, - -1.8656865199181238, - -2.009263589838862, - -2.1366615087254015, - -2.2458486792572834, - -2.335080674040298, - -2.4029277463039205, - -2.448297377897361, - -2.4704515089893593, - -2.469018177747942, - -2.443997386436589, - -2.3957611014140348, - -2.3250473870384623, - -2.232948765987398, - -2.1208949895580806, - -1.9906304896717515, - -1.844186868175441, - -1.68385085730345, - -1.5121282565799203, - -1.3317044148998447, - -1.1454018810080429, - -0.9561358902560865, - -0.7668683896350525, - -0.5805613261383163, - -0.4001299351248553, - -0.22839676535131015, - -0.06804716572913358, - 0.07841306419591443, - 0.20869719216346622, - 0.32077361629510914, - 0.41289790463411347, - 0.48364030584268947, - 0.531908297197916, - 0.5569638142916393, - 0.558434890710243, - 0.5363215241306976, - 0.4909956763205609, - 0.4231954070420142, - 0.33401323437168534, - 0.2248789050016783, - 0.09753684624268005, - -0.04598134467292406, - -0.20338894013052106, - -0.3721801452303307, - -0.5496696157066634, - -0.7330348074482484, - -0.9193604897423113, - -1.1056847202405007, - -1.2890455565973507, - -1.4665277681067894, - -1.6353088106686853, - -1.7927033400337877, - -1.9362055613227986, - -2.063528746946144, - -2.1726412997015117, - -2.2617987923125282, - -2.3295714781261037, - -2.3748668391091297, - -2.3969468155475555, - -2.395439445726512, - -2.370344732026371, - -2.322034640922646, - -2.251247236890068, - -2.159075042722394, - -2.0469478098333447, - -1.9166099702598807, - -1.7700931259648673, - -1.6096840092983768, - -1.4378884198999153, - -1.2573917067797513, - -1.0710164187978513, - -0.8816777914205146, - -0.6923377717534307, - -0.5059583069050014, - -0.3254546323480285, - -0.15364929695346558, - 0.006772350253272261, - 0.15330450961265418, - 0.2836604487507261, - 0.3958085656756736, - 0.4880044283175571, - 0.5588182852255592, - 0.6071576135639218, - 0.6322843488118379, - 0.6338265244432308, - 0.6117841380227937, - 0.5665291512059973, - 0.4987996236430524, - 0.4096880732990898, - 0.3006242467543705, - 0.1733525712086436, - 0.029904643782821025, - -0.12743280801940404, - -0.29615398940886617, - -0.4735735562304513, - -0.6568689644836021, - -0.8431249835651534, - -1.0293796712372718, - -1.2126710852641391, - -1.3900839950493102, - -1.5587958566021634, - -1.7161213257825505, - -1.859554607820226, - -1.9868089752346285, - -2.095852830932136, - -2.1849417477445834, - -2.2526459791274442, - -2.2978730071556206, - -2.3198847722229567, - -2.3183093127223158, - -2.2931466311415885, - -2.244768694063625, - -2.1739135660702744, - -2.0816737700622507, - -1.9694790575600236, - -1.8390738607070523, - -1.6924897815726965, - -1.5320135526132026, - -1.3601509735740822, - -1.17958739357098, - -0.9931453615699306, - -0.8037401131423019, - -0.6143335954995003, - -0.42788775585442224, - -0.24731782978477992, - -0.07544636626630145, - 0.08504128557117495, - 0.2316393259641633, - 0.3620610224342256, - 0.47427477288608344, - 0.566536145146096, - 0.6374153876597837, - 0.6858199774883617, - 0.7110118500078733, - 0.7126190385893793, - 0.6906415406949324, - 0.6454513178774706, - 0.5777864296850912, - 0.48873939398069527, - 0.3797399572427141, - 0.2525325465692194, - 0.10914875897956976, - -0.048124678123687634, - -0.21678197005247118, - -0.39413777275270334, - -0.5773695423244458, - -0.7635620482650303, - -0.949753348436999, - -1.1329815007044663, - -1.3103312745708853, - -1.478980126145503, - -1.6362427113875873, - -1.7796132356261967, - -1.9068049714799786, - -2.015786321953892, - -2.1048128599788005, - -2.172454839108595, - -2.2176197415164394, - -2.2395695076942848, - -2.2379321761329383, - -2.2127077494179748, - -2.1642681942297504, - -2.0933515752473424, - -2.0010504154687867, - -1.8887944665112364, - -1.7583281606149228, - -1.6116830999457072, - -1.4511460170561334, - -1.279222711787733, - -1.098598533352357, - -0.9120960308112575, - -0.7226304398316166, - -0.5331637077200468, - -0.34665778178445317, - -0.1660278976975907, - 0.005903395470128206, - 0.16645074849454827, - 0.3131083615178284, - 0.443589501967403, - 0.5558625676543186, - 0.6481831263109934, - 0.7191214262896546, - 0.7675849445582206, - 0.7928356163996759, - 0.7945014750922305, - 0.7725825180052548, - 0.7274507065993416, - 0.6598441003302509, - 0.5708552169688796, - 0.4619138029018316, - 0.3347642851354855, - 0.1914382605979088, - 0.03422245660043627, - -0.13437733225999668, - -0.31167576202021324, - -0.49485028887038146, - -0.6809856823987215, - -0.8671200005578014, - -1.0502913013017148, - -1.2275843542237685, - -1.3961766155226254, - -1.5533827412469199, - -1.696696936815019, - -1.8238324749344454, - -1.9327577586988993, - -2.021728361127817, - -2.0893145358633527, - -2.134423765166794, - -2.156317989618069, - -2.154625247795665, - -2.1293455423726537, - -2.0808508401166326, - -2.009879205793922, - -1.9175231624892748, - -1.8052124619065089, - -1.6746915363724315, - -1.527991988139155, - -1.3674005498450026, - -1.1954230214178447, - -1.0147447521547113, - -0.8281882912022507, - -0.6386688743133597, - -0.4491484488790595, - -0.2625889622923796, - -0.08190565031065694, - 0.09007893791149717, - 0.25067945306581907, - 0.39739009521010343, - 0.5279241316884609, - 0.6402499602281728, - 0.7326231484786192, - 0.8036139447086614, - 0.8521298258033652, - 0.8774327269630318, - 0.8791506813834331, - 0.8572836863516539, - 0.812203703246229, - 0.7446487914410369, - 0.655711468625422, - 0.546821481104675, - 0.41972325580355907, - 0.2764483895695089, - 0.1192836096329647, - -0.04926528948986839, - -0.2265129639157038, - -0.4096368699153308, - -0.5957217771568356, - -0.7818057436723396, - -0.9649268274954511, - -1.1421697982989447, - -1.310712112360482, - -1.4678684258075734, - -1.6111329441373727, - -1.7382189401354737, - -1.8470948169742258, - -1.9360161477508768, - -2.0035531861853917, - -2.04861341461673, - -2.0704587737021694, - -2.068717302097329, - -2.0433890025522317, - -1.994845841911298, - -1.9238258850172745, - -1.831421655031205, - -1.7190629037330973, - -1.5884940635256404, - -1.4417467367365095, - -1.2811076560795247, - -1.1090826215577936, - -0.9283569825433625, - -0.7417532882576829, - -0.5521867745282422, - -0.36261938882042977, - -0.1760130786014345, - 0.0047169202974669325, - 0.1767480586480853, - 0.3373949870682031, - 0.4841519055427682, - 0.6147320813427148, - 0.7271039121223676, - 0.8195229654584876, - 0.8905594895475506, - 0.9391209612023627, - 0.9644693155512897, - 0.9662325857182894, - 0.9444107689189157, - 0.899375826460299, - 0.8318658176452635, - 0.7429732600922485, - 0.6341279000357893, - 0.5070741643302094, - 0.3638436497526867, - 0.20672308346347495, - 0.03821825990940791, - -0.13898547709627523, - -0.3220655838936869, - -0.5081068302199037, - -0.6941472741759961, - -0.8772249738644693, - -1.0544246990264476, - -1.2229239060080348, - -1.380037251004952, - -1.5232589395816367, - -1.6503022445918119, - -1.7591355692750998, - -1.8480144867959454, - -1.9155092509412883, - -1.9605273441168798, - -1.9823307070464369, - -1.9805473784520045, - -1.955177361149648, - -1.9065926220496647, - -1.8355312260604428, - -1.7430856964085337, - -1.6306857849391656, - -1.5000759241199382, - -1.35328771634321, - -1.1926078943877716, - -1.0205422583206505, - -0.8397761575781504, - -0.6531321414456135, - -0.46352544581411576, - -0.2739180182126736, - -0.08727180617170285, - 0.09349795441467701, - 0.2655687142554036, - 0.42625512390568954, - 0.573051383288198, - 0.7036707596116198, - 0.8160816504683756, - 0.9085396233736651, - 0.9796149264624446, - 1.0282150364862814, - 1.05360188851254, - 1.0554035156043482, - 1.0336199149167258, - 0.9886230476964416, - 0.9211509731861947, - 0.8322962089445185, - 0.7234885011461626, - 0.5964722765863157, - 0.45327913198259606, - 0.2961957944363516, - 0.12772805833562856, - -0.04943873256498484, - -0.232482034663774, - -0.4184866177559397, - -0.6044905400006116, - -0.7875318595580517, - -0.9646953462263368, - -1.1331584564092947, - -1.2902358463594776, - -1.4334217216981058, - -1.5604293553355033, - -1.6692271505675231, - -1.7580706806147168, - -1.8255301993200055, - -1.870513189144745, - -1.8922815908680901, - -1.8904634432672802, - -1.8650587492134187, - -1.8164394756714657, - -1.7453436876044184, - -1.652863908293118, - -1.5404298896368755, - -1.40978606415703, - -1.2629640342999429, - -1.1022505328974441, - -0.930151360069789, - -0.7493518653064, - -0.5626745979454428, - -0.3730347939299945, - -0.18339440084194641, - 0.00328463373656529, - 0.18408707385966788, - 0.3561903701842153, - 0.516909173214583, - 0.6637376828219885, - 0.7943891661641983, - 0.9068320207830609, - 0.999321814143235, - 1.07042879432943, - 1.1190604380432205, - 1.1444786803020794, - 1.1463115541196631, - 1.1245590566015915, - 1.0795931489455628, - 1.012151890345385, - 0.9233277983108878, - 0.8145506189684035, - 0.6875647790649144, - 0.5444018752699213, - 0.3873486346374294, - 0.21891085150754197, - 0.04177386958768774, - -0.14123976756749243, - -0.3272148298000416, - -0.5131893753158807, - -0.6962014623211502, - -0.873335860660598, - -1.0417700267838153, - -1.198818616989065, - -1.3419758369431012, - -1.4689549596013824, - -1.5777243883047865, - -1.6665396963187724, - -1.7339711375308244, - -1.7789261944464794, - -1.8006668078891561, - -1.7988210166799274, - -1.773388823733547, - -1.7247421960583682, - -1.653619198660649, - -1.5611123548641932, - -1.448651416610883, - -1.3179808164649223, - -1.1711321569146302, - -1.010392170833916, - -0.8382666583850151, - -0.6574409690989431, - -0.4707376523551592, - -0.2810719441377872, - -0.0914057920696211, - 0.09529885622652123, - 0.276126764763905, - 0.44825538415966626, - 0.6089993648780239, - 0.7558529067504378, - 0.8865292768951425, - 0.998996872814782, - 1.0915112619346363, - 1.1626426923009143, - 1.2112986405764867, - 1.2367410417403844, - 1.2385979287681335, - 1.216869298727457, - 1.1719271127783597, - 1.104509430077172, - 1.0157087680964112, - 0.9069548729256852, - 0.7799921712749309, - 0.6368522597772055, - 0.4798218654502044, - 0.3114067825978738, - 0.13429235489195462, - -0.048698874148526014, - -0.2346516744013307, - -0.4206041041069397, - -0.6035942215069329, - -0.780706796480655, - -0.9491192855120075, - -1.1061463449335465, - -1.24928218044605, - -1.3762400650386704, - -1.4849884020859525, - -1.5737827648866718, - -1.641193407361166, - -1.6861278120480363, - -1.7078479198032417, - -1.7059817694802337, - -1.6805293640259196, - -1.6318626704805674, - -1.5607197538821223, - -1.468193137585847, - -1.3557125735648423, - -1.2250224944143056, - -1.0781545026532442, - -0.9173953311862413, - -0.7452507802058246, - -0.5644061992729332, - -0.3776841377967613, - -0.18799983179153873, - 0.0016847710912467617, - 0.18840772319896418, - 0.3692537885164847, - 0.5414004176321705, - 0.7021622609816613, - 0.849033518368207, - 0.9797274568823204, - 1.0922124739985022, - 1.184744137114852, - 1.2558926942501876, - 1.3045656220403403, - 1.3300248554375207, - 1.3318984273906787, - 1.310186334941188, - 1.2652605392229408, - 1.1978590993663079, - 1.1090745328183789, - 1.0003365856431246, - 0.8733896845253718, - 0.7302654260733608, - 0.573250537279584, - 0.40485081242406484, - 0.22775159515415788, - 0.04477542896471263, - -0.14116245604574001, - -0.32710011814123496, - -0.5100756155867503, - -0.6871737182845599, - -0.8555718827414158, - -1.0125847653125206, - -1.1557065717213701, - -1.2826505749788573, - -1.3913851784816784, - -1.48016595555002, - -1.5475631601259505, - -1.592484274769206, - -1.6141912403567145, - -1.6123120957626795, - -1.586846843954548, - -1.5381674519928694, - -1.467011984935632, - -1.374472966157831, - -1.2619801476524288, - -1.131277962033696, - -0.9843980118398505, - -0.8236270299943591, - -0.6514708167084021, - -0.4706147215611658, - -0.283881293980525, - -0.09418576999816267, - 0.09550990271655564, - 0.28224377649351606, - 0.4631006153004201, - 0.6352578697084655, - 0.7960301901365088, - 0.9429117763714132, - 1.073615895487302, - 1.1861109449426, - 1.2786524921195934, - 1.349810785021432, - 1.3984933002685715, - 1.4239619727981472, - 1.425844835544168, - 1.404141885533339, - 1.3592250838850608, - 1.2918324897156621, - 1.2030566204581015, - 1.0943272221626146, - 0.9673887215006421, - 0.8242727150670882, - 0.6672659298414393, - 0.4988741600909826, - 0.3217827494503651, - 0.13881424140201415, - -0.04711613396712909, - -0.23304643493346316, - -0.41601471977342275, - -0.5931057584006685, - -0.7614970073331115, - -0.9185031229369451, - -1.0616183109460682, - -1.1885558443822397, - -1.297284126652102, - -1.3860587310858912, - -1.4534499116354427, - -1.498365150869966, - -1.520066389675662, - -1.5181816669358241, - -1.4927109856266536, - -1.4440263128173985, - -1.37286571357416, - -1.2803217112802834, - -1.1678240579364454, - -1.0371171861645307, - -0.8902326985102851, - -0.7294573279043421, - -0.5572968745645217, - -0.3764366880772495, - -0.18969931787638167, - 1.1704851152870598e-14, - 0.18969931787640493, - 0.3764366880773533, - 0.557296874564701, - 0.7294573279045112, - 0.8902326985104417, - 1.0371171861647392, - 1.1678240579365715, - 1.2803217112804806, - 1.3728657135743152, - 1.4440263128174582, - 1.4927109856266898, - 1.5181816669358255, - 1.5200663896756605, - 1.4983651508699598, - 1.4534499116353825, - 1.3860587310857686, - 1.2972841266519097, - 1.1885558443821176, - 1.0616183109459936, - 0.9185031229368532, - 0.7614970073329416, - 0.5931057584004882, - 0.41601471977331805, - 0.23304643493343902, - 0.047116133967105414, - -0.13881424140245716, - -0.3217827494507161, - -0.49887416009131946, - -0.6672659298417573, - -0.8242727150671787, - -0.9673887215006596, - -1.0943272221627385, - -1.2030566204582072, - -1.291832489715745, - -1.359225083885121, - -1.4041418855333527, - -1.4258448355441788, - -1.4239619727981223, - -1.398493300268502, - -1.349810785021372, - -1.2786524921195521, - -1.1861109449425884, - -1.0736158954872295, - -0.9429117763712721, - -0.7960301901363521, - -0.635257869708296, - -0.46310061530016067, - -0.28224377649332755, - -0.09550990271610763, - 0.09418576999844237, - 0.2838812939807174, - 0.47061472156135364, - 0.6514708167084226, - 0.8236270299943798, - 0.9843980118400074, - 1.1312779620338969, - 1.261980147652662, - 1.3744729661580282, - 1.467011984935716, - 1.5381674519929294, - 1.5868468439545844, - 1.612312095762691, - 1.6141912403567014, - 1.592484274769191, - 1.547563160125943, - 1.480165955549968, - 1.3913851784813938, - 1.2826505749786263, - 1.155706571721106, - 1.0125847653124365, - 0.8555718827413951, - 0.687173718284378, - 0.5100756155865622, - 0.32710011814104223, - 0.14116245604554578, - -0.044775428964818564, - -0.22775159515442478, - -0.40485081242440213, - -0.5732505372799785, - -0.730265426073517, - -0.8733896845254547, - -1.0003365856431399, - -1.1090745328183917, - -1.1978590993663494, - -1.265260539223001, - -1.3101863349412253, - -1.3318984273906995, - -1.3300248554375071, - -1.3045656220403012, - -1.255892694250127, - -1.1847441371147696, - -1.0922124739983996, - -0.9797274568821969, - -0.8490335183681899, - -0.7021622609816426, - -0.5414004176319235, - -0.3692537885161442, - -0.18840772319861016, - -0.001684771090883521, - 0.1879998317916479, - 0.3776841377968676, - 0.56440619927312, - 0.7452507802060047, - 0.9173953311864111, - 1.0781545026533346, - 1.225022494414322, - 1.3557125735651256, - 1.4681931375860435, - 1.56071975388228, - 1.6318626704806607, - 1.6805293640259225, - 1.7059817694802346, - 1.7078479198032295, - 1.6861278120479999, - 1.641193407361106, - 1.5737827648865879, - 1.4849884020858903, - 1.3762400650384903, - 1.2492821804456629, - 1.1061463449331868, - 0.949119285511837, - 0.7807067964805552, - 0.6035942215069099, - 0.4206041041068311, - 0.23465167440113613, - 0.048698874148333, - -0.1342923548923063, - -0.3114067825981329, - -0.47982186545037264, - -0.6368522597774992, - -0.7799921712750739, - -0.906954872925809, - -1.0157087680965153, - -1.1045094300771825, - -1.1719271127783686, - -1.2168692987274614, - -1.238597928768145, - -1.2367410417403595, - -1.2112986405764175, - -1.1626426923008846, - -1.091511261934627, - -0.9989968728147192, - -0.8865292768950191, - -0.7558529067502974, - -0.60899936487794, - -0.4482553841596457, - -0.2761267647637234, - -0.09529885622608184, - 0.09140579206998434, - 0.2810719441380663, - 0.4707376523551824, - 0.6574409690989658, - 0.8382666583850367, - 1.010392170834086, - 1.171132156914786, - 1.3179808164650635, - 1.4486514166110582, - 1.5611123548642996, - 1.653619198660764, - 1.7247421960585139, - 1.773388823733583, - 1.7988210166799394, - 1.8006668078891546, - 1.7789261944464738, - 1.733971137530785, - 1.6665396963186896, - 1.5777243883045924, - 1.468954959601152, - 1.3419758369429031, - 1.198818616988909, - 1.041770026783646, - 0.8733358606604174, - 0.6962014623209621, - 0.5131893753156868, - 0.3272148298000179, - 0.14123976756746892, - -0.04177386958795565, - -0.2189108515078782, - -0.3873486346377467, - -0.5444018752702148, - -0.6875647790649972, - -0.8145506189684688, - -0.9233277983109924, - -1.0121518903454683, - -1.0795931489456227, - -1.1245590566016168, - -1.1463115541196647, - -1.144478680302044, - -1.11906043804312, - -1.070428794329316, - -0.9993218141431205, - -0.9068320207830483, - -0.7943891661641835, - -0.6637376828218483, - -0.5169091732144262, - -0.3561903701840454, - -0.18408707385940518, - -0.0032846337363765035, - 0.18339440084222552, - 0.37303479393035954, - 0.56267459794572, - 0.7493518653065876, - 0.9301513600698914, - 1.102250532897464, - 1.2629640342999617, - 1.4097860641571054, - 1.5404298896369983, - 1.652863908293315, - 1.7453436876045436, - 1.816439475671527, - 1.8650587492134232, - 1.8904634432672922, - 1.8922815908680766, - 1.8705131891447087, - 1.8255301993199982, - 1.7580706806147068, - 1.6692271505674117, - 1.5604293553352218, - 1.4334217216978415, - 1.290235846359185, - 1.1331584564092028, - 0.9646953462263148, - 0.787531859557945, - 0.6044905400004194, - 0.4184866177557458, - 0.2324820346635817, - 0.049438732564877526, - -0.1277280583358072, - -0.2961957944367419, - -0.4532791319828883, - -0.5964722765865211, - -0.7234885011462865, - -0.8322962089445325, - -0.9211509731862048, - -0.9886230476965018, - -1.0336199149167626, - -1.0554035156043604, - -1.0536018885125151, - -1.0282150364862441, - -0.9796149264623515, - -0.9085396233734782, - -0.8160816504682725, - -0.703670759611497, - -0.5730513832881228, - -0.42625512390567066, - -0.2655687142553066, - -0.09349795441449762, - 0.08727180617205682, - 0.2739180182130362, - 0.46352544581439736, - 0.6531321414458078, - 0.8397761575783369, - 1.0205422583208308, - 1.1926078943879417, - 1.3532877163433672, - 1.500075924119955, - 1.6306857849391792, - 1.743085696408629, - 1.835531226060641, - 1.9065926220497798, - 1.9551773611497059, - 1.9805473784520053, - 1.9823307070464344, - 1.9605273441168538, - 1.9155092509412284, - 1.8480144867958623, - 1.7591355692750452, - 1.650302244591689, - 1.523258939581498, - 1.3800372510045869, - 1.2229239060077939, - 1.0544246990262658, - 0.8772249738644463, - 0.6941472741759726, - 0.5081068302198801, - 0.322065583893493, - 0.13898547709608713, - -0.03821825990966497, - -0.2067230834637923, - -0.36384364975284217, - -0.5070741643303494, - -0.6341279000359135, - -0.7429732600923524, - -0.831865817645346, - -0.8993758264603385, - -0.944410768918921, - -0.966232585718291, - -0.9644693155512658, - -0.939120961202292, - -0.8905594895474361, - -0.819522965458373, - -0.7271039121223545, - -0.6147320813425914, - -0.4841519055426269, - -0.33739498706804627, - -0.17674805864791657, - -0.0047169202974452, - 0.17601307860162593, - 0.3626193888208773, - 0.5521867745286075, - 0.7417532882580461, - 0.928356982543469, - 1.1090826215578153, - 1.281107656079617, - 1.4417467367366656, - 1.588494063525781, - 1.7190629037332208, - 1.8314216550312674, - 1.9238258850173588, - 1.9948458419114337, - 2.043389002552333, - 2.068717302097352, - 2.070458773702157, - 2.0486134146167245, - 2.003553186185383, - 1.936016147750794, - 1.847094816974122, - 1.7382189401352928, - 1.6111329441371094, - 1.4678684258074184, - 1.3107121123602363, - 1.1421697982986871, - 0.9649268274952634, - 0.7818057436721473, - 0.5957217771567269, - 0.4096368699153073, - 0.22651296391568088, - 0.04926528948976922, - -0.11928360963328216, - -0.276448389569802, - -0.4197232558037651, - -0.5468214811046896, - -0.6557114686254347, - -0.7446487914411197, - -0.8122037032462903, - -0.8572836863516903, - -0.8791506813834347, - -0.8774327269630184, - -0.8521298258033065, - -0.8036139447085259, - -0.732623148478463, - -0.6402499602281193, - -0.5279241316884459, - -0.397390095210087, - -0.2506794530657287, - -0.09007893791132748, - 0.08190565031083696, - 0.26258896229256656, - 0.44914844887933747, - 0.6386688743135549, - 0.8281882912026972, - 1.0147447521549835, - 1.195423021418025, - 1.3674005498451711, - 1.5279919881391741, - 1.6746915363724488, - 1.8052124619066325, - 1.917523162489421, - 2.0098792057940775, - 2.080850840116746, - 2.129345542372692, - 2.154625247795679, - 2.1563179896180564, - 2.1344237651667566, - 2.0893145358632923, - 2.021728361127775, - 1.9327577586988864, - 1.8238324749343713, - 1.696696936814755, - 1.5533827412466261, - 1.3961766155223083, - 1.2275843542235125, - 1.0502913013016917, - 0.8671200005576075, - 0.6809856823985274, - 0.49485028887018884, - 0.3116757620200251, - 0.13437733225997353, - -0.03422245660060039, - -0.19143826059834018, - -0.3347642851358151, - -0.4619138029020633, - -0.5708552169689431, - -0.6598441003302615, - -0.7274507065993703, - -0.7725825180052912, - -0.7945014750922434, - -0.7928356163996645, - -0.7675849445581724, - -0.7191214262895935, - -0.6481831263108357, - -0.5558625676541217, - -0.44358950196728053, - -0.31310836151768706, - -0.1664507484945294, - -0.005903395470107764, - 0.16602789769761245, - 0.3466577817846398, - 0.533163707720325, - 0.7226304398319824, - 0.9120960308114519, - 1.098598533352464, - 1.2792227117878312, - 1.4511460170563026, - 1.6116830999458642, - 1.7583281606150054, - 1.8887944665112508, - 2.0010504154687982, - 2.09335157524753, - 2.164268194229864, - 2.212707749418045, - 2.2379321761329622, - 2.2395695076942816, - 2.217619741516435, - 2.1724548391085357, - 2.104812859978718, - 2.0157863219537866, - 1.9068049714798545, - 1.779613235626114, - 1.63624271138736, - 1.4789801261451139, - 1.3103312745705478, - 1.1329815007042785, - 0.9497533484368916, - 0.7635620482650065, - 0.5773695423243386, - 0.39413777275251555, - 0.21678197005229088, - 0.04812467812336941, - -0.10914875897979662, - -0.2525325465693593, - -0.379739957242995, - -0.4887393939808489, - -0.577786429685174, - -0.6454513178775307, - -0.6906415406949371, - -0.7126190385893818, - -0.7110118500078613, - -0.6858199774883031, - -0.6374153876596689, - -0.5665361451459396, - -0.474274772885978, - -0.3620610224341021, - -0.23163932596402226, - -0.08504128557101832, - 0.07544636626647058, - 0.24731782978487832, - 0.42788775585444494, - 0.6143335954995235, - 0.8037401131427533, - 0.9931453615702936, - 1.1795873935713337, - 1.3601509735741857, - 1.5320135526132233, - 1.6924897815727156, - 1.8390738607071924, - 1.9694790575601473, - 2.0816737700623547, - 2.1739135660703166, - 2.2447686940636866, - 2.293146631141636, - 2.3183093127223504, - 2.3198847722229443, - 2.2978730071556055, - 2.2526459791274367, - 2.1849417477445727, - 2.0958528309320723, - 1.986808975234505, - 1.8595546078200849, - 1.7161213257822574, - 1.5587958566019229, - 1.3900839950491308, - 1.2126710852639517, - 1.0293796712370793, - 0.8431249835649592, - 0.6568689644834083, - 0.4735735562304283, - 0.2961539894088442, - 0.127432808019163, - -0.02990464378311479, - -0.1733525712089076, - -0.30062424675460175, - -0.4096880732991527, - -0.49879962364309405, - -0.5665291512060578, - -0.6117841380228306, - -0.6338265244432432, - -0.6322843488118365, - -0.6071576135639181, - -0.5588182852254137, - -0.488004428317401, - -0.3958085656754774, - -0.28366044875055074, - -0.15330450961263714, - -0.006772350253254525, - 0.15364929695363555, - 0.3254546323482088, - 0.5059583069051892, - 0.6923377717537091, - 0.8816777914207088, - 1.071016418798128, - 1.2573917067802705, - 1.4378884199003366, - 1.609684009298547, - 1.770093125964958, - 1.9166099702598973, - 2.0469478098334095, - 2.159075042722498, - 2.2512472368901495, - 2.3220346409227597, - 2.3703447320264295, - 2.395439445726525, - 2.396946815547534, - 2.374866839109093, - 2.3295714781260424, - 2.2617987923124456, - 2.172641299701499, - 2.063528746946129, - 1.9362055613227802, - 1.7927033400335592, - 1.6353088106683669, - 1.4665277681064524, - 1.289045556597248, - 1.1056847202404767, - 0.919360489742202, - 0.7330348074480562, - 0.5496696157064758, - 0.3721801452302277, - 0.20338894013050035, - 0.0459813446727681, - -0.09753684624300334, - -0.22487890500190846, - -0.33401323437183794, - -0.42319540704202424, - -0.4909956763205683, - -0.536321524130702, - -0.5584348907102554, - -0.5569638142916273, - -0.5319082971978808, - -0.4836403058425976, - -0.4128979046340294, - -0.32077361629495327, - -0.20869719216318355, - -0.07841306419577379, - 0.0680471657292897, - 0.2283967653514027, - 0.40012993512487705, - 0.5805613261384224, - 0.7668683896352442, - 0.9561358902564517, - 1.145401881008405, - 1.3317044149001178, - 1.5121282565801022, - 1.6838508573036197, - 1.844186868175598, - 1.990630489671893, - 2.120894989558204, - 2.232948765987409, - 2.325047387038472, - 2.3957611014141165, - 2.443997386436658, - 2.4690181777479667, - 2.470451508989337, - 2.448297377897346, - 2.402927746303882, - 2.3350806740402152, - 2.245848679257179, - 2.1366615087252776, - 2.009263589838786, - 1.865686519917968, - 1.70821702667056, - 1.5393609050944073, - 1.361803499557574, - 1.178367354278454, - 0.9919677000821177, - 0.8055664794333834, - 0.6221256347993802, - 0.4445603970128575, - 0.27569331030456334, - 0.11820971905994919, - -0.02538458170112548, - -0.15280286424373424, - -0.26201353121533166, - -0.35127215518455923, - -0.4191489893386833, - -0.46455151548012386, - -0.486741673725612, - -0.4853475021863368, - -0.46036900306386375, - -0.41217814265013364, - -0.3415129852316085, - -0.2494660534091899, - -0.13746709839857027, - -0.007260552034216439, - 0.1391219839284747, - 0.29939377735125616, - 0.4710490288113587, - 0.6514023895205181, - 0.8376313108450728, - 1.0268205575499498, - 1.2160081827651776, - 1.402232239622832, - 1.582577492895695, - 1.7542213939629088, - 1.9144785940540647, - 2.0608432937694445, - 2.1910287609993437, - 2.3030033940211476, - 2.395022761038987, - 2.4656571108806435, - 2.5138139209939867, - 2.5387551271462785, - 2.5401087631044286, - 2.5178748267308944, - 2.4724252799836295, - 2.404498182820153, - 2.315186053517511, - 2.205918638972656, - 2.0784403667068334, - 1.934782834167228, - 1.7772327691886178, - 1.6082959668959163, - 1.4306577717845044, - 1.2471407282003382, - 1.0606600670966584, - 0.8741777310659584, - 0.6906556627036262, - 0.5130090929704147, - 0.34406056622551906, - 0.18649542698306087, - 0.042819470391512224, - -0.08468057568482384, - -0.19397311376454768, - -0.2833137162869942, - -0.35127263631013467, - -0.39675735550655605, - -0.41902981386324584, - -0.41771804936142004, - -0.392822064072556, - -0.3447138241583346, - -0.27413139377463325, - -0.18216729539160192, - -0.07025128009443113, - 0.05987222041351967, - 0.20617160450778427, - 0.3663601401817568, - 0.5379320281441734, - 0.7182019197384316, - 0.90434726646227, - 1.093452833212658, - 1.282556673251941, - 1.4686968398446734, - 1.6489580978961769, - 1.8205178989178248, - 1.9806908942721009, - 2.1269712846922824, - 2.2570723382017563, - 2.368962453211505, - 2.4608971980590355, - 2.531446821705555, - 2.5795188017327635, - 2.604375074041979, - 2.605643672534221, - 2.5833245952062, - 2.5377898041502656, - 2.469777359458659, - 2.380379779543157, - 2.271026811435819, - 2.1434628827927353, - 1.9997195911963885, - 1.8420836646167345, - 1.673060898314851, - 1.4953366369216754, - 1.311733424919161, - 1.1251664933961991, - 0.9385977850815095, - 0.7549892427073019, - 0.5772560973707972, - 0.40822089356789304, - 0.2505689759495084, - 0.10680613980120643, - -0.020780886875937973, - -0.13016050646254518, - -0.21958829126069176, - -0.28763449419062226, - -0.33320659678720754, - -0.35556653889939555, - -0.3543423583702424, - -0.3295340571328955, - -0.28151360121059343, - -0.21101905462059867, - -0.1191429396944381, - -0.007315007377894173, - 0.12272031076438092, - 0.2689314132472053, - 0.42903156820343175, - 0.60051497648128, - 0.7806962895637815, - 0.966752959089131, - 1.1557697500938442, - 1.344784715980447, - 1.5308359101540119, - 1.7110080976599495, - 1.882478730150854, - 2.0425624591298552, - 2.1887534854711643, - 2.3187650773390978, - 2.4305656332860472, - 2.522410721790845, - 2.5928705919564834, - 2.6408527215063344, - 2.6656190464835845, - 2.6667976009312033, - 2.644388382988181, - 2.598763354889253, - 2.5306605768690495, - 2.441172567481898, - 2.3317290739028627, - 2.2040745239309674, - 2.0602405152918277, - 1.9025137760988096, - 1.7334001017557354, - 1.5555848370374314, - 1.3718905265698955, - 1.1852324015856393, - 0.9985724049576435, - 0.8148724795618434, - 0.6370478566397768, - 0.4679210808318143, - 0.310177496933869, - 0.16632290037613262, - 0.03864401930445077, - -0.0708275485168659, - -0.16034737524466666, - -0.22848571365364206, - -0.2741500451332287, - -0.29660230938677445, - -0.29547054411156726, - -0.27075475109481695, - -0.22282689621357427, - -0.15242504333901113, - -0.06064171465618237, - 0.05109333903540951, - 0.18103568631806607, - 0.32715372585345953, - 0.48716072592143267, - 0.6585508875169466, - 0.8386388622704875, - 1.0246021019674747, - 1.2135253717922128, - 1.4024467252948305, - 1.5884042160286476, - 1.7684826091862833, - 1.9398593565687139, - 2.099849109827404, - 2.2459460699849134, - 2.3758635053544497, - 2.4875698146366565, - 2.5793205664592698, - 2.6496860100743103, - 2.6975736233542618, - 2.722245342491543, - 2.7233292016785873, - 2.7008251992038534, - 2.65510529745178, - 2.586907556806813, - 2.4973244959733805, - 2.3877858622764405, - 2.260036083665213, - 2.1161067580156523, - 1.95828461359205, - 1.7890754459485574, - 1.611164600011113, - 1.4273746205561668, - 1.2406207389672836, - 1.0538648982690852, - 0.8700690414887762, - 0.6921484000193738, - 0.5229255186529436, - 0.36508574233677193, - 0.22113486665300996, - 0.09335961989993015, - -0.01620840000623476, - -0.10582476506981149, - -0.1740597279133086, - -0.2198207697735309, - -0.24236983020105363, - -0.24133494674025657, - -0.21671612102541493, - -0.168885318780539, - -0.09858060372347496, - -0.006894497885617135, - 0.10474324808670661, - 0.23458820292952315, - 0.3806087654582688, - 0.5405182041066338, - 0.7118107200240055, - 0.8918009649951105, - 1.077666390959289, - 1.2664917632553787, - 1.4553151355881007, - 1.6411745616653362, - 1.8211548068353158, - 1.992433323053564, - 2.1523247621263604, - 2.298323325231756, - 2.4281422808381823, - 2.539750027802093, - 2.6314021349068204, - 2.7016688515601133, - 2.74945765579019, - 2.7740304839456496, - 2.775015370375075, - 2.7524123135232292, - 2.7065932759308624, - 2.638296318139079, - 2.548613959008984, - 2.43897594602232, - 2.311126707285305, - 2.167097840831034, - 2.009176075080508, - 1.8398672057456604, - 1.661856577909584, - 1.477966736506608, - 1.2911129130780956, - 1.1042570508059788, - 0.9203610928755788, - 0.742340270837998, - 0.5730171296437404, - 0.41507701439825306, - 0.2710257208423173, - 0.14314997743228208, - 0.03348138224352394, - -0.056235636569643074, - -0.12457133147068257, - -0.17043318353736842, - -0.1930831321610939, - -0.19214921472697646, - -0.16763143270974634, - -0.11990175167390513, - -0.049698235177625075, - 0.04188659490733174, - 0.15342298809489932, - 0.28316651328107245, - 0.42908556944153764, - 0.5888934251699479, - 0.7600842817762867, - 0.9399727912055642, - 1.1257364055581829, - 1.3144598903337688, - 1.5031812993979385, - 1.6889386866190754, - 1.8688168175069675, - 2.039993144178079, - 2.1997823186005325, - 2.345678542113811, - 2.4753950833476237, - 2.5869003413202276, - 2.6784498849768354, - 2.748613963887146, - 2.7963000562416145, - 2.8207700985509225, - 2.8216521253259437, - 2.7989461351738707, - 2.753024090798106, - 2.684624052902307, - 2.594838540510308, - 2.485097301266697, - 2.3571447634409526, - 2.2130125252291633, - 2.0549873152157163, - 1.8855749292757689, - 1.70746071265545, - 1.5234672104532383, - 1.3365096543741144, - 1.1495499877638218, - 0.9655501539715154, - 0.7874253847124056, - 0.6179982251006809, - 0.4599540204066008, - 0.3157985665352338, - 0.18781859210750076, - 0.07804569536300529, - -0.011775695379015946, - -0.08021583241731908, - -0.12618219666454117, - -0.14893672734715122, - -0.1481074616851179, - -0.12369440098796415, - -0.07606951065473702, - -0.00597085407814181, - 0.08550904703564609, - 0.19694044236626673, - 0.3265789009753743, - 0.472392822004543, - 0.6320954742139284, - 0.803181059079253, - 0.9829642287118254, - 1.1686224353783123, - 1.3572404447447841, - 1.545856310843335, - 1.7315080877094435, - 1.911280541019569, - 2.0823511230568927, - 2.2420344859563626, - 2.387824831224535, - 2.5174354276586435, - 2.62883467444421, - 2.7202781406938095, - 2.7903360761444445, - 2.837915959154327, - 2.8622797264018445, - 2.8630554125657524, - 2.8402430164210797, - 2.7942145008393036, - 2.725707926692225, - 2.635815813171953, - 2.5259679080914803, - 2.397908639888473, - 2.2536696069274833, - 2.0955375379618726, - 1.9260182290354928, - 1.7477970255635829, - 1.5636964728129175, - 1.3766318026577546, - 1.1895649586129031, - 1.0054578841971944, - 0.8272258112949311, - 0.6576912851899703, - 0.49953965132172967, - 0.3552767057649483, - 0.2271891773103778, - 0.11730866436760891, - 0.027379595425809408, - -0.04116828164377703, - -0.08724244758380999, - -0.11010484145042139, - -0.10938350029319464, - -0.08507842525125758, - -0.03756158155317535, - 0.03242896757898765, - 0.12380070060971372, - 0.23512386738971544, - 0.3646540371513819, - 0.5103596092071706, - 0.6699538524882851, - 0.8409309686418484, - 1.0206056099504819, - 1.206155228852233, - 1.3946645911846547, - 1.583171751151148, - 1.7687147629590236, - 1.9483783924563411, - 2.1193400920984433, - 2.2789145141921305, - 2.4245958604159146, - 2.554097399739087, - 2.665387531519417, - 2.756721825041765, - 2.8266705302157398, - 2.874141125571942, - 2.898395547961235, - 2.8990618322350836, - 2.8761399773413556, - 2.8300019463243213, - 2.7613858002286706, - 2.671384058419492, - 2.561426468883104, - 2.4332574602302763, - 2.2889086309990643, - 2.1306667101158827, - 1.9610374937980248, - 1.7827063276343509, - 1.5984957570654381, - 1.41132101413938, - 1.2241440425448027, - 1.039926785974016, - 0.8615844764853359, - 0.6919396595371059, - 0.5336776807428205, - 0.38930433635144684, - 0.2611063553281123, - 0.15111533625654255, - 0.06107570780042891, - -0.007582781994040624, - -0.05376761369504428, - -0.07674072618394724, - -0.07613015633554653, - -0.05193590511399389, - -0.004529937572796336, - 0.06534968324096455, - 0.1566104359669846, - 0.26782257063100234, - 0.39724165664117084, - 0.542836093485366, - 0.7023191502699663, - 0.8731850288177256, - 1.0527483815869054, - 1.2381866611913757, - 1.4265846336444232, - 1.6149803533258642, - 1.8004118746183901, - 1.9799639635461235, - 2.150814072740724, - 2.310276854685211, - 2.4558465112344443, - 2.5852363115341968, - 2.6964146551183243, - 2.7876371114484053, - 2.857473930610654, - 2.9048325913123145, - 2.9289750305811153, - 2.9295292834453157, - 2.9064953490296115, - 2.860245190555347, - 2.791516869244297, - 2.7014029046387504, - 2.5913330449019245, - 2.4630517188221175, - 2.318590525114719, - 2.1602361928836493, - 1.9904945185237368, - 1.8120508478013473, - 1.6277277263346437, - 1.4404403863493513, - 1.2531507717122479, - 1.068820826293353, - 0.8903657823291684, - 0.7206081854556521, - 0.5622333814644159, - 0.41774716678262275, - 0.2894362705539689, - 0.17933229154035918, - 0.08917965858376467, - 0.020408119908737643, - -0.02588980487432188, - -0.048976054468082286, - -0.048478665568724336, - -0.02439763896171447, - 0.022895060478196352, - 0.09266136988289901, - 0.18380876807112229, - 0.29490750524740006, - 0.4242131509989183, - 0.5696941049926983, - 0.7290636365144784, - 0.8998159475663732, - 1.079265690786003, - 1.2645903189662344, - 1.4528745983000615, - 1.6411565833465849, - 1.8264743286685263, - 2.0059126004695904, - 2.176648851561385, - 2.335997734606104, - 2.4814534516387288, - 2.610729271984918, - 2.7217935953588093, - 2.8129019914019486, - 2.882624710380461, - 2.9298692311818284, - 2.9538974910140645, - 2.9543375250857435, - 2.93118933270195, - 2.8848248772643306, - 2.8159822201752993, - 2.7257538811576434, - 2.615569608555302, - 2.487173831337112, - 2.342598148399156, - 2.1841292890259987, - 2.014273049793744, - 1.8357147766496351, - 1.6512770153924747, - 1.4638749984293566, - 1.276470669807551, - 1.0920259735788242, - 0.9134561421607997, - 0.743583721370616, - 0.5850940571812727, - 0.4404929462013639, - 0.3120671177555827, - 0.20184817078773198, - 0.1115805343212999, - 0.042693956762364274, - -0.0037190420968975513, - -0.02692040077758487, - -0.02653815579405247, - -0.0025723077498848307, - 0.044605178661995606, - 0.11425624075542709, - 0.2052883575309879, - 0.3162717793754643, - 0.4454620760583683, - 0.5908276474283616, - 0.7500817629536052, - 0.9207186248183896, - 1.1000528858425591, - 1.2852619990017502, - 1.473430730671392, - 1.6615971355926207, - 1.8467992685107582, - 2.026121895812085, - 2.1967424704906824, - 2.3559756453921006, - 2.501315622733619, - 2.63047567202341, - 2.741424193158641, - 2.8324167559636217, - 2.9020236108876007, - 2.949152237000976, - 2.973064571694721, - 2.973388650360419, - 2.9501244724863604, - 2.9036440016573266, - 2.8346852994588927, - 2.7443408857969755, - 2.6340405091990196, - 2.5055285988171843, - 2.360836753730974, - 2.202251703408471, - 2.0322792446088984, - 1.85360472346298, - 1.669050685953583, - 1.481532364671092, - 1.2940117038468606, - 1.1094506477158474, - 0.9307644288794324, - 0.7607755933385639, - 0.6021694872504646, - 0.45745190740736663, - 0.3289095833179921, - 0.21857411410991268, - 0.12818992899069398, - 0.0591867765503139, - 0.012657176765339492, - -0.010660808701344782, - -0.01039521617993494, - 0.013453953910162339, - 0.060514737060381685, - 0.13004907076879707, - 0.22096443422031672, - 0.3318310779860547, - 0.460904572019714, - 0.6061533163549452, - 0.7652905806441113, - 0.9358105672561126, - 1.1150279291951102, - 1.3001201196214904, - 1.4881719050950624, - 1.6762213405420658, - 1.8613064808925317, - 2.0405120927174765, - 2.211015629195283, - 2.3701317433567217, - 2.515354637603658, - 2.6443975816295593, - 2.755228975516439, - 2.8461043892733153, - 2.9155940735344967, - 2.96260550755545, - 2.9864006289122234, - 2.986607473181548, - 2.9632260400367154, - 2.916628293247787, - 2.84755229458548, - 2.757090564141091, - 2.646672850627116, - 2.5180435833809613, - 2.3732343616674156, - 2.214531915140247, - 2.0444420407438804, - 1.8656500847947033, - 1.680978593460705, - 1.493342799517309, - 1.305704647382139, - 1.1210260814755206, - 0.9422223345843896, - 0.7721159528953547, - 0.6133922827508704, - 0.4685571211288765, - 0.3398971977241037, - 0.22944411184975005, - 0.13894229289907947, - 0.06982148964787187, - 0.023174222258218594, - -0.0002614474209643308, - -0.00011355553401051766, - 0.02361789768548468, - 0.07056094791479436, - 0.13997753283795286, - 0.2307751318258603, - 0.34152399563570535, - 0.4704796944068319, - 0.6156106283591636, - 0.7746300673309705, - 0.9450322138771963, - 1.1241317211885806, - 1.3091060426110608, - 1.4970399448906506, - 1.6849714831398244, - 1.869938712474708, - 2.0490263996524414, - 2.2194119980381855, - 2.378410160848384, - 2.5235150906714665, - 2.6524400573869, - 2.7631534612630104, - 2.8539108724954225, - 2.923282541904679, - 2.970175948932557, - 2.993853031341442, - 2.9939418248945175, - 2.970442329451567, - 2.9237265089689197, - 2.8545324254038436, - 2.7639525990340963, - 2.653416778758706, - 2.524669394101621, - 2.37974204451423, - 2.2209214598365126, - 2.0507134371993905, - 1.871803323106214, - 1.6870136639114919, - 1.499259692577515, - 1.3115033537078413, - 1.1267065919096861, - 0.947784640156559, - 0.7775600448221391, - 0.6187181524353079, - 0.4737647601608761, - 0.3449865978799459, - 0.23441526509246863, - 0.14379519137848018, - 0.07455612570072932, - 0.027790588407864927, - 0.004236641535620533, - 0.004266249126362934, - 0.027879411133390777, - 0.07470416342072132, - 0.14400244385918642, - 0.23468173200646564, - 0.3453122788065094, - 0.4741496545857529, - 0.6191622597509795, - 0.7780633643271839, - 0.948347171056029, - 1.127328333315012, - 1.3121843046373618, - 1.4999998519559945, - 1.6878130305702848, - 1.872661895782836, - 2.051631214537957, - 2.2218984403875788, - 2.3807782267352504, - 2.5257647763566298, - 2.6545713593176585, - 2.7651663760736804, - 2.855805397007305, - 2.9250586731260695, - 2.971833684058712, - 2.9953923677546346, - 2.995362760163884, - 2.971744861333246, - 2.9249106354061087, - 2.8555981445266125, - 2.7648999091595092, - 2.654245678390681, - 2.5253798819313458, - 2.3803341194197496, - 2.2213951208828604, - 2.0510686836388343, - 1.8720401543775387, - 1.6871320796406277, - 1.4992596925774624, - 1.311384937978601, - 1.126469760638421, - 0.9474293937174155, - 0.7770863837758477, - 0.6181260775296374, - 0.47305427233095, - 0.3441576982477952, - 0.23346795496708128, - 0.14272947225585234, - 0.07337199926359164, - 0.026488056526134715, - 0.0028157062662367005, - 0.0027269127131764187, - 0.0262216760071705, - 0.07292803219925781, - 0.14210791934728617, - 0.23266881719594334, - 0.34318097687592697, - 0.4718999689007256, - 0.6167941938637848, - 0.7755769219775847, - 0.945742356170693, - 1.1246051500071514, - 1.3093427572071752, - 1.4970399448905862, - 1.6847347685435818, - 1.8694652836560932, - 2.0483162573593, - 2.218465143391607, - 2.3772265953435268, - 2.5220948161774137, - 2.6507830761465954, - 2.7612597758930315, - 2.851780485986189, - 2.920915457620228, - 2.9675721706108473, - 2.9910125630942463, - 2.9908646712073246, - 2.9671284951836006, - 2.920175999353219, - 2.850745246047094, - 2.7599287559168344, - 2.6491562782350973, - 2.5201722428995756, - 2.3750082497351546, - 2.215951028955834, - 2.045506378066408, - 1.8663596439434385, - 1.6813333733151583, - 1.4933427995176616, - 1.3053498675277102, - 1.1203165223266431, - 0.9411579972617257, - 0.7706968390796388, - 0.6116183946830784, - 0.4664284616103449, - 0.33741377011613727, - 0.22660592007392769, - 0.13574934143740264, - 0.06627378354246874, - 0.01927176711136916, - -0.004518645446739286, - -0.004725489716024836, - 0.018651234630115213, - 0.06523956382910838, - 0.13430143612514175, - 0.22474433144920514, - 0.33513850111854526, - 0.4637395158330596, - 0.6085157763722017, - 0.7671805531347033, - 0.9372280492354282, - 1.1159729184248315, - 1.3005926146094375, - 1.4881719050952738, - 1.6757488455542853, - 1.8603614916628088, - 2.03909461073792, - 2.2091256567045416, - 2.36776928333925, - 2.5125196937904963, - 2.6410901584971214, - 2.7514490782874628, - 2.841852023916892, - 2.910869246765743, - 2.9574082268355557, - 2.9807309024483395, - 2.9804653099269265, - 2.956611449690744, - 2.909541286255817, - 2.839992882138758, - 2.749058758176849, - 2.6381686638288095, - 2.5090670291779302, - 2.3637854542350105, - 2.2046106693993988, - 2.0340484723615067, - 1.8547842101834977, - 1.669640429779606, - 1.4815323646712535, - 1.2934219600210743, - 1.1082711609952316, - 0.9289952011265681, - 0.7584166273476209, - 0.5992207867464134, - 0.45391347704660834, - 0.32478142868819104, - 0.21385624172998868, - 0.1228823463107389, - 0.05328949195192312, - 0.006170199560973658, - -0.01773746826785301, - -0.018061546933552705, - 0.0051979640756388695, - 0.05166910118229759, - 0.12061380281556593, - 0.21093954909150447, - 0.3212165915123545, - 0.44970050096278313, - 0.5943596784075348, - 0.7529073944300457, - 0.9228378523302938, - 1.1014657060430764, - 1.285968409659843, - 1.4734307306712835, - 1.6608907249346503, - 1.8453864483104412, - 2.024002668300454, - 2.193916839014128, - 2.3524436144126204, - 2.497077197828848, - 2.625530859886598, - 2.735773001598281, - 2.8260591939036077, - 2.8949596883673894, - 2.9413819651754536, - 2.9645879628342073, - 2.96420571785068, - 2.9402352308284554, - 2.893048466467783, - 2.8233834874694734, - 2.7323328148548356, - 2.6213261982665497, - 2.4921080679717846, - 2.3467100241655956, - 2.187418797431209, - 2.0167401856429374, - 1.837359536046867, - 1.6520993957406136, - 1.4638749984293273, - 1.2756482894596919, - 1.0903812141817002, - 0.9109890063117094, - 0.7402942129655036, - 0.5809821814146539, - 0.4355587095663338, - 0.30631052804429654, - 0.19526923709054944, - 0.10417926702727703, - 0.03447036755905174, - -0.012764940223382912, - -0.03678859354254667, - -0.03722862761419189, - -0.014085041743530397, - 0.032270200675032626, - 0.10109903825376092, - 0.19130895129177938, - 0.30147019147403864, - 0.4298383298680948, - 0.5743817676214795, - 0.7328137755004652, - 0.902628556987666, - 1.0811407662011117, - 1.2655278574140811, - 1.4528745983001439, - 1.640219044898901, - 1.8245992532535764, - 2.0030999910483733, - 2.172898712575094, - 2.3313100719771804, - 2.4758282727694825, - 2.6041665857583842, - 2.7142934121382396, - 2.8044643230311253, - 2.8732495701836442, - 2.9195566339636754, - 2.942647453059542, - 2.942150064160197, - 2.918064468051086, - 2.8707626296141755, - 2.800982611731893, - 2.709816935607406, - 2.598695351064869, - 2.46936228855328, - 2.3238493484488565, - 2.164443261516224, - 1.9936498258110498, - 1.8141543887611284, - 1.6287794976451213, - 1.4404403863496418, - 1.2520990004021777, - 1.0667172853333955, - 0.8872104750414456, - 0.7164011168229125, - 0.5569745581302632, - 0.41143659705157687, - 0.28207396439106924, - 0.170918260571559, - 0.07971391609615747, - 0.009890680849982902, - -0.03745892389570918, - -0.06159683518294849, - -0.06215108804713412, - -0.03912168161299276, - 0.007119420905311188, - 0.07583415830029415, - 0.1659300110511187, - 0.2759772310230594, - 0.40423138946376974, - 0.5486608877008097, - 0.7069789966800466, - 0.8766799200639765, - 1.0550783121505833, - 1.2393516273930434, - 1.4265846336446963, - 1.613815387124316, - 1.7980819440547466, - 1.97646907229967, - 2.146154226330376, - 2.3044520604695857, - 2.448856778411812, - 2.5770816511421044, - 2.6870950800342093, - 2.777152636389091, - 2.845824572132557, - 2.892018367811373, - 2.9149959622927373, - 2.9143853924443146, - 2.8901866592303325, - 2.8427717277114173, - 2.772878660948699, - 2.681599980323706, - 2.5703654358388364, - 2.440919458121903, - 2.295293647727247, - 2.135774735597811, - 1.9648685199675133, - 1.7852603484416891, - 1.599772768477486, - 1.4113210141393946, - 1.2228670311328678, - 1.0373727651666251, - 0.8577534503157981, - 0.6868316340550531, - 0.5272926640143849, - 0.3816423384595924, - 0.25216738837218156, - 0.1408994143524674, - 0.04958284708059893, - -0.020352563381043853, - -0.06781429558401629, - -0.0920642863931762, - -0.0927305706670292, - -0.06981314735342047, - -0.02368397948962396, - 0.04491887189374036, - 0.13490288745235918, - 0.24483831922812477, - 0.37298073864518555, - 0.5172985472074734, - 0.6755050160375595, - 0.8450943489743734, - 1.023381200491484, - 1.207543025218516, - 1.3946645911846074, - 1.5817839547849406, - 1.7659391724182578, - 1.9442150121240493, - 2.113788928548937, - 2.271975576191548, - 2.4162691589217937, - 2.544382947900501, - 2.654285344677036, - 2.7442319207272305, - 2.8127929281522634, - 2.8588758476741085, - 2.8817426183350636, - 2.8810212771778554, - 2.8567118253415256, - 2.8091862280615962, - 2.739182548573962, - 2.647793308434866, - 2.5364482578214105, - 2.4068918275354445, - 2.261155618305933, - 2.1015263612504347, - 1.9305098547769326, - 1.7507914466650947, - 1.5651936845459045, - 1.376631802657834, - 1.1880677468800727, - 1.0024634630957547, - 0.8227341855533218, - 0.6517024619012486, - 0.49205363994306595, - 0.3462935181176541, - 0.21670882758038135, - 0.10533116910478012, - 0.013904973544140206, - -0.056140008866020163, - -0.10371125650422697, - -0.1280707060625149, - -0.12884639222640198, - -0.10603831377100527, - -0.06001843356093864, - 0.008475187545643373, - 0.09835003037712639, - 0.20817634714774885, - 0.33620970945400763, - 0.4804185189718572, - 0.6385160469961015, - 0.8079964975373828, - 0.9861745252420062, - 1.170227584910893, - 1.3572404447450135, - 1.5442511613111247, - 1.728297791179541, - 1.9064651025611539, - 2.0759305502743746, - 2.234008788989072, - 2.378194022745987, - 2.506199522877127, - 2.6159936911027515, - 2.7058320990700016, - 2.774284999050672, - 2.820259871937453, - 2.8430186569431575, - 2.8421893912811185, - 2.8177720762608605, - 2.7701386772881786, - 2.7000272577691535, - 2.6085303394301143, - 2.497077672618356, - 2.3674136883057844, - 2.221569987391133, - 2.0618333011614225, - 1.8907094281942272, - 1.7108837164391484, - 1.5251787136965498, - 1.3365096543742583, - 1.1478384845207952, - 0.9621271501880136, - 0.7822908857935034, - 0.6111522391548501, - 0.45139655824458846, - 0.3055296416703631, - 0.17583822075585645, - 0.06435389644317885, - -0.027178900245895296, - -0.09733041890730365, - -0.1450081377514773, - -0.1694739933023081, - -0.17035602007734946, - -0.1476542166836758, - -0.1017405458181519, - -0.03335306817121379, - 0.056415697253100056, - 0.16613600283657987, - 0.2940634203430543, - 0.43816635161611195, - 0.5961580681174579, - 0.7655327740248752, - 0.9436051241513302, - 1.1275525734651786, - 1.314459890333933, - 1.5013651314910998, - 1.6853063536735469, - 1.8633683252583673, - 2.032728501230487, - 2.1907015364258102, - 2.334781635051572, - 2.4626820686057687, - 2.572371238974494, - 2.6621047179705637, - 2.730452758031494, - 2.776322840215605, - 2.7989769039012944, - 2.798042986467159, - 2.773521089387982, - 2.72578317823473, - 2.655567316578564, - 2.5639660263108004, - 2.4524090579433384, - 2.322640842612667, - 2.1766929813825615, - 2.0168522057043177, - 1.8456243143201196, - 1.6656946553434397, - 1.4798857767387692, - 1.2911129130779628, - 1.1023380105738914, - 0.9165230154419619, - 0.7365831622637727, - 0.5653409990198488, - 0.40548187384630774, - 0.2595115855145138, - 0.12971686551130363, - 0.018129314941880928, - -0.07350663500895128, - -0.14376123377444316, - -0.1915419594021498, - -0.21611074825319443, - -0.21709563468261642, - -0.1944966171351659, - -0.14868565814530993, - -0.08040081824124623, - 0.009265383735113597, - 0.11888320032731446, - 0.24670820346113426, - 0.3907087951417497, - 0.5485982469926596, - 0.7178707633531681, - 0.8958409991976933, - 1.079686409655615, - 1.2664917632554782, - 1.4532951168919728, - 1.6371345274627824, - 1.815094763506262, - 1.9843532801674137, - 2.1422247324427643, - 2.2862033247000424, - 2.414002328597485, - 2.523590146181327, - 2.613222349424749, - 2.681469190924945, - 2.7272381518999786, - 2.7497911718880115, - 2.7487562884272245, - 2.72413350315182, - 2.6762947817920715, - 2.605978188078278, - 2.5142762440609436, - 2.4026187004109776, - 2.2727499884235884, - 2.126701709320994, - 1.96676059471335, - 1.795432443501239, - 1.6154026039565341, - 1.4294936242019407, - 1.240620738967471, - 1.0517458946235148, - 0.8658310375433076, - 0.6857914024665661, - 0.5144495375313748, - 0.3544907910311814, - 0.2084209618945349, - 0.07852678176541597, - -0.033160148093870995, - -0.12489539634133487, - -0.1952492122535896, - -0.24312907372146975, - -0.26779691694965746, - -0.2688807761367273, - -0.2463806495710542, - -0.20066849963102773, - -0.13248238668883341, - -0.04291482943053927, - 0.06660442484338061, - 0.19433094821443458, - 0.33823314284301753, - 0.4960242805080518, - 0.6651985657040709, - 0.843070653560527, - 1.0268179993621982, - 1.2135253717925885, - 1.400230827900433, - 1.5839724247383453, - 1.7618349309989068, - 1.9309958019818576, - 2.088769692837897, - 2.2326508080887866, - 2.3603524195463637, - 2.469842929410868, - 2.55937790980908, - 2.6275276134918055, - 2.6731995218306066, - 2.6956555745167172, - 2.6945238092414856, - 2.6698042277921448, - 2.621868796051811, - 2.551455577903555, - 2.4596570955502055, - 2.3479030998153796, - 2.217938022146635, - 2.071793463918282, - 1.911756156892505, - 1.740331900121698, - 1.5602060420293338, - 1.3742011308902256, - 1.1852324015856364, - 0.9962618006373072, - 0.810251274569934, - 0.6301160582738081, - 0.4586787000381914, - 0.2986245483071346, - 0.15245940216027096, - 0.02246999339192811, - -0.08931207658517791, - -0.18114237627907076, - -0.2515911548161701, - -0.299565889937195, - -0.3243285176970585, - -0.32550707214470087, - -0.30310155141900286, - -0.2574839177488426, - -0.18939223135714106, - -0.0999190107810014, - 0.00950599682814697, - 0.1371383637004487, - 0.280946492145279, - 0.4386436540901403, - 0.6077240541779938, - 0.7855023476861591, - 0.9691559900475806, - 1.1557697500939002, - 1.342381685021856, - 1.5260298520318225, - 1.7037990199634967, - 1.8728666442640993, - 2.030547380231597, - 2.1743354325348045, - 2.301944073132851, - 2.4113417043727114, - 2.500783898527539, - 2.5688409084948516, - 2.614420215792473, - 2.636783760258016, - 2.6355595797288585, - 2.610747676138115, - 2.5627200155147447, - 2.492214661887452, - 2.400324137604702, - 2.28847819363525, - 2.158421261571873, - 2.012184942933698, - 1.8520559696283412, - 1.6805401408527818, - 1.500322805175185, - 1.314226511014409, - 1.1251664933960046, - 0.9361046989862984, - 0.7500030744539106, - 0.5697768548329807, - 0.39824858855639433, - 0.23810362421182582, - 0.09184776102183709, - -0.03823226907529152, - -0.1501048645240248, - -0.2420255936894335, - -0.312564705555064, - -0.3606296777191531, - -0.38548244609404714, - -0.3867510445862879, - -0.36443547119260683, - -0.3189076879998221, - -0.2509057550890825, - -0.16152219085548744, - -0.052186742309068, - 0.07535616292176782, - 0.21907492728760866, - 0.37668282285704857, - 0.5456740544139262, - 0.7233632773767587, - 0.906927947319178, - 1.0934528332128197, - 1.2799759923950993, - 1.4635354822061641, - 1.6412160716262498, - 1.8101952162424393, - 1.9677875714923985, - 2.1114873421841445, - 2.2390078004164407, - 2.3483173486753803, - 2.4376715593734364, - 2.505640685547163, - 2.551132208852864, - 2.5734080692668555, - 2.5720963047650236, - 2.5471969174188214, - 2.499081873395305, - 2.428489236861064, - 2.3365115303025528, - 2.224578504826189, - 2.094434592162298, - 1.9481113939675065, - 1.7878956422860186, - 1.616293136452143, - 1.4359892251712425, - 1.2498064569986687, - 1.060660067096784, - 0.8715120022678782, - 0.6853242093168056, - 0.5050119234137889, - 0.33339769312803447, - 0.17316686718270918, - 0.026825244936230466, - -0.10334044153824497, - -0.2152985905497688, - -0.3073047703280577, - -0.37792922972178633, - -0.42607944619445637, - -0.4510173555238245, - -0.45237099148200394, - -0.4301403519313652, - -0.38469739882466925, - -0.3167801921090543, - -0.2274812500459696, - -0.11823031951168944, - 0.009228171998889867, - 0.1528626270697958, - 0.3103863179023751, - 0.47929344941362007, - 0.6568986771548544, - 0.8403794568320964, - 1.0268205575498768, - 1.213260036778176, - 1.3967359519885187, - 1.5743330722934559, - 1.7432288534118094, - 1.9007379509128268, - 2.0443545697364867, - 2.171791982112419, - 2.281018590657939, - 2.3702899679164418, - 2.43817636705524, - 2.4835852698615346, - 2.5057786164419467, - 2.5043844449026396, - 2.479402757445222, - 2.431205520366724, - 2.3605307979636407, - 2.268471112851894, - 2.15645621626731, - 2.026230540069459, - 1.8798256860444473, - 1.7195283863651252, - 1.547844440494882, - 1.3674591972672236, - 1.181195205365903, - 0.9919677000819671, - 0.8027386283457205, - 0.6164699370899344, - 0.43607686161265596, - 0.26438195061026004, - 0.10407055293343666, - -0.042351531932017905, - -0.17259757178575005, - -0.28463596480993414, - -0.37672227910782274, - -0.4474267634015032, - -0.4956568950280566, - -0.5206746096389339, - -0.5221079408803091, - -0.4999568864887586, - -0.45459340829134276, - -0.3867555661094827, - -0.2975358780795599, - -0.18836409095265322, - -0.06098463209871653, - 0.08257090119100194, - 0.24001578124280834, - 0.4088442130982055, - 0.5863708524324069, - 0.7697731550755988, - 0.9561358902563133, - 1.142497115567946, - 1.325894888606357, - 1.5034139786072303, - 1.6722318414121986, - 1.8296631327138004, - 1.9732020575747575, - 2.100561888347605, - 2.2097110277721317, - 2.298905048514066, - 2.366714203862809, - 2.412045975727516, - 2.4341623043366405, - 2.4326912279180104, - 2.407632748794624, - 2.3593588333847757, - 2.288607546106057, - 2.1964714096953304, - 2.0843801755091853, - 1.9540782755278119, - 1.8075973116573905, - 1.6472240161909646, - 1.4754641887120756, - 1.2950031781742162, - 1.1086635333808945, - 0.9193604897422022, - 0.730055994307723, - 0.5437119941293408, - 0.3632437246244449, - 0.19147373460789804, - 0.031087373049219935, - -0.11540956044797578, - -0.2457303335650166, - -0.3578433443657625, - -0.45000416083570915, - -0.520783031579332, - -0.5690874338162453, - -0.5941793030807225, - -0.5956866729017324, - -0.573609540898935, - -0.5283198687826783, - -0.46055571625797775, - -0.3714096013445981, - -0.2623112706774805, - -0.13500515151050974, - 0.008477158980584959, - 0.16584893323789918, - 0.33460437641814034, - 0.5120581443121675, - 0.695387692865259, - 0.8816777914207614, - 1.067966497686598, - 1.2512918693730635, - 1.4287386758301852, - 1.5974843730141488, - 1.7548436167314077, - 1.8983106121580948, - 2.0255986317604138, - 2.1346760783915837, - 2.2237985248305954, - 2.2915362244798665, - 2.336796659361488, - 2.3588417698164483, - 2.357299594185016, - 2.3321701349025403, - 2.2838253584993895, - 2.213003329505005, - 2.1207965707678684, - 2.008634833756317, - 1.8782625505617716, - 1.7317113232015588, - 1.5712678840798309, - 1.3994380328905125, - 1.2189071186979026, - 1.0324976904159733, - 0.8431249835649379, - 0.6537509453044729, - 0.467337522796356, - 0.2867999515670256, - 0.11496078054128811, - -0.045494641202175626, - -0.19206051395055868, - -0.3224501052764407, - -0.4346318131351449, - -0.5268612054036272, - -0.5977085305780241, - -0.6460812657697739, - -0.6712413464053183, - -0.6728168059059327, - -0.6508076417837518, - -0.6055858156417401, - -0.5378893870777656, - -0.44881087400468483, - -0.3397800229507917, - -0.21254126106344443, - -0.06912618541171059, - 0.08817847655274544, - 0.25686693009224704, - 0.4342538311034987, - 0.6175166356373579, - 0.8037401131424851, - 0.989962321432434, - 1.1732213183225872, - 1.3506018732671123, - 1.519281442327153, - 1.6765746814133866, - 1.8199757958065392, - 1.9471980580768142, - 2.05620987118123, - 2.145266808002173, - 2.2129391220456753, - 2.258134295437027, - 2.28011426862041, - 2.278507080038861, - 2.2533127322303814, - 2.204903191827831, - 2.1340165234629627, - 2.04174525008639, - 1.9295191232681228, - 1.7990825752011763, - 1.6524672080046536, - 1.4919597541840233, - 1.3200660135342592, - 1.1394713352203818, - 0.9529982682569652, - 0.763562048264709, - 0.574124622504012, - 0.3876479382364977, - 0.20704723108866074, - 0.035145050084756956, - -0.12537325559701373, - -0.27200188614460563, - -0.4024541090312659, - -0.5146983221134045, - -0.6069900931693828, - -0.6778996705968214, - -0.726334531408974, - -0.7515566109339976, - -0.7531939424953044, - -0.7312465235073454, - -0.6860863154756132, - -0.6184513779007251, - -0.5294342285981737, - -0.4204646139995128, - -0.2932869611554972, - -0.14993286703861355, - 0.0073109409955429555, - 0.1759386683058362, - 0.35326497088472997, - 0.5364673048787901, - 0.7226304398319059, - 0.908792433652919, - 1.0919913442524711, - 1.2693119411799438, - 1.4379316805907392, - 1.595165218490099, - 1.7385067602529518, - 1.8656695785436028, - 1.97462207641291, - 2.0636198268371766, - 2.131233083415805, - 2.176369328367188, - 2.1982905022286037, - 2.1966246435360244, - 2.171371754920071, - 2.1229038031060012, - 2.051958852817758, - 1.9596294270981471, - 1.8473452776089367, - 1.7168508366349582, - 1.5701777063864393, - 1.4096126194601064, - 1.2376613757416859, - 1.0570093244876233, - 0.8704790148028809, - 0.6809856823986363, - 0.4914912746250467, - 0.3049577388337259, - 0.12430031074136805, - -0.04765846053829031, - -0.2082332257377011, - -0.35491818495561256, - -0.4854266055766414, - -0.5977268853684536, - -0.6900745920204432, - -0.7610399738421285, - -0.8095305077585978, - -0.8348081290101985, - -0.8365008708325812, - -0.8146087305526457, - -0.7695036695886457, - -0.7019237473541011, - -0.6129614815777301, - -0.5040466186043318, - -0.37692358539791104, - -0.23362397884507963, - -0.07643452621534658, - 0.09213897793596508, - 0.26941118968702205, - 0.4525595652697195, - 0.6386688743135848, - 0.8247771748120349, - 1.0079225247605004, - 1.1851896937929496, - 1.3537561381492416, - 1.5109365139188424, - 1.6542250265606282, - 1.7813349488226122, - 1.8902346838390198, - 1.9791798046695959, - 2.0467405649967785, - 2.0918244471220193, - 2.113693391665234, - 2.111975437244815, - 2.086670586573653, - 2.038150806459112, - 1.9671541617070305, - 1.8747731754416896, - 1.7624375994061847, - 1.6318918659668074, - 1.4851675774147528, - 1.324551466427562, - 1.152549332971696, - 0.9718465263832579, - 0.7852655958477261, - 0.5957217771565592, - 0.4061770177393952, - 0.21959326502760632, - 0.03888575481676169, - -0.13312296370029958, - -0.2937475411771329, - -0.44048217763345965, - -0.5710401403755784, - -0.6833898270930423, - -0.7757868053973229, - -0.8468013235200909, - -0.8953408583086822, - -0.9206673449261159, - -0.9224088165309217, - -0.9005652703730798, - -0.8555086677940531, - -0.7879770681307343, - -0.6990629890357332, - -0.5901961767776251, - -0.46312105824481453, - -0.3198692302479166, - -0.1627274199809534, - 0.005798578076012806, - 0.1830234200757762, - 0.3661245623252567, - 0.552186774528401, - 0.7382481147532575, - 0.9213466410693294, - 1.0985671231849254, - 1.2670870174128952, - 1.4242209799164773, - 1.5674632162279167, - 1.6945269991682586, - 1.8033807319448831, - 1.8922799876898033, - 1.9597950201579528, - 2.004833311723043, - 2.026656803076982, - 2.024893532909953, - 1.999543504006371, - 1.950978683244978, - 1.8799371355027277, - 1.787511383974807, - 1.67513118047517, - 1.5445409574402622, - 1.397772317231627, - 1.2371119925968102, - 1.065065783572404, - 0.8843190395638119, - 0.6976943098262294, - 0.5081068302196057, - 0.3185185482430315, - 0.1318914113965231, - -0.048859344455757354, - -0.22091117005269179, - -0.38157871597970283, - -0.528356182189024, - -0.6589568359192495, - -0.7713490747921736, - -0.8637884663523002, - -0.9348452587641528, - -0.9834269288085198, - -1.0087954115818332, - -1.0105787401762518, - -0.9887769117756565, - -0.9437618876556533, - -0.876271727087593, - -0.7873989476585382, - -0.6785732955715403, - -0.5515391976504405, - -0.4083282506409924, - -0.2512271816726907, - -0.08274178516134802, - 0.09444259511033534, - 0.27750341551320784, - 0.46352544581446686, - 0.6495467441456915, - 0.8326053686396193, - 1.0097860890674157, - 1.1782663618054428, - 1.3353608430790764, - 1.4785637384826227, - 1.60558832089948, - 1.7144029935987972, - 1.8032633297745244, - 1.8707395832430083, - 1.9157392364391441, - 1.9375242301157498, - 1.9357226030238972, - 1.910334358008604, - 1.8617314620089078, - 1.7906519799617842, - 1.6981884351224794, - 1.58577057936462, - 1.4551428451841444, - 1.308336835001771, - 1.1476392816241394, - 0.9755559851461614, - 0.7947722950324159, - 0.608110760596128, - 0.41848661775570667, - 0.228861814067796, - 0.04219829709008652, - -0.13858869725596618, - -0.31067661965152493, - -0.47138012062526197, - -0.6181934000726319, - -0.7488297251755176, - -0.8612574934998583, - -0.953732272533574, - -1.0248243103854686, - -1.073441083780673, - -1.0988445277601868, - -1.1006626753609803, - -1.0788955237119189, - -1.0339150340338406, - -0.9664592655435722, - -0.8776207357738979, - -0.7688291908739793, - -0.6418290576133958, - -0.49865193268437735, - -0.34158454316292514, - -0.17313268341203147, - 0.004018302838768358, - 0.18704587201280232, - 0.37303479393019556, - 0.5590231267748148, - 0.7420489287314521, - 0.9191969696226056, - 1.0876447058766519, - 1.2447067937700602, - 1.3878774389487263, - 1.5148699143469098, - 1.6236526232841688, - 1.7124811390049994, - 1.7799257153760344, - 1.8248938348821926, - 1.8466474383261953, - 1.844814564508577, - 1.8193952163236977, - 1.7707613607597334, - 1.699651062802662, - 1.6071568457562364, - 1.4947084615424706, - 1.3640503427054675, - 1.2172140917142225, - 1.0564864414229693, - 0.8843731919743901, - 0.7035596928800567, - 0.5168684934998251, - 0.32721482979970395, - 0.1375606493827901, - -0.04913210014683721, - -0.22994818282148694, - -0.4020650492767972, - -0.5627973499956884, - -0.7096392848277726, - -0.8403041209097639, - -0.9527602557624679, - -1.045263256829418, - -1.11638337217465, - -1.1650280784789597, - -1.1904593107391273, - -1.1923051019483257, - -1.1705654491918023, - -1.1256123136469585, - -1.058183754487371, - -0.9693722892028567, - -0.8606076638998523, - -0.7336343053054247, - -0.5904838100696768, - -0.43344290522658246, - -0.26501738509678824, - -0.08789259336866712, - 0.09510892642253929, - 0.28107194413800785, - 0.46703451800251017, - 0.6500347062414352, - 0.8271572787183032, - 0.9955796919012941, - 1.152616602106704, - 1.2957622150203538, - 1.4227298036158742, - 1.5314877712524138, - 1.6202916912134981, - 1.6877118174045507, - 1.732655632348945, - 1.7543850768878975, - 1.752528189860123, - 1.7270849741978667, - 1.6784273969269243, - 1.607293523070829, - 1.514775875970565, - 1.402304207585181, - 1.2716229504956214, - 1.1247637072071268, - 0.9640132106101726, - 0.7918772608838787, - 0.6110412075756062, - 0.42432760008109316, - 0.2346516744010563, - 0.044975378173998576, - -0.14173934096115687, - -0.32257724700160517, - -0.4947157905487768, - -0.6554696220511562, - -0.8023329413247177, - -0.9330190154723756, - -1.0454962419813159, - -1.1380201882616368, - -1.2091611023443205, - -1.2578264608773586, - -1.283278198825027, - -1.2851443491480126, - -1.2634249088994112, - -1.2184918392247268, - -1.151083199265892, - -1.0622915064812373, - -0.9535465069460429, - -0.8265926273560811, - -0.6834614643309055, - -0.5264397448740927, - -0.35803326327603835, - -0.18092736319482305, - 0.0020554118641610206, - 0.1879998317918643, - 0.37394395484191695, - 0.5569258392690946, - 0.7340302549656686, - 0.9024346584286554, - 1.0594537060031515, - 1.202581603402662, - 1.3295316236288737, - 1.4382721700687497, - 1.5270588160332956, - 1.5944618154552035, - 1.6393886508850815, - 1.6611012631907571, - 1.6592276912375703, - 1.6337679379841257, - 1.5850939704823945, - 1.5139438537816796, - 1.4214101112486328, - 1.3089224948676736, - 1.1782254372451035, - 1.0313505409110233, - 0.8705845387808506, - 0.6984332310578291, - 0.5175819673135469, - 0.3308532969678363, - 0.14116245604535976, - -0.048528607791727504, - -0.23525794688119167, - -0.416110325197563, - -0.588263193319384, - -0.7490312016721299, - -0.8959085500494745, - -1.0266085055322058, - -1.1390994655855562, - -1.231636997598178, - -1.3027913495795689, - -1.3514699981562188, - -1.376934878271571, - -1.378814022865582, - -1.3571074289708265, - -1.3121870577124675, - -1.2447909682123375, - -1.1560116779091052, - -1.0472789328583905, - -0.9203371597368684, - -0.7772179551444893, - -0.6202080460659527, - -0.451813226773363, - -0.27471884090632337, - -0.09174743195205527, - 0.09418576999825339, - 0.28011882321637516, - 0.46308978597456096, - 0.6401834281819082, - 0.8085772063524542, - 0.9655857768481859, - 1.1087033453992847, - 1.2356431850237917, - 1.3443736991247082, - 1.4331504610286303, - 1.500543724684023, - 1.5454609726568376, - 1.5671641458301266, - 1.5652812830840843, - 1.5398123873920104, - 1.4911294258201893, - 1.4199704634323225, - 1.3274280236089437, - 1.2149318583482742, - 1.0842264002698219, - 0.9373432519172054, - 0.7765691462188307, - 0.6044098833908123, - 0.4235508130173201, - 0.23681448453042697, - 0.04711613396681444, - -0.1425822909996033, - -0.3293188426946228, - -0.5101782850815526, - -0.6823380687275594, - -0.8431128440475879, - -0.9899968108245988, - -1.120703236128892, - -1.2332005174151885, - -1.325744222062287, - -1.3969045980700252, - -1.4455891220554369, - -1.47105972895262, - -1.4729444516924313, - -1.4512432872986691, - -1.406328196887968, - -1.3389372395738697, - -1.2501629327867796, - -1.1414350225743553, - -1.0144979356058905, - -0.8713832684739673, - -0.7143777481561044, - -0.5459871689173035, - -0.3688968743903836, - -0.18592940805609315, - 1.8524627099266593e-13, - 0.18592940805646005, - 0.36889687439049484, - 0.5459871689173306, - 0.7143777481562026, - 0.8713832684743386, - 1.014497935606161, - 1.1414350225745404, - 1.2501629327867945, - 1.3389372395738828, - 1.4063281968880514, - 1.451243287298738, - 1.4729444516924537, - 1.4710597289526066, - 1.445589122055432, - 1.396904598069952, - 1.3257442220621294, - 1.2332005174149892, - 1.1207032361286553, - 0.989996810824519, - 0.8431128440475641, - 0.6823380687274558, - 0.5101782850812079, - 0.3293188426942643, - 0.14258229099923675, - -0.04711613396718592, - -0.23681448453062867, - -0.4235508130175959, - -0.6044098833911573, - -0.7765691462191546, - -0.9373432519174387, - -1.0842264002699684, - -1.2149318583482938, - -1.32742802360905, - -1.4199704634324386, - -1.4911294258203265, - -1.5398123873920477, - -1.5652812830840976, - -1.5671641458301142, - -1.5454609726567998, - -1.5005437246839088, - -1.4331504610284735, - -1.3443736991245103, - -1.2356431850237226, - -1.1087033453992636, - -0.9655857768478164, - -0.8085772063520599, - -0.6401834281815647, - -0.46308978597428546, - -0.2801188232163453, - -0.0941857699982246, - 0.09174743195233676, - 0.2747188409066812, - 0.45181322677370783, - 0.6202080460662058, - 0.7772179551445767, - 0.9203371597369473, - 1.0472789328586254, - 1.1560116779093035, - 1.2447909682124954, - 1.3121870577125079, - 1.357107428970831, - 1.3788140228655839, - 1.3769348782715483, - 1.351469998156149, - 1.3027913495794536, - 1.2316369975981005, - 1.1390994655855393, - 1.0266085055320202, - 0.8959085500492052, - 0.7490312016718295, - 0.5882631933191358, - 0.416110325197536, - 0.23525794688116347, - 0.04852860779144304, - -0.1411624560458173, - -0.33085329696820415, - -0.5175819673136591, - -0.6984332310578558, - -0.8705845387809484, - -1.0313505409113235, - -1.178225437245374, - -1.3089224948679097, - -1.4214101112487398, - -1.513943853781734, - -1.5850939704824256, - -1.6337679379842185, - -1.6592276912375943, - -1.6611012631907442, - -1.6393886508850446, - -1.594461815455195, - -1.5270588160331702, - -1.4382721700685508, - -1.3295316236286372, - -1.2025816034023928, - -1.059453706002854, - -0.9024346584284053, - -0.7340302549653248, - -0.5569258392687357, - -0.3739439548415501, - -0.1879998317914951, - -0.002055411864047039, - 0.180927363194933, - 0.35803326327622365, - 0.526439744874416, - 0.6834614643312046, - 0.8265926273563569, - 0.9535465069460624, - 1.062291506481345, - 1.1510831992660078, - 1.2184918392248405, - 1.2634249088994811, - 1.285144349148036, - 1.2832781988250241, - 1.2578264608773524, - 1.2091611023441937, - 1.1380201882614052, - 1.0454962419811182, - 0.9330190154723068, - 0.8023329413246955, - 0.6554696220510596, - 0.4947157905484524, - 0.322577247001261, - 0.14173934096079766, - -0.0449753781741122, - -0.23465167440108572, - -0.42432760008146203, - -0.6110412075759644, - -0.7918772608842239, - -0.9640132106104261, - -1.1247637072071517, - -1.2716229504956424, - -1.4023042075853582, - -1.5147758759707641, - -1.6072935230709875, - -1.6784273969270171, - -1.727084974197883, - -1.752528189860124, - -1.7543850768878744, - -1.7326556323488767, - -1.6877118174044365, - -1.6202916912134537, - -1.5314877712523982, - -1.422729803615798, - -1.2957622150200843, - -1.1526166021064042, - -0.995579691900822, - -0.8271572787181222, - -0.6500347062414074, - -0.4670345180022274, - -0.28107194413763703, - -0.09510892642217142, - 0.08789259336894391, - 0.2650173850969735, - 0.43344290522660756, - 0.5904838100698393, - 0.7336343053056873, - 0.8606076639000879, - 0.9693722892029626, - 1.0581837544874237, - 1.1256123136469882, - 1.17056544919184, - 1.1923051019483486, - 1.1904593107391033, - 1.1650280784788902, - 1.1163833721746204, - 1.0452632568292586, - 0.9527602557622686, - 0.840304120909527, - 0.7096392848275019, - 0.5627973499954612, - 0.4020650492767718, - 0.2299481828214586, - 0.04913210014655878, - -0.13756064938315704, - -0.32721482980007377, - -0.5168684935001939, - -0.7035596928800851, - -0.8843731919744953, - -1.0564864414232935, - -1.217214091714521, - -1.3640503427057373, - -1.4947084615425485, - -1.6071568457562524, - -1.6996510628027053, - -1.770761360759848, - -1.8193952163237679, - -1.8448145645086131, - -1.846647438326194, - -1.8248938348821861, - -1.7799257153759407, - -1.7124811390048427, - -1.6236526232839712, - -1.514869914346733, - -1.387877438948704, - -1.2447067937700358, - -1.0876447058763241, - -0.9191969696222624, - -0.7420489287310945, - -0.5590231267747022, - -0.3730347939301658, - -0.1870458720126897, - -0.004018302838410738, - 0.1731326834123753, - 0.3415845431632498, - 0.4986519326844728, - 0.6418290576134162, - 0.7688291908742134, - 0.8776207357740955, - 0.9664592655437304, - 1.0339150340339343, - 1.078895523711956, - 1.1006626753609814, - 1.0988445277601642, - 1.073441083780604, - 1.0248243103853532, - 0.9537322725333732, - 0.8612574934996153, - 0.7488297251754404, - 0.6181934000723628, - 0.4713801206249625, - 0.31067661965119986, - 0.13858869725562145, - -0.04219829709019608, - -0.22886181406791017, - -0.41848661775590695, - -0.6081107605964959, - -0.7947722950328604, - -0.9755559851464293, - -1.147639281624165, - -1.3083368350019335, - -1.4551428451843493, - -1.5857705793648575, - -1.6981884351226795, - -1.7906519799619092, - -1.8617314620089165, - -1.9103343580086336, - -1.9357226030239327, - -1.9375242301157283, - -1.9157392364390748, - -1.870739583242976, - -1.8032633297745135, - -1.7144029935987317, - -1.6055883208992454, - -1.4785637384823538, - -1.3353608430787762, - -1.1782663618053466, - -1.009786089067313, - -0.8326053686393419, - -0.6495467441453255, - -0.4635254458140967, - -0.2775034155129237, - -0.09444259511030811, - 0.08274178516137659, - 0.2512271816729367, - 0.4083282506412913, - 0.5515391976507102, - 0.6785732955717738, - 0.7873989476585537, - 0.8762717270876375, - 0.9437618876557661, - 0.9887769117757258, - 1.0105787401762738, - 1.0087954115818307, - 0.9834269288085156, - 0.9348452587641111, - 0.8637884663521426, - 0.7713490747919333, - 0.6589568359190703, - 0.5283561821890023, - 0.3815787159796793, - 0.22091117005243782, - 0.04885934445541413, - -0.13189141139688193, - -0.31851854824331466, - -0.5081068302198061, - -0.6976943098262601, - -0.884319039564168, - -1.0650657835727468, - -1.2371119925971354, - -1.3977723172317886, - -1.5445409574403508, - -1.6751311804752391, - -1.7875113839750036, - -1.8799371355028853, - -1.9509786832450922, - -1.9995435040064415, - -2.024893532909979, - -2.0266568030769587, - -2.0048333117229724, - -1.9597950201578391, - -1.892279987689646, - -1.8033807319447361, - -1.6945269991682397, - -1.5674632162277702, - -1.424220979916245, - -1.2670870174125697, - -1.0985671231845013, - -0.9213466410692208, - -0.7382481147531423, - -0.552186774528203, - -0.36612456232488977, - -0.18302342007541678, - -0.005798578075669539, - 0.16272741998105605, - 0.3198692302479389, - 0.46312105824489413, - 0.5901961767779689, - 0.6990629890359804, - 0.78797706813086, - 0.8555086677940621, - 0.900565270373084, - 0.9224088165309352, - 0.9206673449260938, - 0.895340858308612, - 0.8468013235200078, - 0.775786805397309, - 0.6833898270929248, - 0.5710401403753442, - 0.44048217763318975, - 0.29374754117683344, - 0.1331229637002006, - -0.038885754816789665, - -0.2195932650277173, - -0.40617701773976367, - -0.5957217771569293, - -0.7852655958480927, - -0.9718465263833714, - -1.1525493329718062, - -1.3245514664278089, - -1.485167577415054, - -1.6318918659670765, - -1.762437599406372, - -1.8747731754417063, - -1.9671541617070432, - -2.038150806459196, - -2.0866705865737214, - -2.111975437244839, - -2.113693391665234, - -2.091824447122014, - -2.04674056499674, - -1.9791798046694384, - -1.8902346838388198, - -1.7813349488223778, - -1.654225026560483, - -1.5109365139187543, - -1.3537561381491396, - -1.185189693792763, - -1.0079225247600614, - -0.8247771748117538, - -0.6386688743133848, - -0.4525595652696915, - -0.26941118968682837, - -0.09213897793570136, - 0.07643452621566975, - 0.23362397884538022, - 0.37692358539812115, - 0.5040466186044488, - 0.612961481577927, - 0.7019237473542574, - 0.76950366958876, - 0.8146087305527155, - 0.8365008708325925, - 0.8348081290101965, - 0.8095305077585697, - 0.7610399738420134, - 0.6900745920202868, - 0.597726885368254, - 0.4854266055765203, - 0.3549181849555908, - 0.20823322573746592, - 0.04765846053796565, - -0.12430031074171191, - -0.3049577388340022, - -0.4914912746250751, - -0.680985682398666, - -0.870479014803164, - -1.0570093244880634, - -1.237661375742191, - -1.4096126194602097, - -1.570177706386462, - -1.7168508366350386, - -1.8473452776091728, - -1.959629427098347, - -2.051958852817916, - -2.1229038031060403, - -2.1713717549200764, - -2.196624643536026, - -2.198290502228581, - -2.17636932836712, - -2.1312330834157214, - -2.0636198268371633, - -1.9746220764128948, - -1.865669578543417, - -1.7385067602526831, - -1.5951652184897995, - -1.4379316805904914, - -1.269311941179759, - -1.0919913442522753, - -0.9087924336525532, - -0.7226304398315366, - -0.5364673048784221, - -0.3532649708845381, - -0.17593866830572802, - -0.007310940995444326, - 0.14993286703891207, - 0.2932869611557668, - 0.4204646139997473, - 0.5294342285983793, - 0.6184513779007386, - 0.686086315475696, - 0.7312465235074139, - 0.7531939424953276, - 0.7515566109339731, - 0.7263345314089268, - 0.6778996705968132, - 0.6069900931692969, - 0.5146983221132471, - 0.40245410903096906, - 0.27200188614433585, - 0.12537325559692603, - -0.03514505008485985, - -0.20704723108884643, - -0.3876479382368573, - -0.5741246225043797, - -0.7635620482650779, - -0.9529982682570806, - -1.1394713352204102, - -1.320066013534683, - -1.4919597541844274, - -1.6524672080049534, - -1.7990825752013873, - -1.9295191232681428, - -2.0417452500864046, - -2.1340165234630804, - -2.2049031918279454, - -2.2533127322304507, - -2.2785070800388856, - -2.2801142686203977, - -2.258134295437, - -2.2129391220455616, - -2.1452668080020154, - -2.056209871181033, - -1.9471980580767454, - -1.8199757958065161, - -1.6765746814132925, - -1.5192814423268293, - -1.3506018732667675, - -1.1732213183220668, - -0.9899623214322371, - -0.803740113142455, - -0.6175166356370769, - -0.43425383110313903, - -0.25686693009190287, - -0.08817847655249308, - 0.06912618541173499, - 0.21254126106346471, - 0.3397800229509703, - 0.4488108740049242, - 0.5378893870779224, - 0.6055858156417814, - 0.650807641783756, - 0.6728168059059343, - 0.6712413464052966, - 0.6460812657697045, - 0.5977085305779095, - 0.5268612054035411, - 0.4346318131350875, - 0.32245010527636464, - 0.1920605139502301, - 0.04549464120187545, - -0.11496078054153555, - -0.28679995156721294, - -0.46733752279638485, - -0.6537509453046709, - -0.8431249835652244, - -1.0324976904163397, - -1.2189071186982616, - -1.3994380328908584, - -1.5712678840800791, - -1.7317113232017216, - -1.8782625505620414, - -2.008634833756552, - -2.1207965707680674, - -2.2130033295050593, - -2.2838253584993993, - -2.3321701349025568, - -2.3572995941850383, - -2.3588417698164252, - -2.336796659361431, - -2.2915362244798567, - -2.223798524830584, - -2.1346760783914256, - -2.025598631760177, - -1.8983106121578257, - -1.7548436167311803, - -1.597484373014124, - -1.4287386758301577, - -1.2512918693727018, - -1.0679664976860639, - -0.8816777914203915, - -0.6953876928651461, - -0.5120581443121399, - -0.334604376418035, - -0.16584893323757616, - -0.00847715898028574, - 0.13500515151078046, - 0.2623112706775569, - 0.37140960134461365, - 0.46055571625813474, - 0.5283198687827915, - 0.5736095408990054, - 0.5956866729017556, - 0.5941793030807201, - 0.5690874338162396, - 0.5207830315792376, - 0.4500041608355524, - 0.357843344365565, - 0.2457303335648382, - 0.11540956044788835, - -0.031087373049316858, - -0.19147373460822248, - -0.3632437246247873, - -0.5437119941296993, - -0.730055994307836, - -0.9193604897422326, - -1.1086635333810082, - -1.2950031781745737, - -1.475464188712421, - -1.6472240161912959, - -1.8075973116574147, - -1.9540782755278345, - -2.084380175509363, - -2.196471409695529, - -2.288607546106216, - -2.359358833384868, - -2.4076327487946627, - -2.4326912279180126, - -2.434162304336628, - -2.4120459757274384, - -2.3667142038626947, - -2.298905048513981, - -2.2097110277720766, - -2.1005618883475283, - -1.9732020575746132, - -1.8296631327135011, - -1.6722318414118729, - -1.5034139786068872, - -1.325894888606248, - -1.14249711556758, - -0.9561358902559447, - -0.7697731550752305, - -0.5863708524320478, - -0.4088442130979395, - -0.24001578124278156, - -0.08257090119097817, - 0.06098463209892066, - 0.18836409095288967, - 0.2975358780797572, - 0.38675556610964024, - 0.4545934082913527, - 0.499956886488774, - 0.5221079408803333, - 0.5206746096389095, - 0.49565689502798715, - 0.4474267634014744, - 0.3767222791078102, - 0.2846359648098681, - 0.17259757178551308, - 0.042351531931621264, - -0.10407055293373013, - -0.264381950610285, - -0.4360768616126841, - -0.6164699370902121, - -0.8027386283460891, - -0.9919677000823375, - -1.1811952053661865, - -1.3674591972672534, - -1.5478444404949085, - -1.7195283863654458, - -1.8798256860447473, - -2.026230540069728, - -2.1564562162673884, - -2.26847111285191, - -2.360530797963684, - -2.431205520366839, - -2.4794027574452917, - -2.504384444902664, - -2.5057786164419342, - -2.483585269861517, - -2.438176367055126, - -2.3702899679162845, - -2.281018590657741, - -2.171791982112243, - -2.04435456973634, - -1.900737950912802, - -1.7432288534115574, - -1.574333072293112, - -1.396735951988161, - -1.2132600367777244, - -1.0268205575497609, - -0.8403794568319836, - -0.656898677154496, - -0.47929344941327706, - -0.3103863179020515, - -0.15286262706949555, - -0.009228171998803977, - 0.11823031951175814, - 0.2274812500460774, - 0.31678019210921116, - 0.384697398824814, - 0.4301403519314242, - 0.45237099148200466, - 0.4510173555238127, - 0.4260794461943974, - 0.3779292297216713, - 0.30730477032789993, - 0.21529859054961942, - 0.10334044153822698, - -0.026825244936383594, - -0.17316686718314903, - -0.3333976931283589, - -0.5050119234141339, - -0.6853242093169151, - -0.8715120022679057, - -1.0606600670968986, - -1.249806456999036, - -1.435989225171602, - -1.6162931364524875, - -1.7878956422861205, - -1.948111393967603, - -2.0944345921625027, - -2.224578504826425, - -2.336511530302752, - -2.42848923686119, - -2.4990818733953137, - -2.5471969174188276, - -2.5720963047650356, - -2.5734080692668337, - -2.551132208852775, - -2.5056406855470286, - -2.437671559373425, - -2.3483173486753146, - -2.2390078004162044, - -2.1114873421838762, - -1.9677875714920994, - -1.810195216242343, - -1.641216071626223, - -1.463535482206051, - -1.2799759923947334, - -1.0934528332123659, - -0.9069279473188944, - -0.7233632773767309, - -0.545674054413898, - -0.3766828228568008, - -0.21907492728731007, - -0.07535616292149704, - 0.052186742309253895, - 0.1615221908555946, - 0.2509057550890955, - 0.31890768799992447, - 0.3644354711926761, - 0.3867510445863118, - 0.38548244609403404, - 0.3606296777191377, - 0.3125647055550227, - 0.24202559368934845, - 0.15010486452382787, - 0.03823226907505563, - -0.09184776102210691, - -0.23810362421198183, - -0.39824858855657064, - -0.569776854833247, - -0.7500030744542685, - -0.9361046989866666, - -1.1251664933962897, - -1.3142265110144393, - -1.5003228051752138, - -1.6805401408530445, - -1.8520559696286665, - -2.0121849429340637, - -2.158421261571961, - -2.288478193635269, - -2.400324137604758, - -2.492214661887611, - -2.5627200155148597, - -2.6107476761381836, - -2.635559579728872, - -2.636783760258014, - -2.614420215792448, - -2.5688409084946864, - -2.500783898527349, - -2.411341704372563, - -2.301944073132833, - -2.1743354325347832, - -2.030547380231364, - -1.8728666442637742, - -1.7037990199631516, - -1.526029852031548, - -1.3423816850218269, - -1.155769750093702, - -0.9691559900472135, - -0.7855023476857996, - -0.6077240541776499, - -0.4386436540900376, - -0.28094649214525624, - -0.13713836370036958, - -0.009505996827910451, - 0.09991901078119866, - 0.18939223135729844, - 0.2574839177489343, - 0.30310155141902784, - 0.3255070721447133, - 0.32432851769703563, - 0.29956588993712474, - 0.25159115481608785, - 0.18114237627905722, - 0.08931207658516159, - -0.022469993392114126, - -0.15245940216054188, - -0.29862454830750623, - -0.45867870003836586, - -0.6301160582739135, - -0.8102512745700461, - -0.9962618006376751, - -1.1852324015860063, - -1.3742011308905915, - -1.560206042029693, - -1.740331900121806, - -1.9117561568926034, - -2.0717934639184437, - -2.217938022146971, - -2.347903099815616, - -2.4596570955503636, - -2.5514555779035675, - -2.621868796051874, - -2.669804227792193, - -2.6945238092415087, - -2.6956555745166955, - -2.673199521830558, - -2.6275276134917354, - -2.5593779098089247, - -2.469842929410669, - -2.3603524195461283, - -2.232650808088517, - -2.0887696928378077, - -1.9309958019818327, - -1.7618349309987986, - -1.5839724247379878, - -1.400230827900066, - -1.2135253717922172, - -1.0268179993620001, - -0.8430706535604989, - -0.6651985657038078, - -0.4960242805077282, - -0.3382331428427173, - -0.19433094821422267, - -0.06660442484336267, - 0.04291482943055584, - 0.1324823866889499, - 0.20066849963116257, - 0.246380649571155, - 0.26888077613673894, - 0.2677969169496555, - 0.24312907372144377, - 0.19524921225347486, - 0.124895396341178, - 0.03316014809367199, - -0.07852678176548479, - -0.20842096189455508, - -0.3544907910312771, - -0.5144495375317721, - -0.6857914024669102, - -0.8658310375435834, - -1.0517458946235436, - -1.2406207389675, - -1.4294936242022236, - -1.615402603956893, - -1.795432443501584, - -1.9667605947136029, - -2.126701709321156, - -2.2727499884237288, - -2.402618700411214, - -2.514276244061143, - -2.605978188078436, - -2.676294781792132, - -2.7241335031518474, - -2.7487562884272267, - -2.7497911718879875, - -2.7272381518999094, - -2.6814691909248305, - -2.6132223494246016, - -2.523590146181312, - -2.4140023285972987, - -2.2862033246997724, - -2.1422247324424655, - -1.9843532801670893, - -1.8150947635059995, - -1.6371345274627531, - -1.4532951168917734, - -1.2664917632551933, - -1.0796864096551635, - -0.8958409991973357, - -0.7178707633530599, - -0.548598246992561, - -0.39070879514158846, - -0.24670820346086467, - -0.11888320032707948, - -0.009265383734915714, - 0.08040081824130044, - 0.14868565814531826, - 0.1944966171352445, - 0.21709563468264986, - 0.2161107482531704, - 0.1915419594021015, - 0.1437612337744344, - 0.07350663500893796, - -0.018129314942037553, - -0.1297168655115405, - -0.25951158551478426, - -0.4054818738465355, - -0.5653409990199534, - -0.7365831622638811, - -0.9165230154423198, - -1.102338010574259, - -1.291112913078333, - -1.4798857767388842, - -1.665694655343468, - -1.8456243143202233, - -2.0168522057046423, - -2.1766929813828604, - -2.322640842613062, - -2.452409057943475, - -2.563966026310816, - -2.65556731657868, - -2.7257831782348445, - -2.7735210893880513, - -2.798042986467183, - -2.798976903901293, - -2.7763228402155997, - -2.7304527580314017, - -2.6621047179703647, - -2.5723712389742963, - -2.4626820686057003, - -2.33478163505155, - -2.190701536425715, - -2.032728501230163, - -1.863368325258023, - -1.6853063536731892, - -1.501365131490902, - -1.3144598903338194, - -1.1275525734650658, - -0.9436051241508876, - -0.7655327740245316, - -0.5961580681172056, - -0.43816635161595013, - -0.29406342034303334, - -0.1661360028364517, - -0.056415697252951424, - 0.033353068171370834, - 0.10174054581826693, - 0.14765421668374457, - 0.1703560200773511, - 0.16947399330229646, - 0.14500813775140736, - 0.09733041890718924, - 0.027178900245738297, - -0.06435389644323597, - -0.17583822075587452, - -0.30552964167045077, - -0.4513965582448879, - -0.6111522391551734, - -0.7822908857938445, - -0.9621271501880424, - -1.1478384845208245, - -1.3365096543745443, - -1.5251787136969166, - -1.7108837164395065, - -1.890709428194495, - -2.0618333011614487, - -2.2215699873911574, - -2.3674136883060473, - -2.497077672618701, - -2.6085303394303123, - -2.7000272577692073, - -2.770138677288189, - -2.817772076260877, - -2.842189391281141, - -2.843018656943135, - -2.8202598719373837, - -2.7742849990506415, - -2.7058320990699896, - -2.6159936911025534, - -2.5061995228768907, - -2.3781940227457175, - -2.2340087889888443, - -2.075930550274349, - -1.9064651025611266, - -1.7282977911792634, - -1.5442511613107581, - -1.3572404447446427, - -1.170227584910526, - -0.9861745252416492, - -0.8079964975372784, - -0.6385160469957779, - -0.48041851897155785, - -0.33620970945373696, - -0.20817634714762176, - -0.09835003037706057, - -0.008475187545600157, - 0.06001843356105263, - 0.10603831377107505, - 0.12884639222643582, - 0.12807070606250204, - 0.10371125650422135, - 0.056140008865926364, - -0.013904973544298038, - -0.10533116910497838, - -0.21670882758061802, - -0.3462935181178578, - -0.4920536399430906, - -0.6517024619014244, - -0.8227341855536701, - -1.0024634630961138, - -1.18806774688044, - -1.376631802657948, - -1.565193684546018, - -1.7507914466652876, - -1.9305098547772772, - -2.101526361250759, - -2.261155618306232, - -2.4068918275355315, - -2.536448257821597, - -2.6477933084350145, - -2.7391825485741204, - -2.80918622806171, - -2.8567118253415846, - -2.8810212771778576, - -2.881742618335062, - -2.8588758476740503, - -2.812792928152149, - -2.7442319207270733, - -2.654285344676839, - -2.5443829479004823, - -2.416269158921707, - -2.271975576191249, - -2.113788928548612, - -1.9442150121237058, - -1.7659391724181484, - -1.5817839547849115, - -1.3946645911844935, - -1.2075430252181487, - -1.023381200490961, - -0.845094348974026, - -0.6755050160375331, - -0.5172985472074498, - -0.3729807386449816, - -0.24483831922788873, - -0.13490288745216117, - -0.0449188718936135, - 0.023683979489633286, - 0.06981314735342554, - 0.09273057066704168, - 0.09206428639315246, - 0.06781429558394693, - 0.02035256338101421, - -0.04958284708061192, - -0.14089941435253317, - -0.252167388372417, - -0.3816423384598624, - -0.5272926640146837, - -0.6868316340552284, - -0.857753450316062, - -1.0373727651669835, - -1.222867031133235, - -1.4113210141397647, - -1.5997727684777696, - -1.7852603484418836, - -1.9648685199675404, - -2.1357747355979866, - -2.2952936477274752, - -2.440919458122173, - -2.5703654358391237, - -2.6815999803237727, - -2.772878660948742, - -2.8427717277114795, - -2.890186659230402, - -2.9143853924443386, - -2.914995962292714, - -2.8920183678113567, - -2.845824572132549, - -2.7771526363890366, - -2.6870950800340108, - -2.577081651141819, - -2.4488567784116078, - -2.3044520604695613, - -2.1461542263303506, - -1.9764690722994025, - -1.7980819440543878, - -1.6138153871239487, - -1.426584633644411, - -1.2393516273930145, - -1.0550783121503926, - -0.8766799200636324, - -0.7069789966797226, - -0.5486608877005104, - -0.4042313894636831, - -0.2759772310230408, - -0.1659300110510613, - -0.07583415830013669, - -0.007119420905196863, - 0.03912168161306166, - 0.062151088047146405, - 0.06159683518294658, - 0.03745892389565081, - -0.009890680850097602, - -0.07971391609631509, - -0.17091826057170773, - -0.28207396439108817, - -0.4114365970515982, - -0.5569745581304976, - -0.7164011168232368, - -0.8872104750418718, - -1.0667172853338363, - -1.2520990004022066, - -1.4404403863497568, - -1.6287794976454886, - -1.8141543887614866, - -1.993649825811394, - -2.164443261516327, - -2.3238493484488805, - -2.46936228855336, - -2.598695351065104, - -2.7098169356076554, - -2.8009826117320196, - -2.870762629614185, - -2.918064468051092, - -2.9421500641602094, - -2.9426474530595184, - -2.919556633963606, - -2.873249570183561, - -2.8044643230310404, - -2.7142934121381237, - -2.6041665857580396, - -2.4758282727692134, - -2.3313100719768807, - -2.17289871257492, - -2.003099991048269, - -1.8245992532534638, - -1.6402190448987035, - -1.4528745982997742, - -1.2655278574137139, - -1.0811407662007537, - -0.9026285569874765, - -0.7328137755002897, - -0.5743817676212524, - -0.42983832986782455, - -0.3014701914738029, - -0.19130895129162223, - -0.10109903825374834, - -0.0322702006750238, - 0.0140850417435789, - 0.03722862761421529, - 0.03678859354251207, - 0.012764940223366675, - -0.034470367559061105, - -0.10417926702733062, - -0.19526923709074726, - -0.30631052804453274, - -0.43555870956660353, - -0.5809821814147429, - -0.7402942129655293, - -0.9109890063118177, - -1.0903812141822238, - -1.2756482894601435, - -1.4638749984296122, - -1.6520993957406427, - -1.837359536046896, - -2.016740185643201, - -2.1874187974315333, - -2.346710024165895, - -2.492108067971996, - -2.6213261982665688, - -2.7323328148549337, - -2.8233834874696315, - -2.893048466467897, - -2.9402352308285247, - -2.9642057178506924, - -2.964587962834205, - -2.941381965175427, - -2.8949596883672752, - -2.8260591939034505, - -2.7357730015980835, - -2.6255308598863625, - -2.49707719782871, - -2.352443614412387, - -2.1939168390138035, - -2.0240026683001098, - -1.8453864483101667, - -1.6608907249344518, - -1.473430730671254, - -1.285968409659561, - -1.1014657060427178, - -0.9228378523298728, - -0.7529073944298709, - -0.5943596784074388, - -0.4497005009627034, - -0.3212165915121187, - -0.21093954909130647, - -0.12061380281540839, - -0.05166910118218289, - -0.0051979640756121825, - 0.018061546933554454, - 0.017737468267840187, - -0.006170199561054093, - -0.05328949195203732, - -0.1228823463108553, - -0.21385624173000456, - -0.3247814286883186, - -0.45391347704682, - -0.599220786746713, - -0.7584166273479453, - -0.9289952011268316, - -1.1082711609954279, - -1.2934219600212726, - -1.4815323646716236, - -1.669640429779973, - -1.8547842101838565, - -2.034048472361615, - -2.2046106693994245, - -2.3637854542351002, - -2.5090670291781993, - -2.638168663829046, - -2.749058758177047, - -2.8399928821388527, - -2.9095412862558265, - -2.9566114496907927, - -2.9804653099269496, - -2.9807309024483164, - -2.957408226835507, - -2.910869246765733, - -2.8418520239168794, - -2.751449078287305, - -2.6410901584968274, - -2.512519693790103, - -2.36776928333916, - -2.2091256567045168, - -2.039094610737812, - -1.8603614916624507, - -1.6757488455539182, - -1.4881719050949038, - -1.3005926146093234, - -1.1159729184248035, - -0.9372280492353239, - -0.7671805531343019, - -0.608515776371902, - -0.463739515832848, - -0.3351385011185267, - -0.22474433144918907, - -0.13430143612502532, - -0.06523956382899397, - -0.01865123463004581, - 0.004725489716047901, - 0.004518645446715763, - -0.019271767111428195, - -0.06627378354258315, - -0.13574934143756018, - -0.2266059200741261, - -0.33741377011626444, - -0.4664284616104245, - -0.6116183946831741, - -0.7706968390798137, - -0.9411579972620696, - -1.1203165223270015, - -1.3053498675280764, - -1.4933427995176909, - -1.6813333733153568, - -1.8663596439437133, - -2.0455063780667526, - -2.215951028956159, - -2.375008249735388, - -2.520172242899598, - -2.649156278235116, - -2.7599287559169827, - -2.8507452460472837, - -2.920175999353333, - -2.967128495183627, - -2.9908646712073264, - -2.991012563094234, - -2.9675721706107776, - -2.9209154576201137, - -2.8517804859860316, - -2.7612597758929747, - -2.650783076146577, - -2.5220948161771437, - -2.3772265953432274, - -2.218465143391283, - -2.0483162573590366, - -1.8694652836560643, - -1.6847347685435525, - -1.497039944890301, - -1.3093427572068077, - -1.1246051500067928, - -0.9457423561704259, - -0.7755769219774866, - -0.6167941938636955, - -0.4718999689004558, - -0.34318097687569094, - -0.23266881719574503, - -0.14210791934723271, - -0.0729280321992489, - -0.026221676007154304, - -0.002726912713152979, - -0.002815706266259932, - -0.026488056526236176, - -0.07337199926364323, - -0.14272947225586508, - -0.2334679549672386, - -0.3441576982480312, - -0.47305427233122005, - -0.618126077529865, - -0.7770863837758738, - -0.9474293937174432, - -1.1264697606386989, - -1.3113849379790534, - -1.499259692577832, - -1.6871320796408256, - -1.8720401543776508, - -2.0510686836389382, - -2.221395120883185, - -2.380334119420049, - -2.525379881931615, - -2.654245678390917, - -2.764899909159575, - -2.8555981445268013, - -2.924910635406255, - -2.971744861333315, - -2.995362760163907, - -2.995392367754622, - -2.9718336840587067, - -2.9250586731260078, - -2.8558053970071784, - -2.765166376073482, - -2.6545713593174223, - -2.52576477635636, - -2.380778226735155, - -2.221898440387404, - -2.051631214537613, - -1.8726618957824777, - -1.687813030569918, - -1.49999985195588, - -1.3121843046373327, - -1.1273283333149027, - -0.948347171055685, - -0.7780633643268597, - -0.6191622597506736, - -0.4741496545857312, - -0.3453122788064905, - -0.2346817320063173, - -0.14400244385902872, - -0.07470416342060687, - -0.027879411133332158, - -0.0042662491263611435, - -0.004236641535622365, - -0.027790588407944863, - -0.07455612570084365, - -0.14379519137863778, - -0.2344152650925253, - -0.34498659787996455, - -0.473764760160963, - -0.6187181524356071, - -0.7775600448224635, - -0.947784640156903, - -1.1267065919097954, - -1.3115033537078702, - -1.4992596925778852, - -1.6870136639118594, - -1.8718033231065725, - -2.050713437199658, - -2.2209214598365383, - -2.3797420445142543, - -2.5246693941018252, - -2.6534167787589427, - -2.763952599034295, - -2.8545324254040008, - -2.9237265089690343, - -2.970442329451583, - -2.9939418248945406, - -2.993853031341418, - -2.9701759489324875, - -2.9232825419046176, - -2.853910872495379, - -2.7631534612629443, - -2.6524400573866638, - -2.5235150906711974, - -2.378410160848091, - -2.21941199803801, - -2.049026399652414, - -1.8699387124744304, - -1.6849714831394569, - -1.4970399448902805, - -1.3091060426106935, - -1.124131721188303, - -0.9450322138771687, - -0.7746300673306511, - -0.615610628358726, - -0.47047969440656234, - -0.3415239956354695, - -0.23077513182579446, - -0.13997753283790898, - -0.07056094791473262, - -0.023617897685415404, - 0.00011355553403387397, - 0.00026144742094101614, - -0.023174222258234914, - -0.06982148964795476, - -0.13894229289920562, - -0.2294441118499484, - -0.3398971977243395, - -0.4685571211290808, - -0.6133922827508944, - -0.7721159528953805, - -0.942222334584657, - -1.1210260814758792, - -1.3057046473825062, - -1.4933427995176793, - -1.680978593460734, - -1.865650084794813, - -2.044442040744224, - -2.2145319151405713, - -2.3732343616677145, - -2.518043583381048, - -2.6466728506271346, - -2.7570905641411474, - -2.847552294585637, - -2.9166282932479537, - -2.9632260400367954, - -2.98660747318155, - -2.986400628912221, - -2.9626055075553914, - -2.915594073534382, - -2.8461043892731577, - -2.7552289755162906, - -2.6443975816295406, - -2.515354637603637, - -2.3701317433564157, - -2.211015629194959, - -2.0405120927171323, - -1.8613064808924222, - -1.676221340542037, - -1.488171905094948, - -1.3001201196211232, - -1.1150279291947518, - -0.9358105672557684, - -0.7652905806439366, - -0.6061533163547114, - -0.4609045720194437, - -0.3318310779858189, - -0.2209644342201183, - -0.1300490707686707, - -0.06051473706031994, - -0.013453953910156635, - 0.010395216179947306, - 0.010660808701321384, - -0.01265717676540877, - -0.05918677655045966, - -0.12818992899073767, - -0.21857411410997848, - -0.3289095833181195, - -0.4574519074076362, - -0.6021694872507639, - -0.760775593338888, - -0.9307644288795367, - -1.1094506477158759, - -1.2940117038469747, - -1.481532364671462, - -1.6690506859540353, - -1.853604723463257, - -2.032279244608926, - -2.202251703408497, - -2.3608367537312014, - -2.505528598817455, - -2.634040509199256, - -2.7443408857971328, - -2.8346852994589056, - -2.903644001657378, - -2.9501244724864297, - -2.9733886503604428, - -2.9730645716946973, - -2.9491522370009595, - -2.902023610887591, - -2.8324167559635685, - -2.7414241931584424, - -2.6304756720231746, - -2.5013156227333493, - -2.355975645392011, - -2.196742470490584, - -2.026121895811818, - -1.8467992685103995, - -1.661597135592253, - -1.473430730671107, - -1.2852619990017207, - -1.1000528858425302, - -0.9207186248181265, - -0.7500817629532803, - -0.5908276474279962, - -0.4454620760580321, - -0.3162717793754456, - -0.20528835753093133, - -0.1142562407552693, - -0.04460517866188124, - 0.002572307749953942, - 0.026538155794065085, - 0.026920400777583037, - 0.003719042096871114, - -0.0426939567624786, - -0.11158053432148904, - -0.2018481707878802, - -0.31206711775571017, - -0.4404929462013855, - -0.5850940571815062, - -0.7435837213709409, - -0.9134561421611443, - -1.0920259735791826, - -1.2764706698078332, - -1.4638749984295556, - -1.6512770153930103, - -1.8357147766499937, - -2.014273049794088, - -2.1841292890263224, - -2.342598148399251, - -2.487173831337191, - -2.615569608555429, - -2.7257538811578415, - -2.8159822201754565, - -2.884824877264445, - -2.931189332701997, - -2.954337525085756, - -2.9538974910140414, - -2.929869231181759, - -2.8826247103803464, - -2.812901991401832, - -2.7217935953587933, - -2.6107292719848996, - -2.481453451638517, - -2.3359977346058045, - -2.1766488515609828, - -2.0059126004694856, - -1.8264743286684977, - -1.6411565833464703, - -1.4528745982996916, - -1.2645903189658676, - -1.0792656907856442, - -0.8998159475662648, - -0.7290636365144529, - -0.5696941049926088, - -0.4242131509985827, - -0.29490750524716414, - -0.18380876807096458, - -0.09266136988288656, - -0.022895060478187026, - 0.024397638961762683, - 0.04847866556874744, - 0.048976054468059346, - 0.025889804874273337, - -0.020408119908747177, - -0.08917965858385885, - -0.17933229154055774, - -0.2894362705542043, - -0.4177471667828923, - -0.5622333814645056, - -0.7206081854556777, - -0.8903657823292767, - -1.068820826293711, - -1.2531507717126147, - -1.4404403863497217, - -1.6277277263350105, - -1.812050847801543, - -1.9904945185240002, - -2.160236192883973, - -2.3185905251150185, - -2.4630517188223293, - -2.5913330449020515, - -2.7014029046387664, - -2.7915168692443824, - -2.8602451905554296, - -2.906495349029691, - -2.9295292834453277, - -2.9289750305811135, - -2.9048325913122888, - -2.8574739306105923, - -2.787637111448248, - -2.6964146551181254, - -2.5852363115339614, - -2.455846511234365, - -2.3102768546851875, - -2.1508140727403218, - -1.9799639635457016, - -1.8004118746180309, - -1.6149803533255822, - -1.426584633644394, - -1.2381866611913457, - -1.0527483815866305, - -0.8731850288173808, - -0.7023191502696418, - -0.5428360934851322, - -0.3972416566410901, - -0.26782257063093345, - -0.15661043596678575, - -0.0653496832408068, - 0.00452993757291037, - 0.051935905114021116, - 0.07613015633554823, - 0.0767407261839345, - 0.0537676136949755, - 0.0075827819939262575, - -0.06107570780058595, - -0.15111533625663975, - -0.2611063553281315, - -0.3893043363516579, - -0.5336776807431197, - -0.6919396595374303, - -0.8615844764855987, - -1.0399267859740453, - -1.2241440425448324, - -1.411321014139665, - -1.5984957570658893, - -1.7827063276347084, - -1.9610374937981334, - -2.130666710115909, - -2.288908630999153, - -2.433257460230546, - -2.5614264688833392, - -2.6713840584196897, - -2.7613858002287244, - -2.8300019463243298, - -2.8761399773413716, - -2.899061832235117, - -2.898395547961211, - -2.874141125571894, - -2.8266705302157304, - -2.756721825041752, - -2.6653875315192597, - -2.5540973997388505, - -2.4245958604156446, - -2.278914514191903, - -2.1193400920981893, - -1.9483783924560738, - -1.7687147629586653, - -1.5831717511507803, - -1.3946645911842848, - -1.2061552288520345, - -1.0206056099503698, - -0.8409309686417448, - -0.6699538524881097, - -0.5103596092068713, - -0.36465403715111266, - -0.2351238673894703, - -0.12380070060969824, - -0.03242896757890264, - 0.03756158155325899, - 0.08507842525132649, - 0.10938350029321796, - 0.11010484145040886, - 0.0872424475838042, - 0.04116828164376837, - -0.027379595425976733, - -0.11730866436789793, - -0.22718917731061328, - -0.35527670576502846, - -0.4995396513217527, - -0.6576912851900731, - -0.8272258112952757, - -1.0054578841975523, - -1.1895649586132702, - -1.3766318026578683, - -1.563696472812946, - -1.7477970255639415, - -1.9260182290358379, - -2.0955375379621968, - -2.2536696069277173, - -2.3979086398884943, - -2.525967908091499, - -2.6358158131721017, - -2.7257079266923823, - -2.7942145008394186, - -2.840243016421138, - -2.8630554125657532, - -2.8622797264018325, - -2.8379159591542567, - -2.79033607614433, - -2.7202781406936523, - -2.6288346744441524, - -2.517435427658625, - -2.387824831224447, - -2.2420344859560633, - -2.082351123056569, - -1.9112805410192277, - -1.7315080877094144, - -1.5458563108433057, - -1.3572404447444983, - -1.1686224353779453, - -0.9829642287114672, - -0.8031810590789854, - -0.6320954742137531, - -0.47239282200451843, - -0.32657890097516995, - -0.1969404423659808, - -0.08550904703544779, - 0.0059708540782268255, - 0.0760695106547782, - 0.12369440098798076, - 0.14810746168514066, - 0.14893672734712865, - 0.1261821966644719, - 0.08021583241720442, - 0.011775695378972814, - -0.07804569536325255, - -0.18781859210778656, - -0.31579856653550303, - -0.4599540204069009, - -0.6179982251009276, - -0.7874253847124326, - -0.9655501539717093, - -1.1495499877641047, - -1.3365096543744852, - -1.5234672104536058, - -1.707460712655807, - -1.8855749292758732, - -2.0549873152158895, - -2.213012525229462, - -2.357144763441223, - -2.485097301266932, - -2.5948385405103735, - -2.6846240529023184, - -2.7530240907981356, - -2.7989461351739404, - -2.8216521253259774, - -2.8207700985509088, - -2.796300056241609, - -2.7486139638871356, - -2.678449884976709, - -2.586900341320029, - -2.4753950833473874, - -2.3456785421136077, - -2.1997823186005077, - -2.039993144178053, - -1.868816817506619, - -1.6889386866187164, - -1.5031812993975713, - -1.3144598903336546, - -1.1257364055581531, - -0.9399727912054547, - -0.760084281775942, - -0.5888934251696236, - -0.4290855694412392, - -0.28316651328098474, - -0.1534229880948807, - -0.04188659490713294, - 0.04969823517778353, - 0.119901751674019, - 0.1676314327098048, - 0.19214921472697893, - 0.19308313216109146, - 0.17043318353730985, - 0.12457133147056824, - 0.05623563656948524, - -0.03348138224372091, - -0.14314997743251745, - -0.27102572084240495, - -0.41507701439855194, - -0.5730171296440651, - -0.7423402708383415, - -0.9203610928757717, - -1.1042570508060927, - -1.29111291307821, - -1.4779667365068059, - -1.6618565779099417, - -1.8398672057460077, - -2.009176075080684, - -2.167097840831059, - -2.3111267072854504, - -2.438975946022498, - -2.5486139590091814, - -2.6382963181392367, - -2.706593275930956, - -2.7524123135232337, - -2.775015370375076, - -2.774030483945614, - -2.7494576557901205, - -2.7016688515599996, - -2.631402134906776, - -2.539750027802077, - -2.428142280838106, - -2.298323325231486, - -2.152324762126061, - -1.992433323053239, - -1.8211548068352115, - -1.6411745616652267, - -1.4553151355878169, - -1.2664917632550081, - -1.0776663909589215, - -0.8918009649948322, - -0.7118107200239785, - -0.5405182041066084, - -0.3806087654580407, - -0.23458820292925314, - -0.1047432480864698, - 0.006894497885816392, - 0.09858060372348641, - 0.16888531878056945, - 0.21671612102548432, - 0.24133494674028044, - 0.24236983020103076, - 0.21982076977351406, - 0.17405972791330043, - 0.10582476506975803, - 0.01620840000603621, - -0.0933596199002148, - -0.22113486665321402, - -0.36508574233679614, - -0.5229255186529685, - -0.6921484000196416, - -0.8700690414891339, - -1.053864898269452, - -1.2406207389675687, - -1.4273746205561952, - -1.6111646000111426, - -1.7890754459488973, - -1.958284613592373, - -2.1161067580159516, - -2.260036083665299, - -2.387785862276459, - -2.497324495973438, - -2.5869075568069695, - -2.655105297451894, - -2.700825199203922, - -2.7233292016786095, - -2.72224534249153, - -2.6975736233541925, - -2.6496860100741952, - -2.5793205664591126, - -2.4875698146364575, - -2.375863505354271, - -2.2459460699848925, - -2.099849109827242, - -1.939859356568462, - -1.7684826091859382, - -1.588404216028204, - -1.4024467252947184, - -1.2135253717920973, - -1.0246021019672766, - -0.8386388622701293, - -0.658550887516602, - -0.4871607259211084, - -0.32715372585336294, - -0.18103568631804473, - -0.051093339035341814, - 0.06064171465647447, - 0.1524250433392112, - 0.22282689621366758, - 0.2707547510948234, - 0.29547054411156837, - 0.2966023093867509, - 0.2741500451331603, - 0.22848571365352693, - 0.16034737524455026, - 0.07082754851685012, - -0.038644019304586705, - -0.16632290037640152, - -0.3101774969341683, - -0.4679210808321393, - -0.6370478566398806, - -0.8148724795618724, - -0.9985724049577567, - -1.185232401586009, - -1.3718905265702637, - -1.5555848370377894, - -1.7334001017558438, - -1.9025137760989121, - -2.0602405152920547, - -2.204074523931238, - -2.331729073903099, - -2.4411725674820546, - -2.530660576869062, - -2.598763354889261, - -2.644388382988229, - -2.666797600931227, - -2.665619046483548, - -2.6408527215063184, - -2.5928705919564736, - -2.522410721790791, - -2.43056563328585, - -2.3187650773388615, - -2.1887534854708948, - -2.042562459129695, - -1.882478730150756, - -1.7110080976598412, - -1.5308359101536524, - -1.3447847159799946, - -1.15576975009356, - -0.9667529590889322, - -0.7806962895637521, - -0.6005149764810167, - -0.42903156820310634, - -0.2689314132469064, - -0.12272031076411159, - 0.007315007378080732, - 0.11914293969453614, - 0.2110190546208305, - 0.2815136012107078, - 0.3295340571329637, - 0.35434235837026584, - 0.35556653889939377, - 0.3332065967871819, - 0.2876344941905612, - 0.2195882912605334, - 0.13016050646234772, - 0.020780886875702245, - -0.1068061398013442, - -0.2505689759496692, - -0.4082208935681455, - -0.5772560973711418, - -0.7549892427076597, - -0.9385977850817926, - -1.1251664933962278, - -1.3117334249191899, - -1.4953366369219503, - -1.6730608983152706, - -1.8420836646172072, - -1.9997195911964847, - -2.1434628827927558, - -2.2710268114358874, - -2.380379779543355, - -2.469777359458816, - -2.537789804150381, - -2.583324595206226, - -2.6056436725342227, - -2.6043750740419656, - -2.5795188017326818, - -2.5314468217054413, - -2.460897198058919, - -2.3689624532114877, - -2.2570723382017377, - -2.1269712846920696, - -1.9806908942718013, - -1.8205178989175006, - -1.6489580978959129, - -1.4686968398446454, - -1.2825566732517393, - -1.0934528332122877, - -0.9043472664619039, - -0.7182019197380722, - -0.537932028144065, - -0.3663601401817316, - -0.20617160450769387, - -0.05987222041324984, - 0.07025128009466802, - 0.18216729539180027, - 0.2741313937747277, - 0.3447138241583449, - 0.39282206407260467, - 0.4177180493614435, - 0.4190298138632235, - 0.3967573555065069, - 0.35127263631007233, - 0.28331371628698265, - 0.1939731137644396, - 0.084680575684638, - -0.042819470391846706, - -0.18649542698322352, - -0.3440605662256157, - -0.5130090929705227, - -0.6906556627038203, - -0.8741777310663248, - -1.0606600670970283, - -1.247140728200704, - -1.4306577717846163, - -1.6082959668959447, - -1.7772327691890122, - -1.9347828341675979, - -2.0784403667071034, - -2.2059186389728414, - -2.315186053517528, - -2.4044981828201664, - -2.4724252799837116, - -2.5178748267309636, - -2.5401087631044508, - -2.538755127146266, - -2.51381392099396, - -2.4656571108806036, - -2.3950227610388293, - -2.3030033940209482, - -2.1910287609991075, - -2.060843293769366, - -1.91447859405404, - -1.754221393962806, - -1.582577492895352, - -1.4022322396224731, - -1.2160081827646392, - -1.0268205575497493, - -0.8376313108450424, - -0.6514023895202441, - -0.4710490288110142, - -0.29939377735093103, - -0.13912198392824066, - 0.007260552034239087, - 0.13746709839858828, - 0.24946605340933742, - 0.3415129852317993, - 0.4121781426502481, - 0.4603690030638915, - 0.4853475021863387, - 0.48674167372559807, - 0.46455151548005463, - 0.4191489893385691, - 0.35127215518440286, - 0.2620135312152254, - 0.15280286424366465, - 0.025384581701039508, - -0.1182097190603129, - -0.2756933103048877, - -0.44456039701311967, - -0.622125634799574, - -0.8055664794334132, - -0.9919677000824019, - -1.1783673542788224, - -1.3618034995579316, - -1.5393609050947505, - -1.7082170266708843, - -1.8656865199181931, - -2.009263589839055, - -2.1366615087255134, - -2.2458486792573766, - -2.3350806740403725, - -2.402927746303921, - -2.4482973778973616, - -2.470451508989351, - -2.4690181777479423, - -2.443997386436589, - -2.3957611014140117, - -2.3250473870384583, - -2.232948765987303, - -2.1208949895580185, - -1.9906304896716218, - -1.844186868175298, - -1.683850857303371, - -1.5121282565800747, - -1.3317044149000896, - -1.1454018810080342, - -0.9561358902559101, - -0.766868389634876, - -0.5805613261383096, - -0.4001299351248508, - -0.22839676535130388, - -0.0680471657289902, - 0.07841306419604316, - 0.2086971921634205, - 0.3207736162950191, - 0.41289790463404313, - 0.4836403058427138, - 0.5319082971979494, - 0.5569638142916516, - 0.5584348907102434, - 0.5363215241306967, - 0.49099567632056035, - 0.4231954070418981, - 0.33401323437163916, - 0.2248789050016735, - 0.09753684624279821, - -0.045981344672862814, - -0.2033889401306025, - -0.37218014523057263, - -0.5496696157068328, - -0.7330348074484232, - -0.9193604897423174, - -1.1056847202405053, - -1.2890455565973573, - -1.4665277681067952, - -1.635308810668691, - -1.7927033400338654, - -1.9362055613228017, - -2.0635287469461474, - -2.172641299701647, - -2.261798792312602, - -2.329571478126158, - -2.3748668391091527, - -2.396946815547546, - -2.395439445726523, - -2.3703447320263695, - -2.3220346409226127, - -2.251247236889993, - -2.1590750427223906, - -2.0469478098333407, - -1.9166099702598092, - -1.7700931259647958, - -1.6096840092982236, - -1.4378884198999915, - -1.257391706779912, - -1.0710164187980162, - -0.8816777914203356, - -0.6923377717533405, - -0.505958306904831, - -0.3254546323478633, - -0.15364929695338403, - 0.0067723502532784224, - 0.15330450961265932, - 0.2836604487507286, - 0.395808565675677, - 0.48800442831755764, - 0.5588182852255282, - 0.6071576135639243, - 0.6322843488118385, - 0.6338265244432212, - 0.6117841380227615, - 0.5665291512059419, - 0.4987996236430503, - 0.40968807329913726, - 0.300624246754526, - 0.1733525712086385, - 0.029904643782678722, - -0.12743280801948226, - -0.29615398940887094, - -0.4735735562304568, - -0.6568689644836907, - -0.8431249835653295, - -1.029379671237447, - -1.212671085264228, - -1.3900839950491592, - -1.5587958566019477, - -1.7161213257825487, - -1.8595546078203555, - -1.9868089752347398, - -2.095852830932138, - -2.1849417477445856, - -2.252645979127466, - -2.2978730071556743, - -2.3198847722229665, - -2.3183093127223273, - -2.2931466311416213, - -2.2447686940636764, - -2.1739135660701567, - -2.081673770062156, - -1.96947905755991, - -1.8390738607069892, - -1.6924897815726918, - -1.532013552613196, - -1.3601509735739183, - -1.1795873935709738, - -0.993145361569926, - -0.8037401131423834, - -0.6143335954994931, - -0.42788775585433536, - -0.24731782978453298, - -0.07544636626614556, - 0.08504128557131671, - 0.23163932596416892, - 0.3620610224341795, - 0.47427477288603326, - 0.5665361451460249, - 0.6374153876597835, - 0.6858199774883837, - 0.711011850007875, - 0.712619038589379, - 0.6906415406948985, - 0.6454513178774381, - 0.5777864296850164, - 0.4887393939806517, - 0.3797399572428174, - 0.2525325465693373, - 0.10914875897963108, - -0.048124678123841864, - -0.21678197005263367, - -0.3941377727528732, - -0.5773695423244523, - -0.7635620482650345, - -0.9497533484370044, - -1.1329815007046382, - -1.3103312745708913, - -1.4789801261454378, - -1.6362427113874545, - -1.7796132356261996, - -1.9068049714800335, - -2.0157863219539847, - -2.1048128599788747, - -2.172454839108629, - -2.2176197415164394, - -2.239569507694285, - -2.23793217613294, - -2.2127077494179743, - -2.164268194229718, - -2.093351575247338, - -2.0010504154687823, - -1.8887944665111753, - -1.7583281606147354, - -1.6116830999455645, - -1.4511460170559771, - -1.2792227117877264, - -1.0985985333524364, - -0.9120960308113364, - -0.7226304398316123, - -0.5331637077198716, - -0.3466577817843609, - -0.1660278976975848, - 0.005903395470133202, - 0.16645074849475835, - 0.31310836151795596, - 0.4435895019675168, - 0.5558625676542797, - 0.6481831263109212, - 0.7191214262896041, - 0.7675849445582315, - 0.7928356163996866, - 0.7945014750922208, - 0.7725825180052539, - 0.7274507065993412, - 0.6598441003302082, - 0.5708552169687432, - 0.46191380290182765, - 0.33476428513554546, - 0.19143826059804214, - 0.03422245660043244, - -0.1343773322602417, - -0.3116757620203849, - -0.49485028887055554, - -0.6809856823988976, - -0.8671200005578898, - -1.05029130130172, - -1.227584354223699, - -1.3961766155225546, - -1.5533827412469268, - -1.696696936815081, - -1.8238324749344477, - -1.9327577586989442, - -2.0217283611278587, - -2.089314535863406, - -2.1344237651668267, - -2.1563179896180786, - -2.154625247795677, - -2.1293455423726853, - -2.0808508401167054, - -2.009879205793847, - -1.917523162489179, - -1.805212461906454, - -1.674691536372427, - -1.5279919881391486, - -1.3674005498449198, - -1.195423021417681, - -1.0147447521546233, - -0.8281882912024159, - -0.6386688743135251, - -0.4491484488791393, - -0.2625889622922098, - -0.08190565031049159, - 0.09007893791165192, - 0.2506794530658234, - 0.39739009521010915, - 0.5279241316885136, - 0.6402499602283189, - 0.7326231484786208, - 0.8036139447086386, - 0.8521298258033678, - 0.8774327269630322, - 0.879150681383411, - 0.8572836863516222, - 0.8122037032461749, - 0.744648791441002, - 0.6557114686254196, - 0.546821481104671, - 0.4197232558035549, - 0.2764483895695024, - 0.11928360963288004, - -0.04926528948987345, - -0.22651296391570908, - -0.40963686991542003, - -0.5957217771570961, - -0.7818057436725154, - -0.9649268274956202, - -1.1421697982988726, - -1.31071211236034, - -1.467868425807507, - -1.6111329441372544, - -1.7382189401355863, - -1.8470948169742776, - -1.9360161477508804, - -2.0035531861853917, - -2.048613414616762, - -2.070458773702169, - -2.0687173020973275, - -2.0433890025522645, - -1.9948458419113517, - -1.923825885017262, - -1.8314216550311606, - -1.7190629037329836, - -1.588494063525511, - -1.4417467367363679, - -1.2811076560795192, - -1.109082621557788, - -0.9283569825433555, - -0.7417532882576783, - -0.5521867745282386, - -0.3626193888205088, - -0.17601307860142773, - 0.004716920297472865, - 0.17674805864816534, - 0.33739498706834614, - 0.48415190554289633, - 0.6147320813427787, - 0.7271039121223691, - 0.8195229654583858, - 0.89055948954752, - 0.9391209612023723, - 0.9644693155513024, - 0.9662325857182894, - 0.9444107689189143, - 0.8993758264602988, - 0.8318658176451887, - 0.7429732600921556, - 0.6341279000356779, - 0.5070741643302681, - 0.36384364975281863, - 0.20672308346368978, - 0.03821825990924433, - -0.13898547709644443, - -0.3220655838937764, - -0.5081068302199108, - -0.6941472741760013, - -0.8772249738647211, - -1.0544246990266088, - -1.222923906008118, - -1.380037251004821, - -1.5232589395815752, - -1.6503022445918654, - -1.7591355692752422, - -1.848014486796019, - -1.9155092509413436, - -1.960527344116879, - -1.9823307070464362, - -1.9805473784519931, - -1.955177361149635, - -1.9065926220496652, - -1.835531226060482, - -1.7430856964085288, - -1.6306857849391614, - -1.500075924119742, - -1.3532877163430665, - -1.192607894387617, - -1.0205422583204853, - -0.8397761575780631, - -0.6531321414457789, - -0.4635254458141958, - -0.27391801821275497, - -0.0872718061716156, - 0.0934979544148418, - 0.2655687142554077, - 0.42625512390576153, - 0.5730513832882683, - 0.7036707596117319, - 0.8160816504684715, - 0.9085396233736345, - 0.9796149264623932, - 1.0282150364862495, - 1.0536018885125393, - 1.0554035156043386, - 1.0336199149166931, - 0.9886230476964182, - 0.9211509731861938, - 0.8322962089445156, - 0.7234885011460994, - 0.596472276586252, - 0.4532791319825889, - 0.2961957944364959, - 0.12772805833570006, - -0.04943873256499133, - -0.2324820346639486, - -0.4184866177561157, - -0.604490540000785, - -0.7875318595580564, - -0.9646953462263432, - -1.1331584564092987, - -1.2902358463594839, - -1.4334217216981124, - -1.5604293553355628, - -1.6692271505675265, - -1.75807068061472, - -1.8255301993200796, - -1.8705131891447793, - -1.8922815908680997, - -1.8904634432672789, - -1.8650587492134179, - -1.8164394756715163, - -1.7453436876044184, - -1.6528639082930663, - -1.5404298896367616, - -1.4097860641570255, - -1.2629640342999369, - -1.102250532897361, - -0.930151360069549, - -0.749351865306229, - -0.5626745979453529, - -0.3730347939301587, - -0.1833944008421106, - 0.003284633736484823, - 0.18408707385983078, - 0.3561903701843707, - 0.5169091732146602, - 0.6637376828219957, - 0.7943891661642024, - 0.9068320207831961, - 0.9993218141432796, - 1.0704287943294295, - 1.1190604380431894, - 1.1444786803020692, - 1.146311554119651, - 1.124559056601549, - 1.0795931489455086, - 1.0121518903453097, - 0.9233277983107949, - 0.8145506189684001, - 0.6875647790649118, - 0.5444018752700537, - 0.38734863463742075, - 0.21891085150753564, - 0.04177386958760172, - -0.14123976756749815, - -0.3272148298002166, - -0.5131893753159702, - -0.6962014623213212, - -0.8733358606607602, - -1.0417700267838983, - -1.1988186169889317, - -1.3419758369429249, - -1.4689549596013802, - -1.5777243883048793, - -1.666539696318847, - -1.733971137530824, - -1.7789261944464787, - -1.8006668078891575, - -1.7988210166799148, - -1.7733888237335136, - -1.7247421960584002, - -1.6536191986607185, - -1.5611123548642838, - -1.4486514166108213, - -1.3179808164647921, - -1.1711321569144872, - -1.0103921708338373, - -0.8382666583850085, - -0.6574409690989369, - -0.4707376523548973, - -0.2810719441376971, - -0.09140579206961741, - 0.0952988562264433, - 0.2761267647639106, - 0.44825538415974486, - 0.6089993648782395, - 0.7558529067505653, - 0.8865292768952564, - 0.9989968728147852, - 1.0915112619346385, - 1.1626426923009154, - 1.2112986405764854, - 1.2367410417403841, - 1.2385979287681346, - 1.2168692987274548, - 1.1719271127783595, - 1.1045094300770562, - 1.0157087680963164, - 0.9069548729255744, - 0.7799921712748685, - 0.6368522597773362, - 0.47982186545034755, - 0.31140678259794696, - 0.13429235489194769, - -0.04869887414869993, - -0.23465167440133744, - -0.4206041041069451, - -0.6035942215070191, - -0.7807067964807393, - -0.9491192855121604, - -1.106146344933487, - -1.249282180445931, - -1.376240065038567, - -1.4849884020860469, - -1.5737827648867029, - -1.6411934073612204, - -1.6861278120480698, - -1.7078479198032515, - -1.7059817694802342, - -1.680529364025917, - -1.6318626704805665, - -1.5607197538821223, - -1.4681931375858435, - -1.3557125735648898, - -1.225022494414302, - -1.078154502653238, - -0.9173953311860865, - -0.745250780205659, - -0.5644061992727615, - -0.3776841377967566, - -0.18799983179161847, - 0.0016847710909964723, - 0.18840772319897, - 0.36925378851665025, - 0.5414004176322533, - 0.7021622609816653, - 0.8490335183682123, - 0.9797274568823747, - 1.0922124739985994, - 1.1847441371149272, - 1.2558926942502198, - 1.3045656220403083, - 1.3300248554375078, - 1.3318984273906687, - 1.3101863349411567, - 1.2652605392228855, - 1.197859099366307, - 1.109074532818376, - 1.0003365856430622, - 0.8733896845251866, - 0.730265426073218, - 0.5732505372796558, - 0.40485081242421683, - 0.227751595154151, - 0.04477542896445395, - -0.14116245604591532, - -0.3271001181414095, - -0.5100756155868384, - -0.6871737182845653, - -0.8555718827414216, - -1.0125847653126625, - -1.1557065717213757, - -1.2826505749788608, - -1.3913851784816318, - -1.4801659555500235, - -1.5475631601259718, - -1.59248427476926, - -1.614191240356723, - -1.6123120957626669, - -1.5868468439545165, - -1.5381674519928974, - -1.4670119849356622, - -1.374472966157922, - -1.2619801476524248, - -1.131277962033567, - -0.9843980118397804, - -0.8236270299943523, - -0.6514708167082377, - -0.47061472156107453, - -0.2838812939803491, - -0.09418576999807188, - 0.09550990271639276, - 0.2822437764933551, - 0.4631006153003433, - 0.6352578697086216, - 0.7960301901366517, - 0.9429117763715433, - 1.0736158954873067, - 1.1861109449426022, - 1.2786524921195974, - 1.3498107850214867, - 1.3984933002685702, - 1.4239619727981465, - 1.425844835544176, - 1.4041418855333372, - 1.359225083885029, - 1.2918324897155862, - 1.2030566204580089, - 1.094327222162561, - 0.9673887215006374, - 0.8242727150671562, - 0.6672659298415036, - 0.49887416009097396, - 0.32178274945027585, - 0.13881424140200746, - -0.047116133967133184, - -0.23304643493355168, - -0.41601471977367827, - -0.593105758400832, - -0.7614970073332656, - -0.9185031229369475, - -1.061618310946014, - -1.1885558443821878, - -1.2972841266521065, - -1.3860587310859653, - -1.4534499116354755, - -1.498365150869964, - -1.520066389675662, - -1.5181816669358026, - -1.4927109856266192, - -1.444026312817345, - -1.3728657135741984, - -1.2803217112803726, - -1.1678240579364356, - -1.0371171861643425, - -0.8902326985101421, - -0.729457327904188, - -0.5572968745645147, - -0.37643668807724373, - -0.18969931787628927, - 1.0282067029704194e-13, - 0.1896993178765774, - 0.3764366880774419, - 0.5572968745647062, - 0.7294573279045181, - 0.8902326985105875, - 1.0371171861648008, - 1.1678240579366814, - 1.2803217112804832, - 1.3728657135742863, - 1.4440263128174091, - 1.4927109856266578, - 1.5181816669358241, - 1.5200663896756497, - 1.498365150869906, - 1.4534499116353625, - 1.3860587310858086, - 1.2972841266519453, - 1.1885558443820057, - 1.0616183109458648, - 0.9185031229367817, - 0.761497007333086, - 0.5931057584006401, - 0.41601471977339455, - 0.23304643493309796, - 0.047116133966758934, - -0.13881424140237875, - -0.3217827494505571, - -0.49887416009116753, - -0.6672659298418329, - -0.8242727150673222, - -0.9673887215007897, - -1.0943272221626916, - -1.2030566204581188, - -1.2918324897157347, - -1.3592250838852262, - -1.4041418855334087, - -1.4258448355441895, - -1.423961972798133, - -1.3984933002685314, - -1.3498107850213914, - -1.2786524921194795, - -1.1861109449424927, - -1.073615895487175, - -0.942911776371266, - -0.7960301901363442, - -0.6352578697080624, - -0.4631006152999985, - -0.28224377649315524, - -0.09550990271618807, - 0.0941857699982782, - 0.28388129398055384, - 0.4706147215614396, - 0.6514708167085881, - 0.8236270299946065, - 0.984398011840085, - 1.1312779620338445, - 1.2619801476526065, - 1.3744729661581236, - 1.4670119849357914, - 1.53816745199296, - 1.5868468439545538, - 1.6123120957626802, - 1.6141912403567, - 1.5924842747691899, - 1.5475631601258362, - 1.4801659555498625, - 1.3913851784814821, - 1.2826505749787303, - 1.155706571721102, - 1.0125847653123583, - 0.8555718827412389, - 0.6871737182843743, - 0.5100756155866395, - 0.32710011814103424, - 0.1411624560453722, - -0.04477542896507956, - -0.22775159515451346, - -0.40485081242440746, - -0.5732505372798367, - -0.730265426073385, - -0.8733896845253943, - -1.0003365856432511, - -1.1090745328184857, - -1.1978590993663953, - -1.2652605392230023, - -1.3101863349412242, - -1.331898427390701, - -1.3300248554374945, - -1.3045656220402693, - -1.2558926942501585, - -1.184744137114839, - -1.0922124739984889, - -0.9797274568821344, - -0.8490335183679948, - -0.7021622609813618, - -0.541400417631922, - -0.36925378851629753, - -0.18840772319868673, - -0.0016847710907083521, - 0.18799983179182317, - 0.37768413779695964, - 0.564406199272961, - 0.7452507802058492, - 0.9173953311863379, - 1.0781545026536175, - 1.2250224944145764, - 1.355712573565081, - 1.4681931375859543, - 1.5607197538822075, - 1.6318626704806836, - 1.6805293640259555, - 1.7059817694802473, - 1.7078479198032386, - 1.6861278120480077, - 1.6411934073610746, - 1.573782764886442, - 1.484988402085757, - 1.3762400650384365, - 1.2492821804457805, - 1.10614634493332, - 0.9491192855119035, - 0.7807067964803904, - 0.6035942215067396, - 0.4206041041067403, - 0.23465167440096046, - 0.04869887414832992, - -0.13429235489239424, - -0.31140678259829646, - -0.4798218654505274, - -0.6368522597775048, - -0.7799921712750181, - -0.9069548729257052, - -1.0157087680965202, - -1.1045094300772158, - -1.1719271127784439, - -1.2168692987275236, - -1.2385979287681552, - -1.2367410417403615, - -1.2112986405764161, - -1.1626426923008304, - -1.0915112619345504, - -0.9989968728146745, - -0.8865292768951263, - -0.7558529067504163, - -0.6089993648777222, - -0.44825538415934024, - -0.2761267647635579, - -0.09529885622616106, - 0.09140579206981947, - 0.28107194413790343, - 0.4707376523552712, - 0.6574409690991369, - 0.8382666583852003, - 1.010392170834018, - 1.1711321569147213, - 1.3179808164651277, - 1.4486514166112285, - 1.5611123548643944, - 1.6536191986608066, - 1.7247421960584641, - 1.7733888237335527, - 1.7988210166799268, - 1.800666807889144, - 1.7789261944464405, - 1.733971137530711, - 1.66653969631869, - 1.5777243883046796, - 1.468954959601088, - 1.341975836942775, - 1.1988186169887656, - 1.0417700267837184, - 0.8733358606605692, - 0.6962014623211197, - 0.5131893753155973, - 0.3272148297997568, - 0.14123976756712547, - -0.04177386958796292, - -0.21891085150772757, - -0.38734863463767366, - -0.5444018752703571, - -0.6875647790651283, - -0.814550618968532, - -0.9233277983109046, - -1.0121518903453968, - -1.0795931489456958, - -1.1245590566016817, - -1.1463115541196864, - -1.1444786803020546, - -1.1190604380431504, - -1.0704287943293656, - -0.9993218141431189, - -0.9068320207829965, - -0.7943891661640707, - -0.6637376828218453, - -0.51690917321442, - -0.35619037018396094, - -0.18408707385932374, - -0.003284633736205505, - 0.18339440084231495, - 0.37303479393036465, - 0.5626745979455572, - 0.7493518653064271, - 0.9301513600698165, - 1.1022505328976187, - 1.262964034300102, - 1.4097860641573012, - 1.5404298896370046, - 1.652863908293226, - 1.7453436876045791, - 1.8164394756715805, - 1.8650587492134543, - 1.8904634432672922, - 1.892281590868087, - 1.870513189144741, - 1.825530199319934, - 1.758070680614559, - 1.6692271505673266, - 1.5604293553353261, - 1.4334217216979628, - 1.2902358463592463, - 1.133158456409046, - 0.9646953462261513, - 0.7875318595578578, - 0.6044905400005816, - 0.4184866177559107, - 0.23248203466332432, - 0.049438732564542544, - -0.12772805833597084, - -0.2961957944366759, - -0.45327913198275493, - -0.5964722765864017, - -0.7234885011463414, - -0.8322962089446255, - -0.9211509731862808, - -0.9886230476965037, - -1.0336199149167609, - -1.0554035156043604, - -1.0536018885125034, - -1.0282150364862108, - -0.9796149264623306, - -0.9085396233735479, - -0.8160816504683609, - -0.7036707596115421, - -0.573051383287994, - -0.4262551239055303, - -0.26556871425507894, - -0.09349795441448917, - 0.0872718061718978, - 0.2739180182131288, - 0.46352544581457256, - 0.653132141445981, - 0.839776157578263, - 1.0205422583206771, - 1.1926078943877978, - 1.3532877163435042, - 1.5000759241202082, - 1.6306857849394025, - 1.7430856964087336, - 1.8355312260605698, - 1.9065926220497502, - 1.955177361149706, - 1.9805473784520171, - 1.9823307070464238, - 1.9605273441168398, - 1.9155092509412794, - 1.8480144867957895, - 1.759135569274902, - 1.6503022445915785, - 1.5232589395813685, - 1.3800372510046526, - 1.2229239060079382, - 1.0544246990264177, - 0.8772249738643569, - 0.6941472741757974, - 0.5081068302197028, - 0.32206558389349005, - 0.1389854770960831, - -0.038218259909670635, - -0.20672308346394658, - -0.3638436497529858, - -0.5070741643304186, - -0.6341279000358084, - -0.7429732600922665, - -0.8318658176453084, - -0.8993758264603933, - -0.9444107689189842, - -0.9662325857183098, - -0.964469315551277, - -0.939120961202325, - -0.8905594895474034, - -0.8195229654582977, - -0.7271039121222584, - -0.6147320813426471, - -0.48415190554274834, - -0.33739498706817905, - -0.17674805864775667, - -0.004716920297120314, - 0.17601307860179488, - 0.3626193888207119, - 0.5521867745284433, - 0.7417532882579663, - 0.9283569825436387, - 1.1090826215579797, - 1.2811076560796986, - 1.4417467367365333, - 1.588494063525788, - 1.7190629037333838, - 1.8314216550314548, - 1.9238258850174335, - 1.9948458419114132, - 2.0433890025523036, - 2.068717302097341, - 2.0704587737021436, - 2.0486134146166917, - 2.0035531861853286, - 1.9360161477507531, - 1.8470948169740793, - 1.7382189401352874, - 1.61113294413698, - 1.4678684258072754, - 1.3107121123601604, - 1.1421697982986818, - 0.9649268274954204, - 0.7818057436722258, - 0.5957217771567209, - 0.4096368699149648, - 0.22651296391534773, - 0.04926528948952548, - -0.11928360963313964, - -0.2764483895698066, - -0.41972325580382885, - -0.5468214811048016, - -0.6557114686255294, - -0.7446487914410918, - -0.8122037032462379, - -0.8572836863516807, - -0.8791506813834555, - -0.8774327269630058, - -0.8521298258032957, - -0.8036139447085758, - -0.7326231484785328, - -0.6402499602281595, - -0.5279241316883333, - -0.39739009520995894, - -0.25067945306565664, - -0.09007893791147134, - 0.08190565031084288, - 0.26258896229282225, - 0.44914844887951266, - 0.6386688743137313, - 0.8281882912026206, - 1.0147447521548232, - 1.1954230214178705, - 1.36740054984525, - 1.5279919881393156, - 1.6746915363726371, - 1.8052124619066967, - 1.917523162489382, - 2.0098792057940402, - 2.080850840116801, - 2.129345542372724, - 2.1546252477956904, - 2.156317989618066, - 2.1344237651667886, - 2.089314535863312, - 2.021728361127698, - 1.932757758698701, - 1.8238324749342107, - 1.696696936814874, - 1.5533827412467607, - 1.3961766155222253, - 1.2275843542233473, - 1.0502913013015214, - 0.867120000557686, - 0.6809856823986922, - 0.49485028887018534, - 0.31167576201968983, - 0.134377332259654, - -0.03422245660075918, - -0.19143826059820804, - -0.33476428513569484, - -0.4619138029020095, - -0.5708552169689454, - -0.6598441003303364, - -0.7274507065994055, - -0.7725825180052932, - -0.7945014750922417, - -0.7928356163996519, - -0.7675849445581486, - -0.71912142628954, - -0.6481831263108354, - -0.555862567654169, - -0.4435895019673851, - -0.3131083615178055, - -0.1664507484944534, - -0.00590339546995472, - 0.16602789769785886, - 0.3466577817847279, - 0.5331637077202476, - 0.7226304398319034, - 0.9120960308116248, - 1.098598533352635, - 1.2792227117879178, - 1.4511460170561576, - 1.6116830999457312, - 1.7583281606149428, - 1.8887944665114724, - 2.0010504154689865, - 2.0933515752474996, - 2.1642681942298134, - 2.2127077494180134, - 2.2379321761329622, - 2.2395695076942723, - 2.217619741516401, - 2.172454839108563, - 2.1048128599787876, - 2.0157863219537746, - 1.9068049714796365, - 1.779613235625928, - 1.6362427113872875, - 1.4789801261452569, - 1.3103312745707005, - 1.1329815007043553, - 0.9497533484367171, - 0.7635620482648282, - 0.5773695423242476, - 0.39413777275251166, - 0.21678197005228667, - 0.04812467812329353, - -0.10914875897994013, - -0.2525325465694893, - -0.3797399572429483, - -0.4887393939807617, - -0.5777864296851037, - -0.645451317877554, - -0.6906415406949709, - -0.7126190385893905, - -0.7110118500078488, - -0.6858199774883129, - -0.6374153876596882, - -0.5665361451458657, - -0.47427477288588277, - -0.3620610224340479, - -0.2316393259640198, - -0.08504128557115113, - 0.07544636626640325, - 0.2473178297852021, - 0.4278877558547833, - 0.6143335954998678, - 0.8037401131426725, - 0.9931453615701307, - 1.1795873935713386, - 1.3601509735742687, - 1.5320135526133767, - 1.6924897815728563, - 1.8390738607071395, - 1.9694790575601429, - 2.0816737700624492, - 2.173913566070434, - 2.2447686940637395, - 2.293146631141659, - 2.3183093127223406, - 2.3198847722229528, - 2.297873007155614, - 2.252645979127381, - 2.1849417477444986, - 2.0958528309320283, - 1.9868089752345013, - 1.8595546078200806, - 1.71612132578218, - 1.5587958566017677, - 1.3900839950489683, - 1.212671085264029, - 1.029379671237241, - 0.843124983565124, - 0.6568689644833176, - 0.473573556230178, - 0.2961539894085239, - 0.12743280801915197, - -0.02990464378298148, - -0.17335257120884634, - -0.3006242467547149, - -0.4096880732992468, - -0.49879962364313846, - -0.5665291512060062, - -0.6117841380227995, - -0.6338265244432348, - -0.6322843488118134, - -0.6071576135638512, - -0.5588182852254442, - -0.48800442831746965, - -0.3958085656755663, - -0.2836604487504905, - -0.15330450961250897, - -0.006772350253111514, - 0.15364929695356475, - 0.3254546323481373, - 0.5059583069052783, - 0.692337771753968, - 0.8816777914208848, - 1.0710164187982205, - 1.2573917067801115, - 1.4378884199001818, - 1.609684009298475, - 1.7700931259651, - 1.916609970260025, - 2.0469478098334717, - 2.159075042722594, - 2.251247236890153, - 2.322034640922762, - 2.3703447320264406, - 2.395439445726536, - 2.3969468155475333, - 2.374866839109112, - 2.3295714781260948, - 2.261798792312515, - 2.172641299701395, - 2.0635287469459103, - 1.936205561322529, - 1.7927033400335628, - 1.6353088106685114, - 1.466527768106522, - 1.2890455565970766, - 1.1056847202403017, - 0.9193604897421122, - 0.7330348074482196, - 0.5496696157066332, - 0.37218014522998655, - 0.20338894013019815, - 0.04598134467262571, - -0.09753684624294788, - -0.2248789050018044, - -0.3340132343717512, - -0.42319540704205805, - -0.4909956763206236, - -0.5363215241307349, - -0.5584348907102561, - -0.5569638142916278, - -0.5319082971978563, - -0.48364030584252127, - -0.41289790463395526, - -0.32077361629490875, - -0.2086971921632892, - -0.0784130641958929, - 0.06804716572922884, - 0.2283967653515553, - 0.40012993512504125, - 0.5805613261386763, - 0.7668683896352515, - 0.9561358902562884, - 1.145401881008494, - 1.3317044149002872, - 1.512128256580266, - 1.683850857303552, - 1.844186868175465, - 1.9906304896717721, - 2.120894989558257, - 2.232948765987547, - 2.325047387038621, - 2.395761101414128, - 2.4439973864366276, - 2.4690181777479547, - 2.4704515089893264, - 2.4482973778973127, - 2.4029277463038565, - 2.3350806740402845, - 2.245848679257267, - 2.136661508725107, - 2.009263589838535, - 1.8656865199178245, - 1.7082170266706305, - 1.5393609050945598, - 1.3618034995577326, - 1.1783673542784492, - 0.9919677000820257, - 0.8055664794332074, - 0.6221256347993749, - 0.4445603970128524, - 0.27569331030448846, - 0.11820971905987333, - -0.02538458170125571, - -0.15280286424379635, - -0.26201353121533516, - -0.35127215518449, - -0.4191489893386322, - -0.4645515154801045, - -0.48674167372562227, - -0.48534750218631284, - -0.4603690030638198, - -0.41217814265013064, - -0.34151298523167883, - -0.24946605340913727, - -0.13746709839845672, - -0.007260552034088791, - 0.13912198392840544, - 0.2993937773511117, - 0.4710490288112059, - 0.6514023895206937, - 0.8376313108454179, - 1.026820557550125, - 1.2160081827650135, - 1.4022322396226725, - 1.5825774928956204, - 1.7542213939630633, - 1.9144785940542053, - 2.060843293769515, - 2.1910287609992385, - 2.303003394021059, - 2.3950227610390957, - 2.465657110880752, - 2.5138139209940187, - 2.5387551271462794, - 2.5401087631044383, - 2.5178748267309254, - 2.4724252799835953, - 2.404498182820077, - 2.315186053517418, - 2.2059186389726526, - 2.0784403667068294, - 1.934782834167224, - 1.7772327691884624, - 1.6082959668957533, - 1.4306577717844176, - 1.2471407282004998, - 1.060660067096822, - 0.8741777310660375, - 0.6906556627034566, - 0.5130090929702509, - 0.34406056622528736, - 0.18649542698291866, - 0.04281947039163225, - -0.08468057568487763, - -0.193973113764641, - -0.2833137162870699, - -0.3512726363101375, - -0.3967573555065453, - -0.4190298138632362, - -0.4177180493613973, - -0.39282206407248943, - -0.3447138241582275, - -0.2741313937745664, - -0.18216729539168985, - -0.07025128009447822, - 0.05987222041352412, - 0.20617160450792618, - 0.3663601401819119, - 0.5379320281442564, - 0.7182019197382705, - 0.9043472664624473, - 1.0934528332129214, - 1.282556673252115, - 1.468696839844845, - 1.6489580978961045, - 1.8205178989176793, - 1.9806908942719679, - 2.126971284692344, - 2.2570723382018687, - 2.3689624532115983, - 2.460897198059037, - 2.5314468217055586, - 2.579518801732765, - 2.6043750740419895, - 2.6056436725342103, - 2.5833245952061867, - 2.537789804150317, - 2.4697773594587287, - 2.3803797795431936, - 2.2710268114357053, - 2.143462882792484, - 1.9997195911961807, - 1.84208366461688, - 1.6730608983150033, - 1.4953366369215841, - 1.311733424918986, - 1.1251664933960221, - 0.9385977850815885, - 0.7549892427074605, - 0.577256097370949, - 0.4082208935677448, - 0.25056897594922917, - 0.106806139801072, - -0.020780886875832932, - -0.13016050646245844, - -0.21958829126065288, - -0.2876344941906768, - -0.33320659678724124, - -0.35556653889940637, - -0.3543423583702535, - -0.32953405713289374, - -0.28151360121050556, - -0.21101905462052423, - -0.11914293969434338, - -0.007315007377949129, - 0.12272031076426035, - 0.26893141324707326, - 0.42903156820343646, - 0.6005149764813652, - 0.7806962895639518, - 0.9667529590892219, - 1.155769750093937, - 1.3447847159804533, - 1.5308359101540159, - 1.7110080976601127, - 1.8824787301509365, - 2.0425624591298615, - 2.188753485471045, - 2.3187650773389916, - 2.430565633286, - 2.5224107217909943, - 2.5928705919565918, - 2.6408527215063904, - 2.665619046483573, - 2.666797600931212, - 2.6443883829881587, - 2.5987633548891975, - 2.530660576868975, - 2.441172567481945, - 2.3317290739029666, - 2.2040745239309576, - 2.0602405152915484, - 1.9025137760985826, - 1.7334001017556528, - 1.55558483703759, - 1.3718905265700592, - 1.1852324015857185, - 0.9985724049574672, - 0.8148724795616729, - 0.6370478566396898, - 0.46792108083195944, - 0.3101774969338659, - 0.1663229003759458, - 0.03864401930433736, - -0.0708275485169602, - -0.16034737524463752, - -0.22848571365359027, - -0.2741500451331986, - -0.2966023093867758, - -0.29547054411155516, - -0.27075475109476255, - -0.22282689621354954, - -0.15242504333904916, - -0.06064171465622184, - 0.05109333903552234, - 0.18103568631819472, - 0.3271537258535295, - 0.4871607259212887, - 0.6585508875167931, - 0.8386388622704124, - 1.0246021019676497, - 1.2135253717925596, - 1.4024467252950925, - 1.5884042160284881, - 1.7684826091861297, - 1.9398593565687923, - 2.0998491098275465, - 2.2459460699850413, - 2.3758635053544026, - 2.487569814636568, - 2.5793205664592636, - 2.6496860100744186, - 2.6975736233543155, - 2.7222453424915543, - 2.723329201678597, - 2.7008251992038836, - 2.6551052974517995, - 2.586907556806809, - 2.4973244959732863, - 2.3877858622763286, - 2.2600360836651485, - 2.116106758015648, - 1.958284613591896, - 1.7890754459484697, - 1.6111646000109432, - 1.4273746205559914, - 1.2406207389673618, - 1.0538648982692482, - 0.8700690414889349, - 0.6921484000192918, - 0.5229255186527171, - 0.3650857423364915, - 0.22113486665294085, - 0.09335961989997682, - -0.016208400006187132, - -0.10582476506988635, - -0.17405972791336427, - -0.21982076977355305, - -0.24236983020104358, - -0.2413349467402674, - -0.2167161210254243, - -0.16888531878043095, - -0.09858060372332679, - -0.006894497885664014, - 0.10474324808660128, - 0.23458820292940352, - 0.3806087654583455, - 0.5405182041067877, - 0.7118107200241702, - 0.8918009649950318, - 1.0776663909591244, - 1.266491763255385, - 1.455315135588445, - 1.641174561665592, - 1.8211548068354029, - 1.9924333230534188, - 2.152324762126227, - 2.298323325231694, - 2.4281422808382955, - 2.539750027802187, - 2.631402134906863, - 2.7016688515601155, - 2.7494576557901924, - 2.77403048394565, - 2.7750153703750646, - 2.7524123135231955, - 2.7065932759308913, - 2.638296318139149, - 2.5486139590090717, - 2.4389759460222584, - 2.3111267072851764, - 2.1670978408308192, - 2.0091760750803553, - 1.8398672057456595, - 1.6618565779096592, - 1.4779667365064335, - 1.2911129130779186, - 1.104257050805888, - 0.920361092875573, - 0.7423402708381498, - 0.5730171296438127, - 0.4150770143979736, - 0.27102572084206533, - 0.14314997743227925, - 0.03348138224356145, - -0.05623563656957388, - -0.12457133147068424, - -0.17043318353738002, - -0.19308313216110407, - -0.19214921472696594, - -0.16763143270976744, - -0.11990175167389176, - -0.04969823517754943, - 0.04188659490746846, - 0.1534229880950119, - 0.283166513281134, - 0.42908556944140497, - 0.5888934251698039, - 0.7600842817762146, - 0.939972791205735, - 1.1257364055583574, - 1.3144598903340308, - 1.5031812993979456, - 1.6889386866190814, - 1.8688168175070505, - 2.0399931441782337, - 2.1997823186006746, - 2.345678542113758, - 2.475395083347518, - 2.5869003413201384, - 2.678449884976869, - 2.7486139638872213, - 2.796300056241681, - 2.8207700985509336, - 2.8216521253259534, - 2.7989461351738805, - 2.7530240907980508, - 2.6846240529022314, - 2.5948385405102634, - 2.485097301266801, - 2.357144763441073, - 2.2130125252292245, - 2.054987315215412, - 1.8855749292754471, - 1.7074607126555275, - 1.5234672104534006, - 1.3365096543742794, - 1.1495499877637316, - 0.9655501539713438, - 0.7874253847122417, - 0.6179982251007474, - 0.45995402040666944, - 0.315798566535172, - 0.18781859210732926, - 0.07804569536291041, - -0.011775695379060078, - -0.08021583241726779, - -0.12618219666451025, - -0.14893672734714192, - -0.1481074616851174, - -0.12369440098793134, - -0.07606951065471446, - -0.00597085407806533, - 0.08550904703565, - 0.1969404423662699, - 0.32657890097544456, - 0.4723928220046851, - 0.6320954742139336, - 0.8031810590791771, - 0.9829642287116656, - 1.1686224353781496, - 1.3572404447449604, - 1.5458563108436787, - 1.7315080877097802, - 1.9112805410195783, - 2.082351123056749, - 2.2420344859562955, - 2.387824831224662, - 2.5174354276587554, - 2.6288346744442626, - 2.7202781406937397, - 2.790336076144394, - 2.8379159591543703, - 2.8622797264018667, - 2.8630554125657413, - 2.8402430164210997, - 2.794214500839355, - 2.725707926692295, - 2.635815813171899, - 2.525967908091368, - 2.3979086398883442, - 2.2536696069274793, - 2.0955375379618686, - 1.9260182290354069, - 1.747797025563332, - 1.5636964728127423, - 1.3766318026576632, - 1.1895649586130665, - 1.0054578841973534, - 0.8272258112950073, - 0.657691285189816, - 0.4995396513215862, - 0.355276705764755, - 0.22718917731037486, - 0.11730866436769667, - 0.02737959542577606, - -0.041168281643831905, - -0.08724244758384363, - -0.11010484145042164, - -0.10938350029320484, - -0.08507842525128768, - -0.0375615815531425, - 0.03242896757910314, - 0.12380070060990041, - 0.2351238673897111, - 0.36465403715126254, - 0.5103596092071097, - 0.6699538524884388, - 0.8409309686420126, - 1.020605609950569, - 1.2061552288522388, - 1.3946645911844904, - 1.5831717511514076, - 1.7687147629593598, - 1.948378392456506, - 2.1193400920984478, - 2.2789145141920697, - 2.4245958604157942, - 2.5540973997390903, - 2.6653875315194613, - 2.7567218250418395, - 2.8266705302157935, - 2.874141125571944, - 2.8983955479612358, - 2.899061832235084, - 2.8761399773413228, - 2.8300019463242654, - 2.7613858002286364, - 2.67138405841958, - 2.5614264688832082, - 2.4332574602303305, - 2.288908630998921, - 2.130666710115579, - 1.9610374937977846, - 1.7827063276343451, - 1.5984957570656015, - 1.4113210141392887, - 1.2241440425446273, - 1.039926785973846, - 0.8615844764854073, - 0.6919396595372491, - 0.5336776807429533, - 0.3893043363513253, - 0.26110635532789234, - 0.1511153362564393, - 0.06107570780049815, - -0.007582781993990123, - -0.053767613695024544, - -0.0767407261839579, - -0.07613015633553528, - -0.051935905113982855, - -0.00452993757284717, - 0.06534968324089444, - 0.1566104359671298, - 0.2678225706312243, - 0.3972416566412991, - 0.542836093485298, - 0.7023191502698222, - 0.8731850288175723, - 1.0527483815869951, - 1.2381866611915502, - 1.426584633644599, - 1.6149803533258706, - 1.800411874618396, - 1.9799639635461288, - 2.1508140727408787, - 2.310276854685353, - 2.455846511234514, - 2.585236311534092, - 2.696414655118235, - 2.7876371114483667, - 2.8574739306107086, - 2.9048325913123483, - 2.928975030581138, - 2.929529283445305, - 2.9064953490296412, - 2.8602451905553137, - 2.791516869244222, - 2.7014029046386567, - 2.59133304490192, - 2.463051718822179, - 2.3185905251148524, - 2.160236192883639, - 1.9904945185234157, - 1.8120508478011794, - 1.627727726334637, - 1.440440386349516, - 1.253150771712411, - 1.0688208262934311, - 0.8903657823290045, - 0.7206081854554973, - 0.5622333814643393, - 0.4177471667827426, - 0.28943627055396504, - 0.17933229154022434, - 0.08917965858368956, - 0.020408119908682854, - -0.025889804874311848, - -0.04897605446807213, - -0.048478665568734994, - -0.024397638961691948, - 0.02289506047825085, - 0.09266136988301588, - 0.18380876807116686, - 0.2949075052474035, - 0.42421315099892287, - 0.5696941049928408, - 0.7290636365146332, - 0.899815947566456, - 1.0792656907858431, - 1.2645903189660712, - 1.4528745982999824, - 1.6411565833467594, - 1.826474328668863, - 2.005912600469836, - 2.1766488515612403, - 2.3359977346059715, - 2.4814534516387914, - 2.6107292719850306, - 2.7217935953589034, - 2.8129019914019198, - 2.8826247103804103, - 2.9298692311817978, - 2.9538974910140645, - 2.9543375250857222, - 2.931189332701927, - 2.8848248772643816, - 2.8159822201753695, - 2.725753881157681, - 2.615569608555189, - 2.4871738313369827, - 2.3425981483990848, - 2.1841292890261426, - 2.014273049793739, - 1.8357147766493804, - 1.6512770153923, - 1.4638749984291801, - 1.2764706698076291, - 1.0920259735789835, - 0.9134561421609523, - 0.7435837213706111, - 0.585094057181202, - 0.44049294620123497, - 0.31206711775552914, - 0.20184817078767905, - 0.11158053432129794, - 0.04269395676236265, - -0.003719042096930983, - -0.026920400777596068, - -0.026538155794052137, - -0.002572307749915348, - 0.04460517866194494, - 0.11425624075539774, - 0.20528835753117375, - 0.3162717793756857, - 0.4454620760583068, - 0.5908276474282288, - 0.7500817629534609, - 0.920718624818476, - 1.1000528858427296, - 1.285261999001925, - 1.4734307306713128, - 1.6615971355924573, - 1.8467992685107608, - 2.0261218958124076, - 2.196742470490914, - 2.3559756453921774, - 2.5013156227334994, - 2.630475672023305, - 2.741424193158594, - 2.8324167559636972, - 2.902023610887655, - 2.9491522370009977, - 2.9730645716947213, - 2.973388650360419, - 2.9501244724863067, - 2.9036440016572724, - 2.834685299458817, - 2.7443408857970226, - 2.6340405091991244, - 2.505528598817305, - 2.3608367537308967, - 2.202251703408316, - 2.0322792446086537, - 1.8536047234628934, - 1.6690506859536627, - 1.4815323646711713, - 1.2940117038466854, - 1.109450647715677, - 0.9307644288793457, - 0.7607755933387079, - 0.6021694872505977, - 0.45745190740742786, - 0.3289095833178799, - 0.21857411410972732, - 0.1281899289905778, - 0.059186776550364736, - 0.012657176765370301, - -0.010660808701345281, - -0.010395216179923616, - 0.013453953910195271, - 0.06051473706038327, - 0.13004907076875832, - 0.22096443422032885, - 0.331831077986276, - 0.4609045720199009, - 0.6061533163550155, - 0.7652905806441166, - 0.9358105672559596, - 1.1150279291950347, - 1.300120119621496, - 1.4881719050952384, - 1.6762213405422408, - 1.8613064808926216, - 2.0405120927174822, - 2.211015629195438, - 2.3701317433567923, - 2.515354637603786, - 2.644397581629672, - 2.755228975516401, - 2.8461043892732456, - 2.9155940735344457, - 2.9626055075554616, - 2.986400628912234, - 2.986607473181526, - 2.9632260400367247, - 2.916628293247838, - 2.8475522945855087, - 2.7570905641409964, - 2.6466728506270036, - 2.5180435833808987, - 2.3732343616675484, - 2.214531915140391, - 2.044442040743952, - 1.8656500847943678, - 1.680978593460361, - 1.4933427995173882, - 1.3057046473823022, - 1.1210260814756796, - 0.942222334584307, - 0.7721159528952002, - 0.6133922827507278, - 0.46855712112893083, - 0.3398971977241584, - 0.22944411184970592, - 0.13894229289893212, - 0.06982148964778598, - 0.02317422225819636, - -0.00026144742095400575, - -0.0001135555340210509, - 0.023617897685475106, - 0.07056094791484878, - 0.13997753283802797, - 0.23077513182590467, - 0.3415239956357093, - 0.47047969440683635, - 0.6156106283592405, - 0.774630067331125, - 0.9450322138773602, - 1.1241317211885025, - 1.3091060426108978, - 1.4970399448904863, - 1.6849714831398304, - 1.869938712474795, - 2.0490263996526825, - 2.2194119980383396, - 2.378410160848395, - 2.5235150906714052, - 2.6524400573869036, - 2.763153461263105, - 2.853910872495466, - 2.9232825419046806, - 2.9701759489325266, - 2.9938530313414313, - 2.9939418248944953, - 2.9704423294515023, - 2.923726508968918, - 2.854532425403882, - 2.7639525990341847, - 2.653416778758811, - 2.524669394101551, - 2.3797420445140878, - 2.220921459836358, - 2.050713437199466, - 1.8718033231062894, - 1.6870136639114013, - 1.4992596925772537, - 1.3115033537076664, - 1.1267065919095964, - 0.9477846401567119, - 0.7775600448222834, - 0.6187181524353753, - 0.47376476016074753, - 0.34498659787983355, - 0.23441526509232385, - 0.14379519137847768, - 0.07455612570072749, - 0.027790588407853062, - 0.0042366415356095005, - 0.004266249126373967, - 0.02787941113337067, - 0.07470416342067057, - 0.14400244385911645, - 0.23468173200651904, - 0.3453122788066801, - 0.47414965458600544, - 0.6191622597509778, - 0.7780633643270398, - 0.9483471710559571, - 1.1273283333151827, - 1.3121843046375365, - 1.4999998519560858, - 1.6878130305701218, - 1.8726618957826766, - 2.051631214537881, - 2.221898440387882, - 2.380778226735531, - 2.525764776356576, - 2.6545713593175533, - 2.7651663760735925, - 2.855805397007339, - 2.9250586731261246, - 2.9718336840587454, - 2.9953923677546355, - 2.9953627601638835, - 2.9717448613332236, - 2.9249106354060332, - 2.855598144526537, - 2.764899909159465, - 2.6542456783907857, - 2.5253798819314652, - 2.3803341194198104, - 2.2213951208828555, - 2.05106868363867, - 1.8720401543774516, - 1.6871320796404523, - 1.499259692577456, - 1.3113849379785947, - 1.1264697606383343, - 0.9474293937172518, - 0.7770863837756933, - 0.6181260775296985, - 0.4730542723310699, - 0.3441576982479, - 0.23346795496699574, - 0.14272947225570476, - 0.07337199926352699, - 0.026488056526165565, - 0.002815706266247109, - 0.00272691271317671, - 0.026221676007203515, - 0.07292803219931243, - 0.1421079193473202, - 0.23266881719585525, - 0.34318097687582205, - 0.4718999689009198, - 0.6167941938640653, - 0.7755769219777392, - 0.9457423561706173, - 1.1246051500072411, - 1.3093427572070957, - 1.4970399448906773, - 1.6847347685435037, - 1.8694652836561798, - 2.0483162573594633, - 2.2184651433916835, - 2.3772265953437413, - 2.5220948161774177, - 2.6507830761466584, - 2.7612597758929436, - 2.8517804859861506, - 2.920915457620261, - 2.9675721706108273, - 2.9910125630942574, - 2.9908646712073237, - 2.9671284951835037, - 2.9201759993531957, - 2.8507452460470506, - 2.7599287559168815, - 2.6491562782350346, - 2.5201722428996374, - 2.375008249735288, - 2.2159510289557516, - 2.0455063780664835, - 1.8663596439433487, - 1.6813333733150673, - 1.49334279951723, - 1.305349867527449, - 1.1203165223267215, - 0.9411579972616388, - 0.7706968390797109, - 0.6116183946830017, - 0.4664284616104648, - 0.3374137701160833, - 0.22660592007387448, - 0.13574934143729575, - 0.06627378354243518, - 0.019271767111357585, - -0.004518645446750277, - -0.004725489716035036, - 0.018651234630137487, - 0.06523956382907882, - 0.13430143612518555, - 0.2247443314491579, - 0.33513850111860755, - 0.4637395158331883, - 0.6085157763722779, - 0.7671805531348526, - 0.9372280492353563, - 1.1159729184249185, - 1.3005926146092746, - 1.4881719050951945, - 1.6757488455543763, - 1.860361491662731, - 2.039094610738007, - 2.209125656704768, - 2.367769283339668, - 2.512519693790442, - 2.6410901584971755, - 2.7514490782874246, - 2.841852023916926, - 2.9108692467657233, - 2.9574082268355246, - 2.9807309024483404, - 2.980465309926937, - 2.9566114496907216, - 2.9095412862557843, - 2.839992882138651, - 2.7490587581768047, - 2.638168663828856, - 2.509067029177867, - 2.363785454235072, - 2.2046106693993215, - 2.0340484723616594, - 1.8547842101835736, - 1.6696404297795162, - 1.4815323646709915, - 1.293421960020983, - 1.1082711609951441, - 0.9289952011264044, - 0.758416627347688, - 0.5992207867463428, - 0.4539134770466625, - 0.324781428688137, - 0.21385624173002668, - 0.12288234631074635, - 0.05328949195183669, - 0.006170199560972409, - -0.01773746826786396, - -0.018061546933552455, - 0.005197964075672135, - 0.05166910118232049, - 0.12061380281553703, - 0.21093954909154922, - 0.32121659151230814, - 0.449700500962846, - 0.5943596784076772, - 0.7529073944304265, - 0.9228378523302183, - 1.1014657060431663, - 1.2859684096597637, - 1.4734307306713745, - 1.660890724934741, - 1.845386448310282, - 2.024002668300537, - 2.193916839014205, - 2.3524436144128344, - 2.4970771978287933, - 2.625530859886652, - 2.7357730015983357, - 2.8260591939035695, - 2.8949596883674227, - 2.9413819651754336, - 2.9645879628342184, - 2.96420571785069, - 2.940235230828465, - 2.893048466467759, - 2.8233834874693575, - 2.7323328148548827, - 2.6213261982664875, - 2.4921080679716563, - 2.3467100241656627, - 2.1874187974311265, - 2.016740185643014, - 1.8373595360467774, - 1.6520993957405228, - 1.4638749984291506, - 1.2756482894595154, - 1.0903812141817788, - 0.9109890063116228, - 0.7402942129655757, - 0.5809821814145109, - 0.43555870956626364, - 0.3063105280443518, - 0.19526923709049587, - 0.10417926702731559, - 0.034470367559018056, - -0.012764940223416593, - -0.03678859354254688, - -0.03722862761420184, - -0.01408504174350858, - 0.032270200675003274, - 0.10109903825380451, - 0.1913089512918739, - 0.30147019147398413, - 0.42983832986816406, - 0.5743817676215558, - 0.7328137755006914, - 0.9026285569875897, - 1.0811407662010364, - 1.2655278574141706, - 1.4528745983000644, - 1.6402190448989926, - 1.824599253253498, - 2.003099991048537, - 2.1728987125750274, - 2.3313100719773883, - 2.4758282727695526, - 2.6041665857584384, - 2.7142934121382014, - 2.8044643230310866, - 2.8732495701836984, - 2.9195566339636656, - 2.942647453059543, - 2.942150064160207, - 2.918064468051064, - 2.8707626296141426, - 2.8009826117318175, - 2.7098169356073214, - 2.598695351064915, - 2.469362288553218, - 2.323849348448918, - 2.1644432615160696, - 1.993649825810967, - 1.814154388761204, - 1.6287794976450318, - 1.4404403863493802, - 1.2520990004020864, - 1.066717285333555, - 0.8872104750413632, - 0.716401116822979, - 0.556974558130193, - 0.41143659705163144, - 0.2820739643910152, - 0.17091826057146492, - 0.07971391609618632, - 0.009890680849959421, - -0.037458923895721, - -0.06159683518297064, - -0.06215108804714428, - -0.039121681613002085, - 0.00711942090533417, - 0.0758341583002655, - 0.16593001105116267, - 0.27597723102301275, - 0.4042313894638989, - 0.5486608877008797, - 0.7069789966802779, - 0.876679920064059, - 1.0550783121506724, - 1.2393516273929646, - 1.4265846336445325, - 1.6138153871244056, - 1.798081944054671, - 1.9764690722997522, - 2.1461542263303093, - 2.304452060469788, - 2.4488567784120714, - 2.5770816511421075, - 2.687095080034262, - 2.7771526363890517, - 2.845824572132591, - 2.8920183678113425, - 2.9149959622927266, - 2.9143853924443146, - 2.8901866592303422, - 2.8427717277113937, - 2.7728786609485825, - 2.681599980323428, - 2.5703654358388914, - 2.440919458121833, - 2.2952936477273145, - 2.135774735597729, - 1.9648685199675884, - 1.7852603484417648, - 1.5997727684773118, - 1.411321014139303, - 1.222867031132607, - 1.0373727651666187, - 0.8577534503156341, - 0.6868316340551209, - 0.527292664014452, - 0.38164233845952233, - 0.25216738837223573, - 0.14089941435241377, - 0.0495828470806384, - -0.020352563381098768, - -0.06781429558403969, - -0.09206428639318794, - -0.09273057066704006, - -0.0698131473533979, - -0.023683979489652854, - 0.04491887189366975, - 0.13490288745241286, - 0.24483831922806998, - 0.3729807386452558, - 0.5172985472075504, - 0.6755050160379392, - 0.8450943489746102, - 1.023381200491409, - 1.2075430252186057, - 1.3946645911845283, - 1.5817839547850316, - 1.7659391724180984, - 1.9442150121239745, - 2.113788928549019, - 2.2719755761914806, - 2.4162691589218634, - 2.544382947900662, - 2.654285344677131, - 2.7442319207272026, - 2.8127929281522865, - 2.858875847674099, - 2.8817426183350636, - 2.8810212771778656, - 2.8567118253415575, - 2.8091862280615616, - 2.739182548573918, - 2.6477933084347303, - 2.536448257821406, - 2.4068918275353166, - 2.2611556183058625, - 2.1015263612505013, - 1.9305098547768509, - 1.7507914466651704, - 1.5651936845458152, - 1.3766318026579978, - 1.1880677468798124, - 1.002463463095665, - 0.82273418555324, - 0.6517024619013158, - 0.4920536399429958, - 0.34629351811752496, - 0.21670882758042817, - 0.10533116910473649, - 0.013904973544169058, - -0.05614000886604281, - -0.10371125650423933, - -0.12807070606252688, - -0.12884639222640115, - -0.10603831377101505, - -0.060018433560915324, - 0.008475187545614854, - 0.09835003037722069, - 0.20817634714769456, - 0.336209709453953, - 0.48041851897192767, - 0.6385160469963332, - 0.8079964975374648, - 0.9861745252419309, - 1.1702275849110684, - 1.3572404447449333, - 1.5442511613112149, - 1.7282977911794661, - 1.9064651025612367, - 2.0759305502743075, - 2.2340087889889384, - 2.3781940227460496, - 2.5061995228771807, - 2.6159936911028545, - 2.705832099069963, - 2.7742849990507263, - 2.820259871937475, - 2.8430186569431477, - 2.842189391281118, - 2.8177720762608702, - 2.7701386772881564, - 2.700027257769077, - 2.6085303394299686, - 2.4970776726184116, - 2.367413688305714, - 2.221569987391201, - 2.0618333011613403, - 1.8907094281940635, - 1.710883716439227, - 1.5251787136964579, - 1.3365096543743382, - 1.147838484520706, - 0.9621271501879258, - 0.7822908857934169, - 0.6111522391547672, - 0.4513965582446557, - 0.30552964167029406, - 0.17583822075591105, - 0.06435389644308451, - -0.02717890024593976, - -0.09733041890727417, - -0.1450081377514999, - -0.1694739933023196, - -0.17035602007735043, - -0.14765421668370676, - -0.10174054581811934, - -0.033353068171252054, - 0.05641569725315418, - 0.16613600283652433, - 0.2940634203431248, - 0.43816635161618234, - 0.5961580681174675, - 0.7655327740251161, - 0.9436051241513348, - 1.1275525734652683, - 1.3144598903337692, - 1.5013651314911893, - 1.6853063536736372, - 1.863368325258291, - 2.032728501230569, - 2.1907015364257445, - 2.334781635051642, - 2.46268206860588, - 2.5723712389746285, - 2.662104717970534, - 2.730452758031518, - 2.7763228402155966, - 2.798976903901295, - 2.7980429864671486, - 2.7735210893880016, - 2.725783178234697, - 2.655567316578521, - 2.5639660263106636, - 2.4524090579433926, - 2.3226408426127216, - 2.176692981382491, - 2.016852205704385, - 1.8456243143200364, - 1.665694655343515, - 1.4798857767385956, - 1.2911129130778722, - 1.102338010573971, - 0.9165230154418718, - 0.7365831622635299, - 0.5653409990199163, - 0.4054818738464421, - 0.2595115855144513, - 0.12971686551135064, - 0.018129314941835756, - -0.07350663500892181, - -0.14376123377446542, - -0.19154195940218355, - -0.21611074825319565, - -0.21709563468261725, - -0.1944966171351757, - -0.14868565814528567, - -0.08040081824131642, - 0.00926538373507571, - 0.11888320032736896, - 0.2467082034610799, - 0.3907087951418208, - 0.5485982469925921, - 0.7178707633536474, - 0.8958409991977802, - 1.0796864096557055, - 1.2664917632553987, - 1.4532951168920631, - 1.637134527462706, - 1.8150947635061097, - 1.9843532801674924, - 2.142224732442704, - 2.2862033247001046, - 2.4140023285975367, - 2.5235901461815526, - 2.613222349424876, - 2.6814691909249158, - 2.727238151900001, - 2.749791171888, - 2.7487562884272236, - 2.724133503151852, - 2.6762947817920377, - 2.6059781880782444, - 2.5142762440607984, - 2.4026187004109225, - 2.272749988423519, - 2.1267017093209244, - 1.9667605947134943, - 1.7954324435011528, - 1.615402603956612, - 1.4294936242018497, - 1.240620738967551, - 1.0517458946234242, - 0.8658310375431368, - 0.6857914024664831, - 0.5144495375312141, - 0.3544907910312493, - 0.20842096189446413, - 0.0785267817655206, - -0.03316014809382266, - -0.12489539634137879, - -0.19524921225355982, - -0.24312907372149306, - -0.2677969169496703, - -0.268880776136695, - -0.24638064957107336, - -0.20066849963099473, - -0.1324823866888723, - -0.04291482943048694, - 0.06660442484332649, - 0.19433094821431568, - 0.33823314284309347, - 0.4960242805079802, - 0.6651985657041566, - 0.843070653560615, - 1.026817999362457, - 1.213525371792679, - 1.4002308279003535, - 1.5839724247384355, - 1.7618349309988308, - 1.9309958019819404, - 2.0887696928377633, - 2.2326508080887244, - 2.360352419546426, - 2.4698429294110023, - 2.559377909809051, - 2.6275276134918295, - 2.673199521830639, - 2.6956555745167186, - 2.694523809241476, - 2.6698042277921648, - 2.6218687960517784, - 2.5514555779035932, - 2.4596570955501935, - 2.347903099815218, - 2.2179380221466296, - 2.071793463918212, - 1.9117561568925725, - 1.7403319001215336, - 1.5602060420292483, - 1.374201130890303, - 1.185232401585545, - 0.996261800637388, - 0.8102512745698434, - 0.6301160582736429, - 0.4586787000378146, - 0.29862454830719465, - 0.15245940216020884, - 0.022469993391976112, - -0.08931207658522204, - -0.18114237627904117, - -0.2515911548161204, - -0.2995658899372061, - -0.3243285176970578, - -0.32550707214469077, - -0.303101551419002, - -0.25748391774878865, - -0.18939223135710723, - -0.09991901078103792, - 0.00950599682820076, - 0.13713836370039467, - 0.2809464921453503, - 0.43864365408999595, - 0.6077240541779225, - 0.7855023476862455, - 0.9691559900478388, - 1.1557697500938215, - 1.3423816850219457, - 1.5260298520319935, - 1.7037990199634256, - 1.8728666442641755, - 2.030547380231537, - 2.1743354325348694, - 2.3019440731329044, - 2.4113417043728043, - 2.5007838985276223, - 2.5688409084948214, - 2.6144202157924976, - 2.6367837602580066, - 2.635559579728848, - 2.610747676138102, - 2.5627200155147642, - 2.49221466188742, - 2.4003241376047404, - 2.2884781936351946, - 2.1584212615717435, - 2.01218494293362, - 1.8520559696284138, - 1.6805401408526963, - 1.500322805175263, - 1.3142265110143185, - 1.1251664933958279, - 0.9361046989863768, - 0.7500030744538243, - 0.5697768548328962, - 0.3982485885561616, - 0.23810362421188724, - 0.09184776102189841, - -0.0382322690753531, - -0.15010486452397848, - -0.24202559368947732, - -0.3125647055550329, - -0.3606296777191863, - -0.38548244609404736, - -0.38675104458626725, - -0.36443547119259717, - -0.31890768799978825, - -0.25090575508912, - -0.16152219085552572, - -0.052186742308955966, - 0.07535616292170524, - 0.21907492728768627, - 0.3766828228569776, - 0.5456740544140118, - 0.7233632773768477, - 0.9069279473193506, - 1.0934528332129956, - 1.2799759923950216, - 1.463535482206253, - 1.641216071626174, - 1.8101952162425947, - 1.9677875714924755, - 2.111487342184084, - 2.239007800416502, - 2.348317348675514, - 2.4376715593734795, - 2.505640685547112, - 2.5511322088528763, - 2.573408069266857, - 2.572096304765011, - 2.547196917418842, - 2.4990818733952724, - 2.4284892368609885, - 2.3365115303026007, - 2.2245785048261255, - 2.094434592162227, - 1.948111393967371, - 1.7878956422861625, - 1.616293136452215, - 1.4359892251711566, - 1.2498064569987464, - 1.060660067096694, - 0.871512002267957, - 0.6853242093166346, - 0.5050119234137019, - 0.33339769312780665, - 0.17316686718277058, - 0.02682524493616839, - -0.10334044153819975, - -0.21529859054967987, - -0.3073047703280899, - -0.3779292297217666, - -0.4260794461944683, - -0.45101735552382605, - -0.4523709914819717, - -0.43014035193131045, - -0.3846973988246676, - -0.3167801921090199, - -0.22748125004600872, - -0.11823031951163565, - 0.00922817199877167, - 0.15286262706973447, - 0.3103863179024527, - 0.4792934494135489, - 0.6568986771549391, - 0.8403794568323554, - 1.0268205575503933, - 1.213260036778098, - 1.3967359519886062, - 1.574333072293384, - 1.7432288534118872, - 1.9007379509127664, - 2.044354569736424, - 2.1717919821125324, - 2.2810185906579843, - 2.3702899679165563, - 2.4381763670552417, - 2.4835852698615666, - 2.5057786164419467, - 2.504384444902641, - 2.479402757445211, - 2.4312055203667438, - 2.3605307979636057, - 2.2684711128519313, - 2.1564562162671996, - 2.026230540069396, - 1.8798256860442308, - 1.7195283863651973, - 1.547844440494794, - 1.3674591972673023, - 1.1811952053660675, - 0.9919677000818758, - 0.8027386283457993, - 0.6164699370898472, - 0.43607686161257275, - 0.26438195060988423, - 0.10407055293321459, - -0.04235153193195604, - -0.17259757178581153, - -0.2846359648098872, - -0.3767222791078657, - -0.44742676340145315, - -0.49565689502803667, - -0.5206746096389431, - -0.5221079408803091, - -0.49995688648874853, - -0.45459340829125805, - -0.38675556610940887, - -0.29753587807960613, - -0.1883640909525897, - -0.060984632098778274, - 0.08257090119107863, - 0.24001578124273493, - 0.4088442130980533, - 0.5863708524324978, - 0.7697731550756872, - 0.9561358902564887, - 1.1424971155678656, - 1.3258948886065276, - 1.5034139786073188, - 1.6722318414121258, - 1.829663132713877, - 1.973202057574697, - 2.1005618883476673, - 2.2097110277720446, - 2.2989050485142446, - 2.36671420386284, - 2.412045975727529, - 2.434162304336641, - 2.4326912279179997, - 2.407632748794613, - 2.3593588333848245, - 2.2886075461060145, - 2.196471409695379, - 2.084380175509122, - 1.9540782755277406, - 1.807597311657036, - 1.6472240161907425, - 1.4754641887121491, - 1.2950031781741291, - 1.108663533380973, - 0.9193604897421119, - 0.7300559943078861, - 0.54371199412942, - 0.3632437246243574, - 0.19147373460766903, - 0.03108737304914283, - -0.11540956044803885, - -0.24573033356512855, - -0.3578433443657236, - -0.45000416083574435, - -0.5207830315793118, - -0.5690874338162553, - -0.5941793030807225, - -0.5956866729017429, - -0.573609540898915, - -0.5283198687826464, - -0.4605557162579109, - -0.3714096013446354, - -0.2623112706773679, - -0.13500515151044828, - 0.00847715898052355, - 0.16584893323797845, - 0.3346043764180683, - 0.5120581443122547, - 0.695387692865433, - 0.8816777914210207, - 1.0679664976865206, - 1.2512918693731518, - 1.428738675830113, - 1.597484373014227, - 1.75484361673155, - 1.898310612158041, - 2.0255986317604684, - 2.134676078391544, - 2.223798524830629, - 2.2915362244798887, - 2.3367966593615095, - 2.3588417698164603, - 2.3572995941850152, - 2.332170134902528, - 2.283825358499411, - 2.2130033295049314, - 2.1207965707678245, - 2.0086348337563624, - 1.8782625505617063, - 1.7317113232013437, - 1.571267884079905, - 1.3994380328906657, - 1.2189071186978127, - 1.0324976904160514, - 0.8431249835648474, - 0.6537509453045522, - 0.4673375227962688, - 0.28679995156693977, - 0.11496078054128687, - -0.04549464120239216, - -0.19206051395056192, - -0.3224501052765031, - -0.4346318131350564, - -0.5268612054036603, - -0.5977085305780575, - -0.646081265769753, - -0.6712413464053302, - -0.6728168059059325, - -0.6508076417836764, - -0.605585815641688, - -0.5378893870776512, - -0.44881087400473096, - -0.33978002295073084, - -0.21254126106350504, - -0.06912618541163223, - 0.08817847655289968, - 0.256866930092171, - 0.4342538311035869, - 0.6175166356374484, - 0.8037401131427467, - 0.9899623214323545, - 1.173221318322509, - 1.3506018732671976, - 1.5192814423270806, - 1.6765746814134657, - 1.8199757958064766, - 1.9471980580769261, - 2.0562098711812857, - 2.1452668080021353, - 2.212939122045707, - 2.25813429543707, - 2.2801142686204092, - 2.2785070800388723, - 2.253312732230361, - 2.20490319182786, - 2.13401652346292, - 2.0417452500864357, - 1.9295191232680615, - 1.7990825752010493, - 1.6524672080045755, - 1.4919597541838736, - 1.3200660135343305, - 1.1394713352202945, - 0.9529982682571304, - 0.763562048264788, - 0.5741246225039212, - 0.38764793823657684, - 0.20704723108857379, - 0.03514505008482996, - -0.12537325559743312, - -0.27200188614467835, - -0.402454109031319, - -0.5146983221133667, - -0.6069900931694163, - -0.677899670596801, - -0.7263345314089444, - -0.7515566109339971, - -0.7531939424953127, - -0.7312465235073238, - -0.6860863154755814, - -0.6184513779005392, - -0.529434228598048, - -0.4204646139995572, - -0.2932869611554335, - -0.1499328670386742, - 0.007310940995618853, - 0.175938668305683, - 0.35326497088482167, - 0.5364673048788796, - 0.7226304398321655, - 0.9087924336530087, - 1.0919913442525568, - 1.2693119411800313, - 1.4379316805905964, - 1.5951652184901692, - 1.7385067602528985, - 1.8656695785436566, - 1.9746220764128724, - 2.0636198268372743, - 2.1312330834159203, - 2.1763693283671985, - 2.1982905022286254, - 2.1966246435360235, - 2.17137175492006, - 2.122903803106051, - 2.051958852817787, - 1.9596294270981054, - 1.8473452776089843, - 1.7168508366348956, - 1.570177706386223, - 1.4096126194596506, - 1.2376613757417627, - 1.057009324487536, - 0.8704790148029606, - 0.680985682398545, - 0.4914912746251233, - 0.3049577388338861, - 0.12430031074128678, - -0.04765846053822357, - -0.20823322573777192, - -0.35491818495567773, - -0.48542660557681294, - -0.5977268853685049, - -0.6900745920204049, - -0.7610399738421615, - -0.8095305077585768, - -0.8348081290102098, - -0.8365008708325907, - -0.8146087305526561, - -0.7695036695886253, - -0.7019237473539852, - -0.6129614815777773, - -0.504046618604269, - -0.3769235853977816, - -0.23362397884514846, - -0.0764345262152632, - 0.0921389779358908, - 0.2694111896871114, - 0.45255956526964103, - 0.6386688743136741, - 0.8247771748123784, - 1.0079225247605077, - 1.1851896937930362, - 1.3537561381491698, - 1.5109365139189856, - 1.6542250265605738, - 1.7813349488225596, - 1.8902346838390724, - 1.979179804669557, - 2.046740564996812, - 2.091824447122062, - 2.113693391665265, - 2.111975437244827, - 2.0866705865736295, - 2.038150806459142, - 1.967154161706989, - 1.8747731754417372, - 1.7624375994062906, - 1.6318918659667356, - 1.485167577414676, - 1.324551466427336, - 1.1525493329716905, - 0.9718465263830882, - 0.7852655958476354, - 0.5957217771566383, - 0.4061770177393062, - 0.21959326502768423, - 0.0388857548166753, - -0.13312296370015453, - -0.2937475411770658, - -0.44048217763353115, - -0.5710401403757419, - -0.6833898270930046, - -0.775786805397356, - -0.8468013235201457, - -0.895340858308672, - -0.9206673449261153, - -0.9224088165309334, - -0.9005652703730566, - -0.8555086677940189, - -0.7879770681306616, - -0.6990629890356481, - -0.5901961767776724, - -0.463121058244752, - -0.3198692302479754, - -0.16272741998079798, - 0.005798578076095948, - 0.1830234200756992, - 0.3661245623253462, - 0.5521867745283239, - 0.7382481147533484, - 0.9213466410694984, - 1.0985671231850078, - 1.2670870174128266, - 1.4242209799165493, - 1.567463216227864, - 1.6945269991683123, - 1.8033807319449784, - 1.892279987689774, - 1.959795020157975, - 2.004833311723054, - 2.026656803077002, - 2.0248935329099638, - 1.9995435040063816, - 1.9509786832449545, - 1.8799371355027579, - 1.7875113839747618, - 1.6751311804752165, - 1.544540957440136, - 1.3977723172316954, - 1.2371119925965761, - 1.0650657835723196, - 0.8843190395637206, - 0.6976943098263098, - 0.5081068302196874, - 0.318518548242857, - 0.13189141139659838, - -0.04885934445584168, - -0.2209111700526238, - -0.3815787159799032, - -0.5283561821892194, - -0.6589568359193632, - -0.7713490747922792, - -0.8637884663522619, - -0.9348452587641838, - -0.9834269288084999, - -1.008795411581844, - -1.0105787401762503, - -0.9887769117756664, - -0.9437618876556292, - -0.8762717270874777, - -0.7873989476584967, - -0.6785732955716441, - -0.5515391976503705, - -0.4083282506410595, - -0.25122718167260727, - -0.0827417851614253, - 0.09444259511042594, - 0.2775034155133843, - 0.46352544581438726, - 0.649546744145781, - 0.8326053686397031, - 1.0097860890675827, - 1.178266361805301, - 1.335360843079009, - 1.478563738482693, - 1.6055883208994262, - 1.7144029935988505, - 1.803263329774488, - 1.8707395832430618, - 1.9157392364391637, - 1.937524230115761, - 1.9357226030239074, - 1.910334358008583, - 1.861731462008939, - 1.7906519799618525, - 1.6981884351224272, - 1.5857705793646772, - 1.4551428451840747, - 1.3083368350018394, - 1.1476392816238998, - 0.9755559851458415, - 0.7947722950324119, - 0.6081107605960392, - 0.41848661775578705, - 0.2288618140677039, - 0.04219829709024551, - -0.13858869725588818, - -0.31067661965160764, - -0.4713801206251942, - -0.6181934000727036, - -0.748829725175683, - -0.8612574934999517, - -0.9537322725335433, - -1.0248243103854917, - -1.0734410837806623, - -1.0988445277601873, - -1.1006626753609903, - -1.0788955237119278, - -1.0339150340337877, - -0.966459265543529, - -0.8776207357737627, - -0.7688291908739767, - -0.6418290576133319, - -0.49865193268451125, - -0.34158454316299236, - -0.17313268341194643, - 0.0040183028386937825, - 0.18704587201289247, - 0.3730347939301146, - 0.5590231267753252, - 0.7420489287315415, - 0.9191969696228466, - 1.0876447058765852, - 1.2447067937701304, - 1.3878774389486703, - 1.5148699143468058, - 1.6236526232842148, - 1.7124811390049703, - 1.7799257153760584, - 1.8248938348822024, - 1.8466474383262148, - 1.8448145645085776, - 1.819395216323707, - 1.7707613607597108, - 1.6996510628026917, - 1.6071568457561916, - 1.4947084615425765, - 1.3640503427055208, - 1.2172140917141514, - 1.0564864414230384, - 0.8843731919743044, - 0.7035596928797996, - 0.5168684934996511, - 0.32721482979978167, - 0.13756064938270135, - -0.04913210014675996, - -0.22994818282156998, - -0.40206504927673037, - -0.5627973499955569, - -0.7096392848278359, - -0.8403041209098172, - -0.952760255762573, - -1.045263256829379, - -1.116383372174706, - -1.1650280784789824, - -1.1904593107391146, - -1.1923051019483264, - -1.170565449191812, - -1.1256123136469343, - -1.058183754487441, - -0.969372289202622, - -0.8606076638997993, - -0.7336343053053563, - -0.5904838100697432, - -0.4334429052265002, - -0.2650173850967051, - -0.08789259336882543, - 0.09510892642262883, - 0.28107194413792946, - 0.4670345180026003, - 0.650034706241519, - 0.8271572787185479, - 0.9955796919013757, - 1.1526166021066364, - 1.2957622150204264, - 1.4227298036158191, - 1.5314877712524675, - 1.6202916912134293, - 1.687711817404521, - 1.73265563234897, - 1.7543850768879077, - 1.7525281898601195, - 1.7270849741978451, - 1.6784273969268695, - 1.6072935230708685, - 1.5147758759705132, - 1.402304207585234, - 1.2716229504955523, - 1.1247637072071965, - 0.9640132106101615, - 0.7918772608836373, - 0.6110412075755138, - 0.42432760008091874, - 0.23465167440113804, - 0.04497537817382476, - -0.14173934096124544, - -0.32257724700153034, - -0.49471579054885956, - -0.6554696220510865, - -0.8023329413247879, - -0.9330190154724904, - -1.0454962419814533, - -1.1380201882616094, - -1.2091611023443425, - -1.2578264608773475, - -1.2832781988250277, - -1.2851443491480004, - -1.2634249088994316, - -1.218491839224693, - -1.1510831992659298, - -1.0622915064811869, - -0.9535465069459825, - -0.8265926273560181, - -0.6834614643308352, - -0.5264397448741587, - -0.3580332632759565, - -0.1809273631948989, - 0.002055411864338226, - 0.18799983179195645, - 0.37394395484183784, - 0.5569258392691825, - 0.734030254965907, - 0.9024346584285896, - 1.0594537060030207, - 1.202581603402725, - 1.3295316236288268, - 1.4382721700687924, - 1.5270588160332677, - 1.5944618154552284, - 1.6393886508851032, - 1.6611012631907465, - 1.659227691237556, - 1.6337679379841235, - 1.5850939704823739, - 1.5139438537817493, - 1.4214101112485795, - 1.3089224948676206, - 1.1782254372451575, - 1.0313505409109538, - 0.8705845387809168, - 0.6984332310574263, - 0.5175819673133755, - 0.330853296967573, - 0.14116245604543948, - -0.04852860779181624, - -0.23525794688111773, - -0.4161103251976448, - -0.5882631933195368, - -0.749031201672069, - -0.8959085500495375, - -1.0266085055322625, - -1.1390994655857023, - -1.2316369975981476, - -1.3027913495795396, - -1.3514699981562408, - -1.3769348782715622, - -1.378814022865582, - -1.3571074289708336, - -1.3121870577124142, - -1.2447909682123037, - -1.1560116779091423, - -1.0472789328583394, - -0.9203371597366756, - -0.7772179551445546, - -0.6202080460660984, - -0.4518132267732753, - -0.27471884090640186, - -0.0917474319519638, - 0.09418576999817503, - 0.28011882321646325, - 0.46308978597473127, - 0.6401834281819898, - 0.8085772063526122, - 0.9655857768481196, - 1.1087033453993542, - 1.2356431850236866, - 1.3443736991246635, - 1.4331504610286738, - 1.5005437246839939, - 1.545460972656861, - 1.567164145830116, - 1.5652812830840517, - 1.5398123873919656, - 1.491129425820156, - 1.4199704634323622, - 1.32742802360889, - 1.2149318583483302, - 1.0842264002698776, - 0.9373432519170612, - 0.7765691462189038, - 0.6044098833907265, - 0.4235508130172285, - 0.2368144845301694, - 0.047116133966892855, - -0.14258229099952419, - -0.3293188426947101, - -0.5101782850814759, - -0.6823380687276408, - -0.8431128440475215, - -0.9899968108247276, - -1.1207032361289517, - -1.2332005174153244, - -1.325744222062333, - -1.3969045980700472, - -1.4455891220554289, - -1.4710597289526084, - -1.4729444516924186, - -1.4512432872986896, - -1.4063281968879335, - -1.3389372395739083, - -1.250162932786627, - -1.141435022574143, - -1.0144979356058235, - -0.8713832684738319, - -0.7143777481561704, - -0.545987168917221, - -0.36889687439054186, - -0.1859294080561722, - 2.7610498372522984e-13, - 0.18592940805638303, - 0.3688968743905855, - 0.5459871689175695, - 0.7143777481566542, - 0.8713832684742758, - 1.014497935606225, - 1.1414350225744962, - 1.2501629327868393, - 1.3389372395738535, - 1.406328196887999, - 1.4512432872987509, - 1.4729444516924557, - 1.471059728952594, - 1.445589122055408, - 1.3969045980698738, - 1.325744222062095, - 1.2332005174150298, - 1.120703236128601, - 0.9899968108245736, - 0.8431128440474944, - 0.6823380687275997, - 0.5101782850812808, - 0.3293188426941764, - 0.1425822909989735, - -0.04711613396710551, - -0.23681448453071877, - -0.4235508130177663, - -0.6044098833910845, - -0.7765691462192337, - -0.9373432519173768, - -1.0842264002700295, - -1.2149318583482476, - -1.3274280236090856, - -1.4199704634325987, - -1.4911294258203291, - -1.5398123873920677, - -1.5652812830840876, - -1.5671641458301027, - -1.5454609726568216, - -1.5005437246839286, - -1.4331504610284374, - -1.3443736991245494, - -1.2356431850236715, - -1.108703345399071, - -0.9655857768476755, - -0.808577206352131, - -0.6401834281814762, - -0.4630897859743653, - -0.28011882321625314, - -0.09418576999830428, - 0.09174743195217396, - 0.2747188409067691, - 0.45181322677378727, - 0.6202080460664356, - 0.7772179551445816, - 0.9203371597370754, - 1.047278932858689, - 1.1560116779092553, - 1.2447909682125387, - 1.3121870577124806, - 1.3571074289708531, - 1.378814022865574, - 1.3769348782715247, - 1.3514699981561344, - 1.3027913495793673, - 1.231636997598141, - 1.139099465585486, - 1.026608505531909, - 0.8959085500492664, - 0.7490312016717536, - 0.5882631933192097, - 0.4161103251974477, - 0.23525794688107388, - 0.048528607791268205, - -0.14116245604599453, - -0.3308532969681224, - -0.5175819673137497, - -0.6984332310577803, - -0.8705845387811005, - -1.0313505409113994, - -1.1782254372453114, - -1.308922494867973, - -1.421410111248693, - -1.513943853781778, - -1.5850939704824807, - -1.63376793798423, - -1.6592276912375936, - -1.6611012631907345, - -1.6393886508850637, - -1.5944618154551602, - -1.5270588160330956, - -1.4382721700685965, - -1.3295316236285766, - -1.2025816034023253, - -1.0594537060027167, - -0.9024346584285499, - -0.7340302549653963, - -0.5569258392686477, - -0.3739439548416284, - -0.18799983179140292, - -0.0020554118641274294, - 0.18092736319510339, - 0.3580332632761542, - 0.5264397448746412, - 0.6834614643312792, - 0.8265926273564206, - 0.9535465069460143, - 1.062291506481299, - 1.1510831992660853, - 1.2184918392248214, - 1.2634249088994927, - 1.285144349148035, - 1.2832781988249915, - 1.257826460877309, - 1.2091611023441704, - 1.1380201882613716, - 1.0454962419811547, - 0.9330190154722525, - 0.802332941324752, - 0.6554696220509169, - 0.49471579054837544, - 0.32257724700133383, - 0.14173934096071042, - -0.044975378174374095, - -0.23465167440117785, - -0.4243276000812992, - -0.6110412075760503, - -0.7918772608841522, - -0.964013210610503, - -1.1247637072070895, - -1.2716229504957068, - -1.4023042075854697, - -1.5147758759708079, - -1.6072935230711063, - -1.6784273969270416, - -1.7270849741979286, - -1.752528189860114, - -1.7543850768878717, - -1.732655632348865, - -1.6877118174044559, - -1.6202916912134215, - -1.5314877712524364, - -1.4227298036156832, - -1.2957622150200225, - -1.152616602106192, - -0.9955796919008943, - -0.827157278718037, - -0.6500347062414846, - -0.4670345180023889, - -0.2810719441375475, - -0.09510892642224847, - 0.0878925933690306, - 0.265017385096902, - 0.4334429052268298, - 0.5904838100701886, - 0.7336343053057562, - 0.8606076639001512, - 0.9693722892029153, - 1.0581837544874684, - 1.1256123136469367, - 1.1705654491918516, - 1.1923051019483621, - 1.1904593107391026, - 1.1650280784788762, - 1.1163833721745327, - 1.045263256829223, - 0.9527602557623578, - 0.8403041209094666, - 0.7096392848275632, - 0.5627973499953853, - 0.4020650492768436, - 0.2299481828213729, - 0.04913210014638976, - -0.1375606493832507, - -0.32721482980033667, - -0.5168684935001991, - -0.7035596928801751, - -0.8843731919743401, - -1.0564864414232225, - -1.2172140917145984, - -1.3640503427056736, - -1.4947084615426096, - -1.6071568457562049, - -1.699651062802927, - -1.770761360759884, - -1.8193952163238118, - -1.8448145645086111, - -1.8466474383261828, - -1.8248938348822068, - -1.779925715375993, - -1.7124811390047978, - -1.6236526232840167, - -1.514869914346671, - -1.3878774389486344, - -1.2447067937696863, - -1.087644705876104, - -0.919196969622332, - -0.7420489287310079, - -0.5590231267747799, - -0.3730347939300737, - -0.18704587201285316, - -0.004018302838487968, - 0.1731326834124611, - 0.34158454316347364, - 0.4986519326845494, - 0.6418290576136018, - 0.7688291908743261, - 0.8776207357740585, - 0.9664592655437627, - 1.0339150340339156, - 1.07889552371197, - 1.100662675360982, - 1.098844527760174, - 1.0734410837805786, - 1.0248243103853183, - 0.9537322725333095, - 0.8612574934996544, - 0.7488297251753283, - 0.6181934000722983, - 0.47138012062502327, - 0.3106766196511248, - 0.138588697255693, - -0.042198297090282694, - -0.22886181406774603, - -0.418486617756342, - -0.6081107605965885, - -0.7947722950329457, - -0.9755559851463578, - -1.1476392816242413, - -1.3083368350020108, - -1.4551428451842292, - -1.58577057936491, - -1.6981884351226413, - -1.790651979961944, - -1.8617314620089416, - -1.910334358008689, - -1.9357226030239434, - -1.9375242301157276, - -1.9157392364390629, - -1.8707395832429956, - -1.8032633297744791, - -1.7144029935988194, - -1.6055883208992916, - -1.4785637384822905, - -1.3353608430785635, - -1.178266361805269, - -1.0097860890672261, - -0.8326053686391708, - -0.6495467441454047, - -0.46352544581400523, - -0.27750341551300145, - -0.09444259511022077, - 0.08274178516130506, - 0.2512271816729356, - 0.4083282506415037, - 0.5515391976507719, - 0.6785732955718946, - 0.787398947658507, - 0.8762717270877127, - 0.9437618876557998, - 0.9887769117757059, - 1.010578740176285, - 1.0087954115818307, - 0.9834269288085038, - 0.9348452587640542, - 0.8637884663520242, - 0.7713490747919807, - 0.6589568359190086, - 0.5283561821890641, - 0.3815787159796028, - 0.22091117005228378, - 0.048859344455490256, - -0.1318914113969712, - -0.3185185482432349, - -0.5081068302198968, - -0.6976943098263505, - -0.8843190395642582, - -1.065065783572833, - -1.2371119925970628, - -1.397772317231865, - -1.5445409574402889, - -1.675131180475351, - -1.7875113839750565, - -1.8799371355028465, - -1.950978683245128, - -1.9995435040064853, - -2.0248935329099793, - -2.0266568030769685, - -2.00483331172295, - -1.9597950201578687, - -1.892279987689602, - -1.803380731944783, - -1.6945269991681773, - -1.5674632162277073, - -1.424220979916235, - -1.2670870174123454, - -1.098567123184497, - -0.9213466410691336, - -0.7382481147533051, - -0.5521867745281115, - -0.3661245623247983, - -0.18302342007549466, - -0.005798578075582483, - 0.16272741998098428, - 0.31986923024801617, - 0.4631210582450207, - 0.5901961767780233, - 0.6990629890359428, - 0.7879770681308942, - 0.8555086677940431, - 0.9005652703730961, - 0.9224088165309465, - 0.9206673449261045, - 0.89534085830859, - 0.8468013235199748, - 0.7757868053972017, - 0.6833898270929709, - 0.571040140375391, - 0.44048217763312725, - 0.29374754117689483, - 0.13312296370012358, - -0.03888575481671747, - -0.2195932650278877, - -0.40617701773985304, - -0.5957217771571931, - -0.7852655958481859, - -0.9718465263836257, - -1.152549332971734, - -1.3245514664276643, - -1.4851675774151238, - -1.6318918659670216, - -1.7624375994064256, - -1.8747731754416677, - -1.9671541617070767, - -2.0381508064592517, - -2.0866705865737356, - -2.111975437244862, - -2.113693391665233, - -2.091824447122002, - -2.04674056499679, - -1.9791798046694669, - -1.8902346838387751, - -1.781334948822424, - -1.65422502656042, - -1.5109365139188151, - -1.3537561381486884, - -1.1851896937925237, - -1.0079225247599717, - -0.8247771748118329, - -0.6386688743132932, - -0.45255956526976926, - -0.26941118968690625, - -0.09213897793553717, - 0.07643452621560305, - 0.23362397884544994, - 0.3769235853981817, - 0.5040466186046186, - 0.6129614815778892, - 0.701923747354219, - 0.7695036695887936, - 0.8146087305526958, - 0.8365008708326038, - 0.8348081290101965, - 0.8095305077585371, - 0.7610399738419907, - 0.6900745920201684, - 0.5977268853682101, - 0.48542660557645845, - 0.35491818495565264, - 0.20823322573759928, - 0.04765846053788353, - -0.12430031074163578, - -0.3049577388340915, - -0.4914912746249953, - -0.6809856823989283, - -0.870479014803511, - -1.0570093244880696, - -1.2376613757422774, - -1.409612619460137, - -1.5701777063865383, - -1.7168508366349184, - -1.8473452776091177, - -1.9596294270983998, - -2.051958852817877, - -2.122903803106073, - -2.1713717549201226, - -2.196624643536061, - -2.1982905022285912, - -2.1763693283670973, - -2.1312330834157507, - -2.063619826837119, - -1.9746220764129416, - -1.8656695785435216, - -1.7385067602526127, - -1.5951652184897238, - -1.4379316805902658, - -1.2693119411796734, - -1.0919913442520242, - -0.9087924336524631, - -0.7226304398316157, - -0.5364673048783306, - -0.353264970884616, - -0.175938668305641, - -0.0073109409955881485, - 0.14993286703884506, - 0.29328696115583486, - 0.4204646139999103, - 0.5294342285983415, - 0.618451377900773, - 0.6860863154757508, - 0.7312465235074048, - 0.7531939424953282, - 0.7515566109339837, - 0.7263345314089047, - 0.6778996705968432, - 0.6069900931692428, - 0.5146983221130697, - 0.4024541090309657, - 0.27200188614427345, - 0.12537325559698742, - -0.035145050085014, - -0.20704723108877032, - -0.38764793823678145, - -0.5741246225044692, - -0.7635620482649982, - -0.9529982682571714, - -1.1394713352206642, - -1.320066013534846, - -1.4919597541843599, - -1.6524672080050236, - -1.799082575201333, - -1.9295191232681965, - -2.0417452500863664, - -2.1340165234630097, - -2.2049031918279685, - -2.2533127322304622, - -2.2785070800389082, - -2.280114268620398, - -2.2581342954369665, - -2.2129391220455386, - -2.1452668080020443, - -2.0562098711809886, - -1.9471980580767916, - -1.8199757958064533, - -1.6765746814134252, - -1.5192814423265988, - -1.3506018732666865, - -1.1732213183219766, - -0.9899623214323163, - -0.8037401131423636, - -0.6175166356369017, - -0.4342538311032142, - -0.25686693009181977, - -0.08817847655255981, - 0.06912618541180576, - 0.2125412610635264, - 0.33978002295108056, - 0.44881087400502684, - 0.537889387077884, - 0.605585815641815, - 0.6508076417837363, - 0.6728168059059457, - 0.6712413464052964, - 0.6460812657697144, - 0.5977085305778869, - 0.5268612054034252, - 0.43463181313504123, - 0.32245010527625007, - 0.19206051395016033, - 0.04549464120194306, - -0.11496078054161778, - -0.2867999515671369, - -0.4673375227964741, - -0.6537509453047604, - -0.8431249835650596, - -1.0324976904164302, - -1.21890711869835, - -1.3994380328910272, - -1.5712678840799348, - -1.7317113232017918, - -1.878262550562111, - -2.008634833756497, - -2.1207965707681202, - -2.2130033295050198, - -2.2838253584994326, - -2.3321701349025252, - -2.357299594185051, - -2.358841769816427, - -2.3367966593614087, - -2.2915362244798865, - -2.22379852483054, - -2.1346760783913306, - -2.0255986317602312, - -1.898310612157755, - -1.7548436167312476, - -1.5974843730140424, - -1.428738675830073, - -1.251291869372616, - -1.067966497685974, - -0.8816777914204706, - -0.6953876928650546, - -0.5120581443122176, - -0.33460437641787083, - -0.16584893323749347, - -0.008477158980352811, - 0.1350051515108509, - 0.26231127067771765, - 0.3714096013446652, - 0.460555716258065, - 0.5283198687828149, - 0.5736095408989961, - 0.595686672901756, - 0.5941793030807305, - 0.5690874338162176, - 0.5207830315791835, - 0.4500041608355081, - 0.35784334436542764, - 0.24573033356477433, - 0.11540956044776648, - -0.031087373049183464, - -0.19147373460815517, - -0.3632437246248698, - -0.5437119941296235, - -0.7300559943079254, - -0.919360489742153, - -1.1086635333811827, - -1.2950031781746651, - -1.4754641887126618, - -1.6472240161912286, - -1.807597311657485, - -1.9540782755277801, - -2.084380175509258, - -2.1964714096955724, - -2.2886075461061868, - -2.3593588333848903, - -2.4076327487946525, - -2.4326912279180144, - -2.434162304336607, - -2.4120459757274264, - -2.3667142038626716, - -2.2989050485140092, - -2.2097110277720318, - -2.1005618883476327, - -1.9732020575745428, - -1.8296631327134303, - -1.6722318414119395, - -1.5034139786068064, - -1.325894888605995, - -1.14249711556749, - -0.9561358902561088, - -0.7697731550751404, - -0.5863708524321231, - -0.4088442130978564, - -0.24001578124284817, - -0.08257090119090726, - 0.06098463209904939, - 0.18836409095294376, - 0.297535878079901, - 0.3867555661096419, - 0.45459340829138617, - 0.4999568864887435, - 0.5221079408803232, - 0.5206746096389094, - 0.49565689502799704, - 0.4474267634014517, - 0.37672227910783934, - 0.2846359648095893, - 0.1725975717854593, - 0.0423515319315514, - -0.10407055293366244, - -0.2643819506103672, - -0.43607686161260806, - -0.6164699370900524, - -0.8027386283461799, - -0.991967700082258, - -1.1811952053662758, - -1.3674591972673407, - -1.5478444404953096, - -1.7195283863656834, - -1.8798256860446796, - -2.0262305400697977, - -2.1564562162673333, - -2.268471112851963, - -2.3605307979636136, - -2.4312055203668086, - -2.4794027574453135, - -2.5043844449026746, - -2.5057786164419356, - -2.483585269861464, - -2.4381763670550716, - -2.3702899679163227, - -2.281018590657687, - -2.171791982112297, - -2.0443545697362695, - -1.900737950912869, - -1.7432288534117015, - -1.5743330722930249, - -1.3967359519880724, - -1.213260036777552, - -1.0268205575498401, - -0.8403794568318086, - -0.6568986771544062, - -0.4792934494133526, - -0.3103863179019687, - -0.1528626270695627, - -0.009228171998733575, - 0.11823031951165347, - 0.22748125004630268, - 0.3167801921092531, - 0.3846973988248372, - 0.430140351931415, - 0.4523709914820054, - 0.4510173555238126, - 0.4260794461944285, - 0.37792922972163845, - 0.3073047703279388, - 0.21529859054956532, - 0.10334044153816332, - -0.02682524493657111, - -0.17316686718321944, - -0.33339769312829165, - -0.5050119234142164, - -0.6853242093168392, - -0.8715120022679953, - -1.0606600670967339, - -1.249806456998956, - -1.4359892251716913, - -1.6162931364527304, - -1.7878956422862045, - -1.9481113939676735, - -2.0944345921626315, - -2.224578504826378, - -2.336511530302796, - -2.428489236861161, - -2.4990818733953364, - -2.547196917418818, - -2.572096304765026, - -2.573408069266824, - -2.551132208852775, - -2.505640685547005, - -2.4376715593734533, - -2.34831734867522, - -2.23900780041615, - -2.1114873421839304, - -1.9677875714920288, - -1.8101952162424095, - -1.6412160716261397, - -1.4635354822058813, - -1.2799759923944745, - -1.0934528332124454, - -0.9069279473188043, - -0.7233632773768062, - -0.545674054413815, - -0.3766828228566461, - -0.21907492728737088, - -0.07535616292143409, - 0.052186742309306935, - 0.1615221908557375, - 0.2509057550891286, - 0.31890768799995783, - 0.36443547119269876, - 0.38675104458630183, - 0.385482446094034, - 0.36062967771914767, - 0.31256470555496846, - 0.24202559368938736, - 0.1501048645238661, - 0.03823226907500013, - -0.09184776102230292, - -0.23810362421191425, - -0.39824858855650347, - -0.5697768548334106, - -0.7500030744541899, - -0.9361046989867574, - -1.1251664933962102, - -1.314226511014529, - -1.5003228051751378, - -1.6805401408530458, - -1.8520559696288987, - -2.012184942934069, - -2.1584212615720313, - -2.288478193635214, - -2.4003241376048523, - -2.492214661887654, - -2.5627200155148295, - -2.610747676138206, - -2.635559579728861, - -2.6367837602580155, - -2.614420215792414, - -2.5688409084946526, - -2.500783898527388, - -2.4113417043725094, - -2.3019440731328875, - -2.174335432534713, - -2.0305473802312215, - -1.872866644263846, - -1.7037990199630648, - -1.5260298520314595, - -1.3423816850215688, - -1.1557697500937816, - -0.9691559900472927, - -0.7855023476857096, - -0.6077240541777253, - -0.43864365408995487, - -0.28094649214532336, - -0.1371383637002407, - -0.00950599682784796, - 0.0999190107813346, - 0.18939223135734062, - 0.2574839177489576, - 0.3031015514190186, - 0.3255070721447032, - 0.32432851769702475, - 0.29956588993714495, - 0.25159115481605476, - 0.18114237627909613, - 0.08931207658510838, - -0.022469993392226287, - -0.15245940216061232, - -0.29862454830764307, - -0.4586787000382986, - -0.630116058273996, - -0.8102512745698865, - -0.996261800637597, - -1.1852324015860976, - -1.374201130890512, - -1.5602060420297823, - -1.7403319001220492, - -1.9117561568930568, - -2.07179346391866, - -2.2179380221470333, - -2.3479030998155688, - -2.4596570955504076, - -2.551455577903538, - -2.621868796051844, - -2.669804227792226, - -2.6945238092415087, - -2.695655574516685, - -2.6731995218305373, - -2.6275276134916603, - -2.5593779098089633, - -2.4698429294107074, - -2.360352419546074, - -2.2326508080885703, - -2.0887696928377366, - -1.9309958019818994, - -1.7618349309986345, - -1.5839724247379006, - -1.400230827899807, - -1.2135253717921275, - -1.0268179993619102, - -0.8430706535605743, - -0.6651985657039603, - -0.4960242805076506, - -0.3382331428427781, - -0.1943309482141597, - -0.0666044248434088, - 0.042914829430681825, - 0.13248238668910586, - 0.20066849963116368, - 0.24638064957117756, - 0.2688807761367289, - 0.26779691694965535, - 0.24312907372147474, - 0.1952492122534945, - 0.12489539634114419, - 0.033160148093710165, - -0.07852678176553862, - -0.2084209618947509, - -0.3544907910316969, - -0.5144495375316998, - -0.6857914024669967, - -0.865831037543505, - -1.0517458946236344, - -1.2406207389674204, - -1.4294936242020602, - -1.6154026039569795, - -1.7954324435016669, - -1.9667605947138358, - -2.126701709321227, - -2.2727499884239224, - -2.402618700411276, - -2.5142762440610955, - -2.6059781880784794, - -2.676294781792102, - -2.7241335031518696, - -2.7487562884272156, - -2.7497911718879866, - -2.7272381518998987, - -2.681469190924746, - -2.61322234942464, - -2.5235901461812578, - -2.414002328597186, - -2.2862033246998337, - -2.142224732442388, - -1.9843532801671613, - -1.8150947635059127, - -1.6371345274626643, - -1.4532951168915151, - -1.266491763254848, - -1.0796864096551586, - -0.895840999197246, - -0.7178707633531354, - -0.5485982469924064, - -0.39070879514164925, - -0.24670820346092595, - -0.11888320032701695, - -0.009265383734962634, - 0.08040081824134282, - 0.14868565814539414, - 0.1944966171352778, - 0.2170956346826504, - 0.2161107482531595, - 0.19154195940212176, - 0.14376123377440128, - 0.07350663500897689, - -0.01812931494194929, - -0.12971686551160244, - -0.25951158551485465, - -0.4054818738467442, - -0.5653409990199582, - -0.7365831622640449, - -0.9165230154424068, - -1.1023380105741807, - -1.2911129130784238, - -1.4798857767388045, - -1.6656946553435574, - -1.84562431432007, - -2.01685220570487, - -2.1766929813829385, - -2.322640842613124, - -2.452409057943428, - -2.56396602631086, - -2.6555673165787548, - -2.725783178234826, - -2.773521089388063, - -2.798042986467183, - -2.7989769039012815, - -2.7763228402155775, - -2.7304527580313476, - -2.6621047179703, - -2.572371238974334, - -2.462682068605646, - -2.334781635051604, - -2.1907015364255726, - -2.032728501230085, - -1.8633683252580946, - -1.685306353673102, - -1.5013651314906427, - -1.3144598903337283, - -1.1275525734648917, - -0.9436051241508004, - -0.7655327740246034, - -0.5961580681171282, - -0.43816635161601103, - -0.2940634203429704, - -0.1661360028363893, - -0.05641569725303931, - 0.03335306817140435, - 0.10174054581828874, - 0.14765421668378761, - 0.17035602007734096, - 0.16947399330228563, - 0.14500813775139576, - 0.09733041890720898, - 0.027178900245704532, - -0.06435389644319775, - -0.17583822075592836, - -0.3055296416703307, - -0.4513965582451037, - -0.6111522391552517, - -0.782290885793931, - -0.962127150187964, - -1.1478384845209155, - -1.3365096543747206, - -1.5251787136968384, - -1.7108837164395934, - -1.8907094281944228, - -2.0618333011615255, - -2.221569987391228, - -2.367413688306118, - -2.4970776726187633, - -2.6085303394302652, - -2.700027257769251, - -2.770138677288159, - -2.8177720762609098, - -2.8421893912811518, - -2.8430186569431344, - -2.820259871937372, - -2.7742849990505563, - -2.7058320990699567, - -2.6159936911026413, - -2.506199522876828, - -2.3781940227457787, - -2.234008788988767, - -2.0759305502744207, - -1.9064651025610397, - -1.7282977911790924, - -1.5442511613106678, - -1.3572404447443822, - -1.1702275849105206, - -0.9861745252415594, - -0.8079964975374313, - -0.63851604699585, - -0.4804185189714808, - -0.3362097094537984, - -0.2081763471475594, - -0.09835003037710749, - -0.008475187545524968, - 0.060018433561084855, - 0.10603831377111797, - 0.12884639222643635, - 0.12807070606249107, - 0.10371125650424162, - 0.05614000886597732, - -0.013904973544341545, - -0.10533116910493116, - -0.21670882758068014, - -0.3462935181179282, - -0.4920536399434437, - -0.6517024619018008, - -0.8227341855537529, - -1.0024634630962006, - -1.1880677468803615, - -1.376631802658039, - -1.5651936845458547, - -1.7507914466653747, - -1.9305098547773638, - -2.101526361250687, - -2.2611556183063097, - -2.4068918275357203, - -2.536448257821659, - -2.647793308434926, - -2.7391825485741537, - -2.809186228061691, - -2.856711825341596, - -2.8810212771778576, - -2.8817426183350507, - -2.858875847674017, - -2.812792928152116, - -2.7442319207269668, - -2.6542853446768353, - -2.544382947900428, - -2.416269158921827, - -2.27197557619131, - -2.1137889285485345, - -1.9442150121237776, - -1.7659391724180613, - -1.5817839547849895, - -1.394664591183977, - -1.2075430252180586, - -1.0233812004908738, - -0.8450943489740977, - -0.6755050160374556, - -0.5172985472075108, - -0.3729807386451013, - -0.24483831922783472, - -0.13490288745219908, - -0.04491887189357949, - 0.02368397948965585, - 0.0698131473535004, - 0.0927305706670737, - 0.09206428639315221, - 0.06781429558393519, - 0.02035256338103386, - -0.049582847080645684, - -0.14089941435244485, - -0.2521673883723704, - -0.38164233845992507, - -0.5272926640148994, - -0.6868316340553056, - -0.8577534503161485, - -1.037372765167154, - -1.2228670311331555, - -1.411321014139856, - -1.5997727684776912, - -1.7852603484419705, - -1.9648685199674685, - -2.1357747355979138, - -2.2952936477276182, - -2.440919458122236, - -2.570365435839244, - -2.681599980323725, - -2.772878660948817, - -2.8427717277114595, - -2.8901866592303818, - -2.9143853924443492, - -2.9149959622927133, - -2.8920183678113447, - -2.8458245721324626, - -2.7771526363888177, - -2.6870950800339672, - -2.5770816511417567, - -2.4488567784116695, - -2.304452060469484, - -2.146154226330423, - -1.9764690722995555, - -1.7980819440542986, - -1.6138153871240282, - -1.4265846336443198, - -1.2393516273929257, - -1.0550783121501386, - -0.8766799200635454, - -0.7069789966797946, - -0.5486608877004333, - -0.40423138946374454, - -0.27597723102297844, - -0.1659300110511494, - -0.0758341583001752, - -0.0071194209051635565, - 0.039121681613105544, - 0.06215108804715669, - 0.061596835182935586, - 0.03745892389561792, - -0.009890680850067793, - -0.07971391609635885, - -0.17091826057166065, - -0.2820739643911502, - -0.41143659705153657, - -0.5569745581305087, - -0.7164011168234637, - -0.8872104750418772, - -1.066717285333923, - -1.2520990004021282, - -1.4404403863499329, - -1.6287794976455796, - -1.8141543887614087, - -1.9936498258114805, - -2.1644432615162543, - -2.3238493484489573, - -2.46936228855349, - -2.5986953510652677, - -2.709816935607617, - -2.8009826117320533, - -2.8707626296141653, - -2.918064468051104, - -2.9421500641602205, - -2.9426474530595286, - -2.919556633963584, - -2.873249570183528, - -2.8044643230309343, - -2.7142934121381708, - -2.6041665857580862, - -2.4758282727691503, - -2.331310071976942, - -2.1728987125748427, - -2.003099991048341, - -1.824599253253293, - -1.6402190448987826, - -1.4528745982998532, - -1.2655278574136233, - -1.0811407662005021, - -0.9026285569875483, - -0.7328137755003616, - -0.5743817676211097, - -0.4298383298678786, - -0.3014701914737489, - -0.1913089512916601, - -0.1010990382537142, - -0.03227020067500111, - 0.014085041743611373, - 0.03722862761423648, - 0.03678859354251149, - 0.012764940223354934, - -0.03447036755904158, - -0.10417926702740568, - -0.19526923709079153, - -0.3063105280444862, - -0.43555870956666626, - -0.5809821814146818, - -0.7402942129656073, - -0.9109890063119824, - -1.0903812141823135, - -1.2756482894600638, - -1.463874998429703, - -1.6520993957405647, - -1.837359536046983, - -2.016740185643365, - -2.1874187974314667, - -2.3467100241659655, - -2.4921080679720586, - -2.62132619826674, - -2.732332814854896, - -2.8233834874695933, - -2.8930484664679303, - -2.9402352308285047, - -2.964205717850703, - -2.964587962834205, - -2.9413819651753936, - -2.894959688367252, - -2.8260591939033346, - -2.735773001598039, - -2.6255308598863003, - -2.497077197828771, - -2.352443614412519, - -2.193916839013721, - -2.0240026683001853, - -1.8453864483100766, - -1.6608907249345308, - -1.4734307306711627, - -1.285968409659386, - -1.1014657060426312, - -0.9228378523297049, - -0.752907394429943, - -0.5943596784073619, - -0.44970050096282344, - -0.3212165915121733, - -0.21093954909125306, - -0.12061380281544702, - -0.051669101182149624, - -0.005197964075568884, - 0.018061546933586595, - 0.01773746826782928, - -0.0061701995610763255, - -0.05328949195200759, - -0.12288234631089885, - -0.21385624172995754, - -0.324781428688272, - -0.45391347704694845, - -0.5992207867466456, - -0.7584166273480275, - -0.928995201126918, - -1.1082711609956797, - -1.2934219600211931, - -1.4815323646715441, - -1.6696404297800638, - -1.854784210183778, - -2.0340484723617016, - -2.204610669399352, - -2.3637854542352428, - -2.50906702917827, - -2.6381686638292083, - -2.7490587581771013, - -2.839992882138887, - -2.9095412862558074, - -2.9566114496907616, - -2.98046530992695, - -2.9807309024483266, - -2.9574082268354847, - -2.9108692467657633, - -2.8418520239167533, - -2.751449078287129, - -2.641090158496824, - -2.51251969379004, - -2.3677692833392214, - -2.209125656704439, - -2.0390946107379646, - -1.8603614916625262, - -1.6757488455538283, - -1.488171905094983, - -1.3005926146092324, - -1.1159729184245515, - -0.9372280492348432, - -0.767180553134369, - -0.6085157763718315, - -0.46373951583290224, - -0.33513850111847254, - -0.22474433144922712, - -0.13430143612509537, - -0.0652395638289709, - -0.018651234630033944, - 0.00472548971606955, - 0.004518645446715305, - -0.019271767111461127, - -0.06627378354260617, - -0.1357493414375312, - -0.22660592007417046, - -0.337413770116218, - -0.4664284616104873, - -0.6116183946830411, - -0.7706968390798961, - -0.9411579972621527, - -1.1203165223272564, - -1.3053498675279969, - -1.493342799517782, - -1.681333373315448, - -1.8663596439435541, - -2.045506378066835, - -2.2159510289560913, - -2.3750082497354588, - -2.5201722428996605, - -2.6491562782353872, - -2.7599287559171772, - -2.8507452460472855, - -2.9201759993533667, - -2.9671284951836077, - -2.990864671207337, - -2.991012563094244, - -2.9675721706107874, - -2.9209154576200906, - -2.8517804859860605, - -2.7612597758929307, - -2.650783076146406, - -2.522094816177015, - -2.3772265953432945, - -2.2184651433912, - -2.0483162573591125, - -1.8694652836559749, - -1.684734768543632, - -1.4970399448904654, - -1.309342757206718, - -1.1246051500067062, - -0.945742356170181, - -0.7755769219774817, - -0.6167941938635528, - -0.4718999689003857, - -0.3431809768757458, - -0.23266881719569174, - -0.14210791934727124, - -0.07292803219921559, - -0.02622167600718507, - -0.0027269127131420295, - -0.0028157062662604315, - -0.026488056526258366, - -0.07337199926361354, - -0.14272947225590865, - -0.23346795496733297, - -0.3441576982479765, - -0.47305427233129016, - -0.6181260775297976, - -0.7770863837759562, - -0.9474293937175295, - -1.1264697606388692, - -1.3113849379792268, - -1.4992596925777528, - -1.6871320796409166, - -1.8720401543775722, - -2.0510686836391017, - -2.221395120883267, - -2.3803341194199814, - -2.525379881931685, - -2.6542456783910797, - -2.7648999091596282, - -2.8555981445267316, - -2.924910635406278, - -2.9717448613333053, - -2.9953627601639075, - -2.995392367754633, - -2.9718336840586845, - -2.925058673125985, - -2.855805397007249, - -2.765166376073429, - -2.6545713593173605, - -2.525764776356239, - -2.380778226735288, - -2.221898440387321, - -2.05163121453753, - -1.8726618957825534, - -1.687813030569828, - -1.4999998519559594, - -1.3121843046372414, - -1.1273283333147317, - -0.9483471710554436, - -0.7780633643267773, - -0.619162259750603, - -0.4741496545857854, - -0.34531227880643656, - -0.23468173200622286, - -0.14400244385905767, - -0.07470416342058385, - -0.027879411133341775, - -0.004266249126360727, - -0.004236641535633523, - -0.027790588407956604, - -0.07455612570086671, - -0.1437951913786088, - -0.23441526509256966, - -0.3449865978799181, - -0.47376476016109154, - -0.6187181524356777, - -0.7775600448223965, - -0.947784640156986, - -1.12670659191005, - -1.31150335370796, - -1.4992596925777208, - -1.687013663911949, - -1.871803323106497, - -2.0507134371997404, - -2.2209214598364717, - -2.379742044514325, - -2.524669394101953, - -2.653416778758996, - -2.763952599034439, - -2.8545324254040034, - -2.9237265089690676, - -2.9704423294515525, - -2.99394182489453, - -2.993853031341418, - -2.9701759489324977, - -2.9232825419045945, - -2.853910872495408, - -2.76315346126285, - -2.6524400573866096, - -2.523515090671003, - -2.3784101608481585, - -2.219411998037928, - -2.0490263996524893, - -1.8699387124745899, - -1.6849714831393658, - -1.49703994489036, - -1.3091060426106038, - -1.1241317211882165, - -0.9450322138767693, - -0.7746300673304144, - -0.6156106283587935, - -0.4704796944064922, - -0.3415239956355242, - -0.23077513182574122, - -0.13997753283797904, - -0.0705609479147096, - -0.023617897685393047, - 0.0001135555340235489, - 0.0002614474209409329, - -0.023174222258288996, - -0.06982148964797787, - -0.1389422928991356, - -0.22944411185000188, - -0.33989719772428484, - -0.46855712112915093, - -0.6133922827508271, - -0.772115952895463, - -0.9422223345848209, - -1.1210260814759685, - -1.305704647382765, - -1.4933427995176847, - -1.6809785934608255, - -1.8656500847946536, - -2.0444420407441486, - -2.214531915140654, - -2.373234361667648, - -2.518043583381118, - -2.6466728506270796, - -2.757090564141424, - -2.8475522945856806, - -2.9166282932479772, - -2.963226040036786, - -2.98660747318155, - -2.986400628912232, - -2.962605507555422, - -2.9155940735343493, - -2.8461043892731963, - -2.7552289755162374, - -2.6443975816294785, - -2.5153546376033185, - -2.3701317433562137, - -2.2110156291950256, - -2.0405120927170497, - -1.861306480892498, - -1.6762213405419473, - -1.4881719050951125, - -1.3001201196212029, - -1.1150279291946623, - -0.9358105672555268, - -0.7652905806438539, - -0.6061533163546409, - -0.46090457201931523, - -0.3318310779858654, - -0.220964434220074, - -0.1300490707686997, - -0.06051473706029696, - -0.013453953910166377, - 0.01039521617993694, - 0.010660808701310434, - -0.012657176765430586, - -0.05918677655050379, - -0.1281899289907087, - -0.21857411411007288, - -0.32890958331806475, - -0.45745190740758207, - -0.6021694872508345, - -0.760775593338821, - -0.9307644288796195, - -1.1094506477161306, - -1.2940117038474879, - -1.4815323646715526, - -1.669050685954125, - -1.8536047234631818, - -2.0322792446090086, - -2.20225170340843, - -2.360836753731068, - -2.5055285988175178, - -2.6340405091992096, - -2.744340885797177, - -2.834685299458939, - -2.9036440016574634, - -2.950124472486452, - -2.973388650360432, - -2.973064571694697, - -2.9491522370009693, - -2.9020236108875683, - -2.832416755963638, - -2.741424193158481, - -2.63047567202312, - -2.501315622733154, - -2.3559756453919403, - -2.196742470490501, - -2.026121895811654, - -1.846799268510478, - -1.661597135592162, - -1.4734307306711862, - -1.285261999001631, - -1.1000528858426057, - -0.9207186248181252, - -0.7500817629530485, - -0.5908276474279914, - -0.44546207605796195, - -0.3162717793755002, - -0.20528835753083696, - -0.11425624075522567, - -0.04460517866191101, - 0.002572307749976216, - 0.02653815579405476, - 0.02692040077758258, - 0.0037190420968379323, - -0.042693956762564114, - -0.1115805343214504, - -0.2018481707879337, - -0.31206711775565554, - -0.4404929462014557, - -0.585094057181649, - -0.7435837213708687, - -0.913456142161231, - -1.092025973579272, - -1.2764706698080914, - -1.4638749984294765, - -1.651277015392931, - -1.8357147766500834, - -2.0142730497940122, - -2.1841292890264055, - -2.342598148399184, - -2.4871738313373197, - -2.615569608555383, - -2.7257538811577944, - -2.8159822201755, - -2.8848248772645197, - -2.9311893327019876, - -2.9543375250857453, - -2.95389749101403, - -2.929869231181779, - -2.8826247103803135, - -2.8129019914018705, - -2.7217935953587395, - -2.6107292719848374, - -2.481453451638388, - -2.335997734605596, - -2.1766488515609774, - -2.005912600469403, - -1.8264743286685734, - -1.6411565833462953, - -1.4528745982996005, - -1.264590318965947, - -1.079265690785555, - -0.8998159475663405, - -0.7290636365143701, - -0.5696941049924653, - -0.42421315099851986, - -0.29490750524721054, - -0.18380876807092023, - -0.09266136988291566, - -0.022895060478164128, - 0.024397638961795573, - 0.04847866556874761, - 0.04897605446804827, - 0.02588980487425127, - -0.02040811990882216, - -0.08917965858381992, - -0.17933229154051986, - -0.28943627055425836, - -0.4177471667828382, - -0.5622333814645765, - -0.7206081854556109, - -0.8903657823294406, - -1.068820826293798, - -1.2531507717128743, - -1.4404403863498123, - -1.6277277263351004, - -1.8120508478014674, - -1.9904945185238472, - -2.1602361928840508, - -2.318590525114958, - -2.4630517188223924, - -2.5913330449020053, - -2.701402904638811, - -2.7915168692444885, - -2.8602451905554833, - -2.9064953490297345, - -2.9295292834453175, - -2.928975030581113, - -2.904832591312319, - -2.8574739306105594, - -2.7876371114482144, - -2.696414655118164, - -2.585236311533907, - -2.45584651123417, - -2.3102768546848402, - -2.150814072740466, - -1.9799639635456152, - -1.8004118746181093, - -1.6149803533254912, - -1.4265846336444734, - -1.2381866611912562, - -1.0527483815864598, - -0.8731850288174527, - -0.702319150269564, - -0.5428360934850616, - -0.39724165664095434, - -0.2678225706310384, - -0.15661043596683302, - -0.06534968324076333, - 0.0045299375728806435, - 0.05193590511404331, - 0.07613015633553787, - 0.0767407261839233, - 0.05376761369496447, - 0.007582781993841076, - -0.06107570780062009, - -0.15111533625669335, - -0.2611063553280769, - -0.38930433635153816, - -0.5336776807431967, - -0.6919396595373584, - -0.8615844764856855, - -1.0399267859739671, - -1.2241440425450933, - -1.4113210141400105, - -1.5984957570658944, - -1.7827063276347983, - -1.9610374937980577, - -2.1306667101159915, - -2.2889086309990203, - -2.433257460230484, - -2.5614264688834014, - -2.671384058419643, - -2.7613858002287683, - -2.8300019463244057, - -2.8761399773414675, - -2.899061832235118, - -2.8983955479612002, - -2.874141125571914, - -2.826670530215697, - -2.7567218250417906, - -2.6653875315193476, - -2.5540973997387884, - -2.4245958604155744, - -2.278914514191695, - -2.1193400920981844, - -1.94837839245591, - -1.7687147629585787, - -1.5831717511508585, - -1.3946645911841937, - -1.206155228852114, - -1.0206056099502803, - -0.8409309686418978, - -0.6699538524880325, - -0.5103596092067935, - -0.3646540371509246, - -0.2351238673895169, - -0.12380070060965415, - -0.03242896757885905, - 0.03756158155320807, - 0.08507842525133819, - 0.10938350029321817, - 0.11010484145039758, - 0.08724244758378176, - 0.04116828164363032, - -0.027379595426073156, - -0.11730866436786004, - -0.22718917731066748, - -0.3552767057649745, - -0.4995396513218235, - -0.657691285189929, - -0.827225811295204, - -1.0054578841976396, - -1.1895649586131922, - -1.3766318026579598, - -1.563696472813204, - -1.7477970255641124, - -1.9260182290357664, - -2.095537537962274, - -2.253669606927656, - -2.3979086398885574, - -2.5259679080914528, - -2.6358158131720137, - -2.725707926692416, - -2.7942145008394403, - -2.8402430164211916, - -2.8630554125657532, - -2.862279726401822, - -2.8379159591542455, - -2.7903360761443494, - -2.7202781406936185, - -2.628834674444191, - -2.517435427658571, - -2.387824831224567, - -2.2420344859558474, - -2.082351123056491, - -1.9112805410191414, - -1.7315080877094928, - -1.5458563108432146, - -1.3572404447443223, - -1.1686224353780235, - -0.9829642287113803, - -0.8031810590790575, - -0.632095474213676, - -0.47239282200444777, - -0.32657890097504083, - -0.19694044236585978, - -0.08550904703549504, - 0.005970854078270332, - 0.07606951065474839, - 0.12369440098801357, - 0.14810746168515151, - 0.1489367273471281, - 0.12618219666445996, - 0.08021583241711949, - 0.01177569537893984, - -0.0780456953631645, - -0.18781859210784896, - -0.3157985665354417, - -0.459954020406978, - -0.6179982251008556, - -0.7874253847125195, - -0.9655501539717963, - -1.1495499877639417, - -1.3365096543745758, - -1.5234672104536942, - -1.7074607126559802, - -1.8855749292757202, - -2.0549873152159672, - -2.2130125252295394, - -2.3571447634411617, - -2.4850973012669946, - -2.5948385405103265, - -2.6846240529023624, - -2.753024090798189, - -2.7989461351739835, - -2.821652125325978, - -2.8207700985508977, - -2.796300056241629, - -2.7486139638871028, - -2.678449884976634, - -2.586900341320076, - -2.475395083347325, - -2.345678542113669, - -2.1997823186004304, - -2.03999314417797, - -1.868816817506536, - -1.6889386866186296, - -1.5031812993976494, - -1.3144598903335636, - -1.125736405558233, - -0.9399727912052841, - -0.7600842817758554, - -0.5888934251696959, - -0.4290855694411611, - -0.28316651328079634, - -0.1534229880948173, - -0.04188659490722128, - 0.049698235177817296, - 0.11990175167399947, - 0.16763143270981656, - 0.19214921472697913, - 0.19308313216108025, - 0.17043318353727654, - 0.12457133147053548, - 0.0562356365693792, - -0.033481382243724156, - -0.14314997743257157, - -0.2710257208422852, - -0.415077014398491, - -0.5730171296441428, - -0.7423402708382698, - -0.920361092875859, - -1.1042570508060146, - -1.2911129130783863, - -1.477966736507065, - -1.661856577910194, - -1.8398672057459362, - -2.0091760750807617, - -2.1670978408309978, - -2.311126707285389, - -2.4389759460226106, - -2.5486139590091437, - -2.6382963181392705, - -2.706593275930979, - -2.7524123135233087, - -2.775015370375098, - -2.774030483945614, - -2.749457655790109, - -2.7016688515600196, - -2.6314021349067422, - -2.539750027802115, - -2.428142280837994, - -2.298323325231423, - -2.1523247621261223, - -1.9924333230531621, - -1.8211548068349648, - -1.6411745616653053, - -1.4553151355879805, - -1.2664917632549169, - -1.0776663909589999, - -0.8918009649947454, - -0.7118107200240507, - -0.5405182041065313, - -0.3806087654578976, - -0.23458820292919014, - -0.10474324808629852, - 0.006894497885820014, - 0.09858060372352984, - 0.1688853187805182, - 0.2167161210254639, - 0.24133494674029138, - 0.24236983020103026, - 0.21982076977350207, - 0.1740597279133196, - 0.105824765069539, - 0.016208400005993245, - -0.09335961990027729, - -0.22113486665315274, - -0.3650857423368733, - -0.5229255186528966, - -0.6921484000194889, - -0.8700690414892238, - -1.0538648982693726, - -1.2406207389676602, - -1.427374620556284, - -1.6111646000115578, - -1.7890754459491458, - -1.958284613592301, - -2.116106758016028, - -2.260036083665238, - -2.3877858622765222, - -2.4973244959733503, - -2.5869075568069313, - -2.6551052974519274, - -2.700825199203966, - -2.7233292016786192, - -2.7222453424915187, - -2.6975736233541596, - -2.649686010074225, - -2.579320566459069, - -2.4875698146365046, - -2.37586350535421, - -2.245946069984954, - -2.0998491098273027, - -1.939859356568307, - -1.7684826091858503, - -1.5884042160280352, - -1.4024467252947967, - -1.2135253717919214, - -1.0246021019673548, - -0.8386388622702077, - -0.6585508875165154, - -0.48716072592118076, - -0.3271537258532863, - -0.18103568631785624, - -0.05109333903501062, - 0.060641714656436294, - 0.152425043339245, - 0.22282689621364798, - 0.27075475109483504, - 0.29547054411156853, - 0.296602309386761, - 0.2741500451331377, - 0.2284857136535563, - 0.1603473752445071, - 0.07082754851679837, - -0.03864401930474862, - -0.16632290037646455, - -0.31017749693410734, - -0.4679210808322168, - -0.637047856639809, - -0.8148724795619596, - -0.9985724049575937, - -1.18523240158593, - -1.3718905265703534, - -1.5555848370380403, - -1.733400101755929, - -1.9025137760989894, - -2.0602405152921976, - -2.204074523931184, - -2.3317290739031535, - -2.441172567482017, - -2.5306605768690966, - -2.598763354889242, - -2.644388382988219, - -2.666797600931248, - -2.665619046483548, - -2.640852721506307, - -2.5928705919564936, - -2.522410721790717, - -2.4305656332858057, - -2.318765077338908, - -2.1887534854708326, - -2.042562459129756, - -1.882478730150679, - -1.7110080976596755, - -1.5308359101533977, - -1.344784715980074, - -1.155769750093469, - -0.9667529590890106, - -0.7806962895636653, - -0.6005149764808531, - -0.42903156820317356, - -0.2689314132468361, - -0.12272031076404852, - 0.007315007378252844, - 0.11914293969449884, - 0.21101905462079168, - 0.2815136012107408, - 0.32953405713294326, - 0.35434235837027656, - 0.35556653889939316, - 0.33320659678714853, - 0.2876344941905904, - 0.21958829126056217, - 0.1301605064623032, - 0.02078088687553284, - -0.10680613980128283, - -0.25056897594960853, - -0.4082208935683002, - -0.5772560973710663, - -0.7549892427077494, - -0.9385977850817134, - -1.1251664933963192, - -1.3117334249192787, - -1.49533663692212, - -1.6730608983154387, - -1.8420836646171355, - -1.999719591196562, - -2.1434628827926945, - -2.271026811436, - -2.380379779543408, - -2.4697773594587775, - -2.5377898041504148, - -2.5833245952062063, - -2.6056436725342325, - -2.6043750740419545, - -2.57951880173266, - -2.5314468217054715, - -2.460897198058876, - -2.368962453211535, - -2.2570723382016755, - -2.1269712846919413, - -1.980690894271869, - -1.8205178989174184, - -1.648958097895826, - -1.468696839844392, - -1.282556673251818, - -1.0934528332123672, - -0.9043472664618131, - -0.7182019197381506, - -0.5379320281439786, - -0.36636014018180385, - -0.20617160450755148, - -0.05987222041318002, - 0.07025128009483043, - 0.1821672953918552, - 0.27413139377476137, - 0.3447138241583252, - 0.39282206407257364, - 0.4177180493614436, - 0.4190298138632336, - 0.3967573555064845, - 0.35127263631010175, - 0.28331371628693863, - 0.19397311376429577, - 0.08468057568452741, - -0.042819470391967276, - -0.1864954269831628, - -0.3440605662256933, - -0.5130090929703701, - -0.6906556627039101, - -0.8741777310664149, - -1.0606600670969493, - -1.2471407282007956, - -1.4306577717848667, - -1.608295966896347, - -1.7772327691888683, - -1.9347828341676687, - -2.0784403667070492, - -2.2059186389728955, - -2.3151860535174897, - -2.4044981828202006, - -2.4724252799837663, - -2.5178748267309543, - -2.5401087631044503, - -2.538755127146253, - -2.513813920993937, - -2.465657110880654, - -2.3950227610388586, - -2.3030033940209043, - -2.191028760999154, - -2.0608432937693033, - -1.9144785940541011, - -1.7542213939626516, - -1.5825774928952676, - -1.4022322396222169, - -1.216008182764719, - -1.0268205575496587, - -0.8376313108451208, - -0.6514023895204036, - -0.47104902881093164, - -0.2993937773509982, - -0.1391219839281703, - 0.007260552034184714, - 0.13746709839874321, - 0.24946605340953376, - 0.3415129852318024, - 0.4121781426502812, - 0.4603690030638711, - 0.48534750218634953, - 0.48674167372560817, - 0.464551515480064, - 0.4191489893385457, - 0.3512721551844315, - 0.2620135312151828, - 0.15280286424349537, - 0.025384581700662143, - -0.11820971906024574, - -0.2756933103049704, - -0.4445603970130441, - -0.6221256347996639, - -0.8055664794333339, - -0.9919677000822376, - -1.1783673542789124, - -1.3618034995580175, - -1.539360905094994, - -1.7082170266708885, - -1.8656865199183361, - -2.0092635898391262, - -2.1366615087254592, - -2.2458486792574304, - -2.3350806740403343, - -2.4029277463039547, - -2.4482973778973314, - -2.4704515089893517, - -2.46901817774794, - -2.4439973864365325, - -2.3957611014140414, - -2.3250473870384147, - -2.232948765987259, - -2.120894989558124, - -1.990630489671552, - -1.844186868175366, - -1.6838508573032889, - -1.5121282565799874, - -1.3317044148996695, - -1.1454018810077773, - -0.9561358902559897, - -0.7668683896347852, - -0.5805613261383882, - -0.40012993512476436, - -0.22839676535144826, - -0.06804716572905785, - 0.07841306419611302, - 0.20869719216336555, - 0.3207736162950744, - 0.4128979046341493, - 0.48364030584276796, - 0.5319082971979394, - 0.5569638142916518, - 0.5584348907102534, - 0.536321524130674, - 0.4909956763205896, - 0.4231954070419679, - 0.3340132343715866, - 0.22487890500161337, - 0.09753684624261315, - -0.0459813446728666, - -0.20338894013075715, - -0.3721801452306557, - -0.5496696157067575, - -0.7330348074485131, - -0.9193604897422383, - -1.1056847202405966, - -1.2890455565971983, - -1.4665277681070368, - -1.6353088106687717, - -1.7927033400339365, - -1.936205561322748, - -2.0635287469462016, - -2.1726412997017417, - -2.2617987923125735, - -2.329571478126181, - -2.374866839109143, - -2.3969468155475453, - -2.3954394457265114, - -2.3703447320263358, - -2.322034640922568, - -2.2512472368900225, - -2.159075042722347, - -2.0469478098333873, - -1.9166099702596808, - -1.7700931259648636, - -1.6096840092982907, - -1.437888419899909, - -1.2573917067796554, - -1.0710164187979248, - -0.8816777914204152, - -0.692337771753166, - -0.505958306904907, - -0.3254546323477809, - -0.1536492969534513, - 0.006772350253348783, - 0.15330450961260486, - 0.28366044875062346, - 0.3958085656757221, - 0.48800442831759333, - 0.5588182852255938, - 0.6071576135639039, - 0.6322843488118493, - 0.6338265244432205, - 0.6117841380227707, - 0.5665291512059185, - 0.49879962364307895, - 0.4096880732990925, - 0.3006242467544131, - 0.173352571208446, - 0.029904643782745752, - -0.1274328080195649, - -0.29615398940879545, - -0.47357355623054687, - -0.6568689644838659, - -0.8431249835652503, - -1.0293796712375372, - -1.212671085264153, - -1.3900839950492414, - -1.5587958566020228, - -1.7161213257826247, - -1.8595546078204257, - -1.9868089752346854, - -2.0958528309321913, - -2.1849417477445474, - -2.2526459791275206, - -2.2978730071556974, - -2.3198847722229563, - -2.3183093127223247, - -2.293146631141565, - -2.2447686940636515, - -2.173913566070228, - -2.0816737700621033, - -1.969479057559965, - -1.8390738607069193, - -1.6924897815727595, - -1.532013552613114, - -1.3601509735737545, - -1.1795873935708836, - -0.9931453615696656, - -0.8037401131423769, - -0.6143335954994025, - -0.427887755854495, - -0.2473178297846091, - -0.07544636626606344, - 0.08504128557124901, - 0.2316393259642387, - 0.3620610224341243, - 0.4742747728861274, - 0.566536145146143, - 0.6374153876598612, - 0.6858199774883738, - 0.711011850007875, - 0.7126190385893889, - 0.6906415406949078, - 0.6454513178773834, - 0.5777864296850548, - 0.4887393939805981, - 0.3797399572427562, - 0.25253254656901997, - 0.10914875897956676, - -0.048124678123775105, - -0.21678197005271674, - -0.394137772752798, - -0.5773695423245424, - -0.7635620482649554, - -0.9497533484371795, - -1.1329815007047281, - -1.310331274570816, - -1.4789801261455184, - -1.6362427113876632, - -1.7796132356261456, - -1.9068049714799291, - -2.01578632195403, - -2.1048128599788463, - -2.172454839108652, - -2.2176197415164296, - -2.239569507694285, - -2.2379321761329285, - -2.21270774941795, - -2.1642681942296726, - -2.0933515752473673, - -2.0010504154687387, - -1.8887944665112806, - -1.75832816061479, - -1.6116830999454943, - -1.4511460170560446, - -1.2792227117876438, - -1.0985985333525123, - -0.9120960308108236, - -0.7226304398315192, - -0.5331637077197822, - -0.3466577817844368, - -0.16602789769750237, - 0.005903395470065902, - 0.166450748494625, - 0.31310836151801846, - 0.44358950196747, - 0.555862567654325, - 0.6481831263109559, - 0.7191214262897332, - 0.767584944558297, - 0.7928356163996759, - 0.7945014750922201, - 0.7725825180052632, - 0.7274507065993179, - 0.659844100330278, - 0.5708552169687809, - 0.4619138029017734, - 0.33476428513535306, - 0.1914382605979712, - 0.03422245660034967, - -0.13437733226040588, - -0.311675762020307, - -0.49485028887064697, - -0.6809856823988184, - -0.86712000055798, - -1.050291301301645, - -1.2275843542236236, - -1.3961766155227082, - -1.553382741246995, - -1.6966969368152158, - -1.8238324749343933, - -1.9327577586990392, - -2.02172836112783, - -2.0893145358633767, - -2.1344237651668494, - -2.156317989618069, - -2.1546252477956767, - -2.129345542372631, - -2.0808508401165433, - -2.0098792057938857, - -1.9175231624891258, - -1.805212461906509, - -1.6746915363723571, - -1.5279919881392163, - -1.3674005498450643, - -1.1954230214175947, - -1.014744752154702, - -0.828188291202324, - -0.6386688743134323, - -0.4491484488788785, - -0.26258896229212053, - -0.0819056503105677, - 0.09007893791173399, - 0.2506794530657556, - 0.3973900952101789, - 0.5279241316884085, - 0.6402499602282715, - 0.7326231484786665, - 0.8036139447087165, - 0.8521298258033578, - 0.8774327269630324, - 0.8791506813833996, - 0.8572836863516421, - 0.8122037032461412, - 0.7446487914410403, - 0.655711468625366, - 0.5468214811047252, - 0.4197232558035443, - 0.2764483895692963, - 0.11928360963287594, - -0.04926528948995655, - -0.22651296391563386, - -0.4096368699155952, - -0.5957217771571877, - -0.7818057436724365, - -0.9649268274957103, - -1.1421697982987973, - -1.3107121123604204, - -1.4678684258076478, - -1.611132944137564, - -1.7382189401355401, - -1.8470948169743224, - -1.9360161477508515, - -2.003553186185415, - -2.0486134146167845, - -2.070458773702159, - -2.068717302097317, - -2.0433890025522414, - -1.9948458419112738, - -1.9238258850172998, - -1.8314216550311075, - -1.71906290373293, - -1.5884940635255655, - -1.4417467367362977, - -1.2811076560795867, - -1.1090826215577057, - -0.9283569825435152, - -0.7417532882577567, - -0.5521867745281452, - -0.36261938882025024, - -0.17601307860150364, - 0.004716920297555299, - 0.17674805864831944, - 0.33739498706828464, - 0.4841519055429588, - 0.6147320813427317, - 0.7271039121224132, - 0.8195229654584205, - 0.8905594895475766, - 0.9391209612024167, - 0.9644693155512916, - 0.9662325857182885, - 0.9444107689189236, - 0.899375826460244, - 0.8318658176451544, - 0.7429732600921932, - 0.6341279000356235, - 0.5070741643303218, - 0.3638436497527502, - 0.20672308346353716, - 0.038218259909157254, - -0.13898547709636652, - -0.32206558389386786, - -0.5081068302198317, - -0.6941472741760912, - -0.8772249738648921, - -1.0544246990265373, - -1.2229239060081945, - -1.3800372510048906, - -1.5232589395817113, - -1.6503022445917608, - -1.7591355692751955, - -1.848014486796063, - -1.9155092509413145, - -1.9605273441169015, - -1.9823307070464262, - -1.9805473784519825, - -1.9551773611496237, - -1.906592622049577, - -1.8355312260604482, - -1.743085696408476, - -1.6306857849392165, - -1.5000759241198622, - -1.3532877163429902, - -1.1926078943876894, - -1.0205422583203987, - -0.8397761575781417, - -0.6531321414455167, - -0.4635254458137621, - -0.2739180182125783, - -0.08727180617144134, - 0.09349795441476566, - 0.2655687142554897, - 0.42625512390562803, - 0.5730513832883307, - 0.7036707596117937, - 0.8160816504684241, - 0.9085396233736778, - 0.9796149264624687, - 1.0282150364863378, - 1.0536018885125287, - 1.0554035156043273, - 1.033619914916713, - 0.9886230476963846, - 0.921150973186232, - 0.8322962089444619, - 0.7234885011459866, - 0.5964722765863132, - 0.4532791319825116, - 0.29619579443641475, - 0.12772805833554102, - -0.04943873256483241, - -0.2324820346638709, - -0.4184866177562072, - -0.6044905400007059, - -0.7875318595581464, - -0.9646953462262678, - -1.1331584564094537, - -1.2902358463595585, - -1.4334217216982972, - -1.5604293553355166, - -1.6692271505675709, - -1.7580706806146913, - -1.825530199320029, - -1.8705131891447913, - -1.8922815908681003, - -1.890463443267268, - -1.8650587492134383, - -1.8164394756714195, - -1.7453436876042785, - -1.6528639082930625, - -1.5404298896367081, - -1.40978606415708, - -1.2629640342998663, - -1.1022505328975054, - -0.9301513600696212, - -0.7493518653061424, - -0.5626745979454313, - -0.3730347939300679, - -0.1833944008418494, - 0.003284633736988108, - 0.18408707385975862, - 0.35619037018444755, - 0.5169091732145987, - 0.6637376828220583, - 0.7943891661641557, - 0.9068320207831075, - 0.9993218141433131, - 1.0704287943294535, - 1.1190604380432458, - 1.1444786803020706, - 1.1463115541196398, - 1.124559056601537, - 1.0795931489455277, - 1.012151890345275, - 0.9233277983108326, - 0.8145506189683458, - 0.6875647790650312, - 0.5444018752699764, - 0.3873486346373457, - 0.21891085150729256, - 0.041773869587679584, - -0.14123976756758957, - -0.3272148298003081, - -0.5131893753158074, - -0.6962014623214086, - -0.8733358606606888, - -1.041770026783976, - -1.198818616989001, - -1.3419758369432335, - -1.4689549596015583, - -1.5777243883048326, - -1.6665396963188912, - -1.7339711375307947, - -1.7789261944465014, - -1.8006668078891477, - -1.7988210166799148, - -1.773388823733502, - -1.7247421960584197, - -1.6536191986606825, - -1.5611123548641368, - -1.4486514166107094, - -1.3179808164648543, - -1.1711321569144109, - -1.0103921708339096, - -0.838266658384922, - -0.6574409690990155, - -0.4707376523550608, - -0.281071944137605, - -0.09140579206952573, - 0.09529885622661763, - 0.27612676476383446, - 0.4482553841598989, - 0.6089993648783161, - 0.7558529067505033, - 0.8865292768953182, - 0.9989968728147378, - 1.0915112619346816, - 1.1626426923008644, - 1.2112986405765316, - 1.236741041740395, - 1.2385979287681232, - 1.2168692987274747, - 1.171927112778326, - 1.1045094300769809, - 1.015708768096363, - 0.9069548729255119, - 0.7799921712749297, - 0.6368522597772603, - 0.4798218654502676, - 0.31140678259770327, - 0.13429235489169822, - -0.0486988741486222, - -0.2346516744014289, - -0.420604104106866, - -0.6035942215071902, - -0.7807067964806677, - -0.9491192855120885, - -1.1061463449335645, - -1.2492821804461185, - -1.376240065038627, - -1.484988402086, - -1.5737827648867784, - -1.6411934073612011, - -1.686127812048082, - -1.707847919803252, - -1.7059817694802233, - -1.6805293640259371, - -1.6318626704806176, - -1.5607197538820787, - -1.4681931375857893, - -1.3557125735647846, - -1.2250224944143564, - -1.0781545026530956, - -0.9173953311860097, - -0.7452507802057312, - -0.5644061992726749, - -0.3776841377968351, - -0.1879998317915277, - 0.0016847710911739415, - 0.18840772319922178, - 0.36925378851657803, - 0.5414004176323302, - 0.7021622609816038, - 0.8490335183682747, - 0.9797274568824867, - 1.0922124739985613, - 1.184744137114961, - 1.2558926942502002, - 1.3045656220403212, - 1.3300248554375107, - 1.3318984273906693, - 1.3101863349411444, - 1.2652605392229044, - 1.1978590993662728, - 1.1090745328184137, - 1.0003365856429496, - 0.8733896845251236, - 0.7302654260732786, - 0.5732505372795781, - 0.4048508124239738, - 0.22775159515422888, - 0.04477542896461678, - -0.14116245604600683, - -0.3271001181413318, - -0.5100756155869257, - -0.6871737182844938, - -0.8555718827414993, - -1.0125847653128055, - -1.1557065717214388, - -1.282650574979031, - -1.391385178481634, - -1.4801659555500675, - -1.5475631601259212, - -1.59248427476924, - -1.6141912403567347, - -1.6123120957626669, - -1.586846843954505, - -1.5381674519929174, - -1.4670119849354397, - -1.374472966157784, - -1.2619801476522514, - -1.131277962033629, - -0.9843980118397038, - -0.8236270299944247, - -0.6514708167083099, - -0.4706147215609042, - -0.28388129398042894, - -0.09418576999798109, - 0.09550990271648316, - 0.28224377649377397, - 0.4631006153004346, - 0.6352578697085491, - 0.7960301901367282, - 0.9429117763714814, - 1.0736158954873685, - 1.1861109449425546, - 1.2786524921196722, - 1.3498107850215195, - 1.3984933002685498, - 1.4239619727981596, - 1.4258448355441564, - 1.4041418855333572, - 1.3592250838850797, - 1.291832489715542, - 1.2030566204580557, - 1.0943272221624984, - 0.9673887215006984, - 0.824272715067079, - 0.6672659298413501, - 0.4988741600908898, - 0.32178274945010876, - 0.1388142414020852, - -0.04711613396722471, - -0.23304643493338884, - -0.4160147197736004, - -0.5931057584009192, - -0.7614970073331939, - -0.9185031229370249, - -1.0616183109459532, - -1.188555844382515, - -1.2972841266521602, - -1.3860587310859995, - -1.4534499116354567, - -1.4983651508699762, - -1.520066389675663, - -1.5181816669358135, - -1.492710985626597, - -1.444026312817375, - -1.372865713574154, - -1.2803217112803171, - -1.1678240579362722, - -1.03711718616428, - -0.8902326985102037, - -0.7294573279041112, - -0.557296874564587, - -0.3764366880771571, - -0.18969931787645283, - ] + # output[0] = input[1] + 2*input[0] + last_even_prev(=0) + # input[0]=0 (t=0: both sines are 0), so output[0] = input[1] results = DownSampling(self.sets)._do_decimation_polyphase_order_two(self.input) - np.testing.assert_almost_equal(results, np.array(check), decimal=10) + self.assertAlmostEqual(results[0], self.input[1], places=10) def test_polyphase_two_size(self): check = int((self.input.size - 1) / 2) From 668761f901472ae4f7d2aba65bc138e9c9b3ad0d Mon Sep 17 00:00:00 2001 From: Christoph Kuhn Date: Thu, 9 Jul 2026 18:43:19 +0200 Subject: [PATCH 16/20] feat(downsampling): add do_simple - add c/downsampling_simple_template.h - change src/c_compile/__init__.py - add src/c_compile/simple.py --- .../c/downsampling_simple_template.h | 78 +++++++++++++++++++ .../downsampling/src/c_compile/__init__.py | 1 + .../downsampling/src/c_compile/simple.py | 72 +++++++++++++++++ 3 files changed, 151 insertions(+) create mode 100644 elasticai/creator_plugins/downsampling/c/downsampling_simple_template.h create mode 100644 elasticai/creator_plugins/downsampling/src/c_compile/simple.py diff --git a/elasticai/creator_plugins/downsampling/c/downsampling_simple_template.h b/elasticai/creator_plugins/downsampling/c/downsampling_simple_template.h new file mode 100644 index 0000000..4bdb76c --- /dev/null +++ b/elasticai/creator_plugins/downsampling/c/downsampling_simple_template.h @@ -0,0 +1,78 @@ +#ifndef DOWNSAMPLING_SIMPLE_TEMPLATE_H +#define DOWNSAMPLING_SIMPLE_TEMPLATE_H +#include +#include +#include + +typedef struct { + uint16_t tap_start; + uint16_t tap_length; + void *output; + void *taps; +} DoSimpleTaps; + +#ifndef DOWNSAMPLING_SIMPLE_OUTPUT_LENGTH +#define DOWNSAMPLING_SIMPLE_OUTPUT_LENGTH(id, factor) \ +size_t get_downsampling_simple_output_length_ ## id(size_t input_length) { \ + return (input_length / (size_t)factor); \ +} +#endif // DOWNSAMPLING_SIMPLE_OUTPUT_LENGTH + +#ifndef DEF_DOWNSAMPLING_SIMPLE +#define DEF_DOWNSAMPLING_SIMPLE(id, input_type) \ +bool calc_next_datum_do_simple_ ## id(input_type data, DoSimpleTaps *tap_memory) { \ + uint16_t do_tap_start = tap_memory->tap_start; \ + uint16_t do_tap_length = tap_memory->tap_length; \ + input_type *do_output = (input_type *) tap_memory->output; \ + input_type *do_taps = (input_type *) tap_memory->taps; \ + do_taps[do_tap_start] = data; \ + \ + input_type sum = 0; \ + for (int16_t pos_tap = 0; pos_tap < do_tap_length; pos_tap++) { \ + sum += do_taps[pos_tap]; \ + } \ + do_tap_start++; \ + tap_memory->tap_start = do_tap_start; \ + if(do_tap_start >= do_tap_length) { \ + tap_memory->tap_start = 0; \ + *do_output = (input_type) (sum / do_tap_length); \ + return true; \ + } \ + return false; \ +} +#endif // DEF_DOWNSAMPLING_SIMPLE + +#ifndef DEF_NEW_DO_SIMPLE_TAP_IMPL +#define DEF_NEW_DO_SIMPLE_TAP_IMPL(id, input_type, dsr) \ +static DEF_DOWNSAMPLING_SIMPLE(id, input_type) \ +bool calc_do_simple_ ## id(input_type data, input_type *out) { \ + static input_type do_taps[dsr] = {0}; \ + static input_type do_output_val = 0; \ + static DoSimpleTaps settings = { \ + .tap_length = dsr, \ + .tap_start = 0, \ + .taps = do_taps, \ + .output = &do_output_val, \ + }; \ + if (calc_next_datum_do_simple_ ## id(data, &(settings))) { \ + *out = *((input_type *) settings.output); \ + return true; \ + } \ + return false; \ +} +#endif // DEF_NEW_DO_SIMPLE_TAP_IMPL + +#ifndef DEF_GET_DO_SIMPLE_VAL_IMPL +#define DEF_GET_DO_SIMPLE_VAL_IMPL(id, input_type) \ +input_type get_do_simple_val_ ## id(DoSimpleTaps *s) { \ + return *((input_type *) s->output); \ +} +#endif // DEF_GET_DO_SIMPLE_VAL + +#ifndef DEF_NEW_DO_SIMPLE_PROTO +#define DEF_NEW_DO_SIMPLE_PROTO(id, input_type) \ +bool calc_do_simple_ ## id(input_type data, input_type *out); \ +input_type get_do_simple_val_ ## id(DoSimpleTaps *s); +#endif // DEF_NEW_DO_SIMPLE_PROTO + +#endif // DOWNSAMPLING_SIMPLE_TEMPLATE_H diff --git a/elasticai/creator_plugins/downsampling/src/c_compile/__init__.py b/elasticai/creator_plugins/downsampling/src/c_compile/__init__.py index f14a2a7..b7b57e8 100644 --- a/elasticai/creator_plugins/downsampling/src/c_compile/__init__.py +++ b/elasticai/creator_plugins/downsampling/src/c_compile/__init__.py @@ -1 +1,2 @@ from .subsampling import build_downsampling_subsampling as build_downsampling_subsampling +from .simple import build_downsampling_simple as build_downsampling_simple diff --git a/elasticai/creator_plugins/downsampling/src/c_compile/simple.py b/elasticai/creator_plugins/downsampling/src/c_compile/simple.py new file mode 100644 index 0000000..fb7c4a6 --- /dev/null +++ b/elasticai/creator_plugins/downsampling/src/c_compile/simple.py @@ -0,0 +1,72 @@ +from datetime import datetime +from pathlib import Path + +import elasticai.creator_plugins.downsampling as design_plugin +from elasticai.preprocessor.translation.ir2c import ( + generate_c_files, + get_embedded_datatype, + replace_variables_with_parameters, +) + + +def build_downsampling_simple( + downsampling_ratio: int, + bitwidth: int, + signed: bool, + path2save: Path, + downsampling_id: str = "0", + define_path: str = "src", +) -> None: + """Generate C files for downsampling simple. + Args: + downsampling_ratio: Integer with downsampling ratio for reducing the input sampling rate (SR_out = SR_in / OSR) + bitwidth: Bit width of each sample + signed: Decision if data values are signed [otherwise unsigned] + path2save: Path to save the .h / .c output-files. + downsampling_id: ID appended to function names + define_path: Include path written into the generated #include line. + """ + assert bitwidth in range(2, 65), "Bitwidth must be between 2 and 64" + assert downsampling_ratio > 0, "dsr must be >= 1" + + module_id = downsampling_id.lower() + params = { + "datetime_created": datetime.now().strftime("%m/%d/%Y, %H:%M:%S"), + "path2include": define_path, + "template_name": "downsampling_simple_template.h", + "device_id": module_id.upper(), + "data_type": get_embedded_datatype(bitwidth, signed), + "downsampling_ratio": str(downsampling_ratio), + } + template_c = _generate_downsampling_simple_template() + generate_c_files( + path2save=path2save, + template_name=params["template_name"], + file_name="downsampling_simple", + module_id=module_id, + proto_file=replace_variables_with_parameters(template_c["head"], params), + impl_file=replace_variables_with_parameters(template_c["func"], params), + path2template=Path(design_plugin.__file__).parent / "c", + ) + + +def _generate_downsampling_simple_template() -> dict[str, list[str]]: + header_template = [ + "// --- Generating do_simple", + "// Copyright @ UDE-IES", + "// Code generated on: {$datetime_created}", + "// Params: ID = {$device_id}, type = {$data_type}, dsr = {$downsampling_ratio}", + '#include "{$path2include}/{$template_name}"', + "DEF_NEW_DO_SIMPLE_PROTO({$device_id}, {$data_type})", + ] + implementation_template = [ + "// --- Generating do_simple", + "// Copyright @ UDE-IES", + "// Code generated on: {$datetime_created}", + "// Params: ID = {$device_id}, type = {$data_type}, dsr = {$downsampling_ratio}", + '#include "{$path2include}/{$template_name}"', + "DOWNSAMPLING_SIMPLE_OUTPUT_LENGTH({$device_id}, {$downsampling_ratio})", + "DEF_NEW_DO_SIMPLE_TAP_IMPL({$device_id}, {$data_type}, {$downsampling_ratio})", + "DEF_GET_DO_SIMPLE_VAL_IMPL({$device_id}, {$data_type})" + ] + return {"head": header_template, "func": implementation_template} From 44da286481c54fe2622e5fc5d8a84d52582b527a Mon Sep 17 00:00:00 2001 From: Christoph Kuhn Date: Thu, 9 Jul 2026 19:13:53 +0200 Subject: [PATCH 17/20] update(downsampling): update src/c_compile/__init__.py --- .../creator_plugins/downsampling/src/c_compile/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elasticai/creator_plugins/downsampling/src/c_compile/__init__.py b/elasticai/creator_plugins/downsampling/src/c_compile/__init__.py index b7b57e8..945b4ee 100644 --- a/elasticai/creator_plugins/downsampling/src/c_compile/__init__.py +++ b/elasticai/creator_plugins/downsampling/src/c_compile/__init__.py @@ -1,2 +1,2 @@ -from .subsampling import build_downsampling_subsampling as build_downsampling_subsampling from .simple import build_downsampling_simple as build_downsampling_simple +from .subsampling import build_downsampling_subsampling as build_downsampling_subsampling From a72cb095bc723439809da6f6a8a885afb73ac52a Mon Sep 17 00:00:00 2001 From: Christoph Kuhn Date: Thu, 9 Jul 2026 19:22:29 +0200 Subject: [PATCH 18/20] update(downsampling): change uint32_t to size_t in subsampling_template --- .../c/downsampling_subsampling_template.h | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/elasticai/creator_plugins/downsampling/c/downsampling_subsampling_template.h b/elasticai/creator_plugins/downsampling/c/downsampling_subsampling_template.h index 0d5b7d4..692ec4e 100644 --- a/elasticai/creator_plugins/downsampling/c/downsampling_subsampling_template.h +++ b/elasticai/creator_plugins/downsampling/c/downsampling_subsampling_template.h @@ -1,12 +1,13 @@ #ifndef DOWNSAMPLING_SUBSAMPLING_TEMPLATE_H #define DOWNSAMPLING_SUBSAMPLING_TEMPLATE_H +#include #include #ifndef DEF_DOWNSAMPLING_SUBSAMPLING_OUTPUT_LENGTH #define DEF_DOWNSAMPLING_SUBSAMPLING_OUTPUT_LENGTH(id, factor) \ -uint32_t get_downsampling_subsampling_output_length_ ## id(uint32_t input_length) { \ +size_t get_downsampling_subsampling_output_length_ ## id(size_t input_length) { \ return (input_length + factor - 1u) / factor; \ } #endif @@ -15,13 +16,13 @@ uint32_t get_downsampling_subsampling_output_length_ ## id(uint32_t input_length #ifndef DEF_DOWNSAMPLING_SUBSAMPLING_IMPL #define DEF_DOWNSAMPLING_SUBSAMPLING_IMPL(id, input_type, factor) \ void downsample_subsampling_ ## id( \ - const input_type *input, input_type *output, uint32_t input_length, uint8_t augment \ + const input_type *input, input_type *output, size_t input_length, uint8_t augment \ ) { \ - const uint32_t output_length = get_downsampling_subsampling_output_length_ ## id(input_length); \ - const uint32_t offsets = augment ? factor : 1u; \ - for (uint32_t offset = 0u; offset < offsets; ++offset) { \ - for (uint32_t output_index = 0u; output_index < output_length; ++output_index) { \ - const uint32_t input_index = offset + output_index * factor; \ + const size_t output_length = get_downsampling_subsampling_output_length_ ## id(input_length); \ + const size_t offsets = augment ? factor : 1u; \ + for (size_t offset = 0u; offset < offsets; ++offset) { \ + for (size_t output_index = 0u; output_index < output_length; ++output_index) { \ + const size_t input_index = offset + output_index * factor; \ output[offset * output_length + output_index] = \ input_index < input_length ? input[input_index] : (input_type)0; \ } \ @@ -32,9 +33,9 @@ void downsample_subsampling_ ## id( \ #ifndef DEF_DOWNSAMPLING_SUBSAMPLING_PROTO #define DEF_DOWNSAMPLING_SUBSAMPLING_PROTO(id, input_type) \ -uint32_t get_downsampling_subsampling_output_length_ ## id(uint32_t input_length); \ +size_t get_downsampling_subsampling_output_length_ ## id(size_t input_length); \ void downsample_subsampling_ ## id( \ - const input_type *input, input_type *output, uint32_t input_length, uint8_t augment \ + const input_type *input, input_type *output, size_t input_length, uint8_t augment \ ); #endif From 0a5d431a6c19396f592f0ae15fcbe2324b2866fc Mon Sep 17 00:00:00 2001 From: Christoph Kuhn Date: Thu, 9 Jul 2026 19:39:44 +0200 Subject: [PATCH 19/20] update(downsampling): remove unused function --- .../downsampling/c/downsampling_simple_template.h | 8 -------- 1 file changed, 8 deletions(-) diff --git a/elasticai/creator_plugins/downsampling/c/downsampling_simple_template.h b/elasticai/creator_plugins/downsampling/c/downsampling_simple_template.h index 4bdb76c..484519f 100644 --- a/elasticai/creator_plugins/downsampling/c/downsampling_simple_template.h +++ b/elasticai/creator_plugins/downsampling/c/downsampling_simple_template.h @@ -62,17 +62,9 @@ bool calc_do_simple_ ## id(input_type data, input_type *out) { \ } #endif // DEF_NEW_DO_SIMPLE_TAP_IMPL -#ifndef DEF_GET_DO_SIMPLE_VAL_IMPL -#define DEF_GET_DO_SIMPLE_VAL_IMPL(id, input_type) \ -input_type get_do_simple_val_ ## id(DoSimpleTaps *s) { \ - return *((input_type *) s->output); \ -} -#endif // DEF_GET_DO_SIMPLE_VAL - #ifndef DEF_NEW_DO_SIMPLE_PROTO #define DEF_NEW_DO_SIMPLE_PROTO(id, input_type) \ bool calc_do_simple_ ## id(input_type data, input_type *out); \ -input_type get_do_simple_val_ ## id(DoSimpleTaps *s); #endif // DEF_NEW_DO_SIMPLE_PROTO #endif // DOWNSAMPLING_SIMPLE_TEMPLATE_H From f2562104c3178a359fefab9863e628429491a0c1 Mon Sep 17 00:00:00 2001 From: Christoph Kuhn Date: Fri, 10 Jul 2026 16:18:21 +0200 Subject: [PATCH 20/20] update(downsampling): update simple.py --- elasticai/creator_plugins/downsampling/src/c_compile/simple.py | 1 - 1 file changed, 1 deletion(-) diff --git a/elasticai/creator_plugins/downsampling/src/c_compile/simple.py b/elasticai/creator_plugins/downsampling/src/c_compile/simple.py index fb7c4a6..17d5679 100644 --- a/elasticai/creator_plugins/downsampling/src/c_compile/simple.py +++ b/elasticai/creator_plugins/downsampling/src/c_compile/simple.py @@ -67,6 +67,5 @@ def _generate_downsampling_simple_template() -> dict[str, list[str]]: '#include "{$path2include}/{$template_name}"', "DOWNSAMPLING_SIMPLE_OUTPUT_LENGTH({$device_id}, {$downsampling_ratio})", "DEF_NEW_DO_SIMPLE_TAP_IMPL({$device_id}, {$data_type}, {$downsampling_ratio})", - "DEF_GET_DO_SIMPLE_VAL_IMPL({$device_id}, {$data_type})" ] return {"head": header_template, "func": implementation_template}