Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id BBA0A200B11 for ; Sun, 29 May 2016 23:01:35 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id BA158160A2C; Sun, 29 May 2016 21:01:35 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id B3E31160A3A for ; Sun, 29 May 2016 23:01:33 +0200 (CEST) Received: (qmail 60425 invoked by uid 500); 29 May 2016 21:01:28 -0000 Mailing-List: contact commits-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@commons.apache.org Delivered-To: mailing list commits@commons.apache.org Received: (qmail 58434 invoked by uid 99); 29 May 2016 21:01:27 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 29 May 2016 21:01:27 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 48B70E95DC; Sun, 29 May 2016 21:01:27 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: erans@apache.org To: commits@commons.apache.org Date: Sun, 29 May 2016 21:01:54 -0000 Message-Id: <77487f31f6b740a1b67c8e20fa66a23d@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [29/32] [math] MATH-1369 archived-at: Sun, 29 May 2016 21:01:35 -0000 http://git-wip-us.apache.org/repos/asf/commons-math/blob/ccba0cfc/src/test/java/org/apache/commons/math4/random/EmpiricalDistributionTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/math4/random/EmpiricalDistributionTest.java b/src/test/java/org/apache/commons/math4/random/EmpiricalDistributionTest.java deleted file mode 100644 index c23b477..0000000 --- a/src/test/java/org/apache/commons/math4/random/EmpiricalDistributionTest.java +++ /dev/null @@ -1,561 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.commons.math4.random; - -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.URL; -import java.util.ArrayList; -import java.util.Arrays; - -import org.apache.commons.math4.TestUtils; -import org.apache.commons.math4.analysis.UnivariateFunction; -import org.apache.commons.math4.analysis.integration.BaseAbstractUnivariateIntegrator; -import org.apache.commons.math4.analysis.integration.IterativeLegendreGaussIntegrator; -import org.apache.commons.math4.distribution.ConstantRealDistribution; -import org.apache.commons.math4.distribution.NormalDistribution; -import org.apache.commons.math4.distribution.RealDistribution; -import org.apache.commons.math4.distribution.RealDistributionAbstractTest; -import org.apache.commons.math4.distribution.UniformRealDistribution; -import org.apache.commons.math4.exception.MathIllegalStateException; -import org.apache.commons.math4.exception.NullArgumentException; -import org.apache.commons.math4.exception.NotStrictlyPositiveException; -import org.apache.commons.math4.rng.RandomSource; -import org.apache.commons.math4.stat.descriptive.SummaryStatistics; -import org.apache.commons.math4.util.FastMath; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -/** - * Test cases for the EmpiricalDistribution class - */ -public final class EmpiricalDistributionTest extends RealDistributionAbstractTest { - - protected EmpiricalDistribution empiricalDistribution = null; - protected EmpiricalDistribution empiricalDistribution2 = null; - protected File file = null; - protected URL url = null; - protected double[] dataArray = null; - protected final int n = 10000; - - @Override - @Before - public void setUp() { - super.setUp(); - empiricalDistribution = new EmpiricalDistribution(100); - url = getClass().getResource("testData.txt"); - final ArrayList list = new ArrayList(); - try { - empiricalDistribution2 = new EmpiricalDistribution(100); - BufferedReader in = - new BufferedReader(new InputStreamReader( - url.openStream())); - String str = null; - while ((str = in.readLine()) != null) { - list.add(Double.valueOf(str)); - } - in.close(); - in = null; - } catch (IOException ex) { - Assert.fail("IOException " + ex); - } - - dataArray = new double[list.size()]; - int i = 0; - for (Double data : list) { - dataArray[i] = data.doubleValue(); - i++; - } - } - - // MATH-1279 - @Test(expected=NotStrictlyPositiveException.class) - public void testPrecondition1() { - new EmpiricalDistribution(0); - } - - /** - * Test EmpiricalDistrbution.load() using sample data file.
- * Check that the sampleCount, mu and sigma match data in - * the sample data file. Also verify that load is idempotent. - */ - @Test - public void testLoad() throws Exception { - // Load from a URL - empiricalDistribution.load(url); - checkDistribution(); - - // Load again from a file (also verifies idempotency of load) - File file = new File(url.toURI()); - empiricalDistribution.load(file); - checkDistribution(); - } - - private void checkDistribution() { - // testData File has 10000 values, with mean ~ 5.0, std dev ~ 1 - // Make sure that loaded distribution matches this - Assert.assertEquals(empiricalDistribution.getSampleStats().getN(),1000,10E-7); - //TODO: replace with statistical tests - Assert.assertEquals(empiricalDistribution.getSampleStats().getMean(), - 5.069831575018909,10E-7); - Assert.assertEquals(empiricalDistribution.getSampleStats().getStandardDeviation(), - 1.0173699343977738,10E-7); - } - - /** - * Test EmpiricalDistrbution.load(double[]) using data taken from - * sample data file.
- * Check that the sampleCount, mu and sigma match data in - * the sample data file. - */ - @Test - public void testDoubleLoad() throws Exception { - empiricalDistribution2.load(dataArray); - // testData File has 10000 values, with mean ~ 5.0, std dev ~ 1 - // Make sure that loaded distribution matches this - Assert.assertEquals(empiricalDistribution2.getSampleStats().getN(),1000,10E-7); - //TODO: replace with statistical tests - Assert.assertEquals(empiricalDistribution2.getSampleStats().getMean(), - 5.069831575018909,10E-7); - Assert.assertEquals(empiricalDistribution2.getSampleStats().getStandardDeviation(), - 1.0173699343977738,10E-7); - - double[] bounds = empiricalDistribution2.getGeneratorUpperBounds(); - Assert.assertEquals(bounds.length, 100); - Assert.assertEquals(bounds[99], 1.0, 10e-12); - - } - - /** - * Generate 1000 random values and make sure they look OK.
- * Note that there is a non-zero (but very small) probability that - * these tests will fail even if the code is working as designed. - */ - @Test - public void testNext() throws Exception { - tstGen(0.1); - tstDoubleGen(0.1); - } - - /** - * Make sure exception thrown if sampling is attempted - * before loading empiricalDistribution. - */ - @Test - public void testNextFail1() { - try { - empiricalDistribution.createSampler(RandomSource.create(RandomSource.JDK)).sample(); - Assert.fail("Expecting MathIllegalStateException"); - } catch (MathIllegalStateException ex) { - // expected - } - } - - /** - * Make sure exception thrown if sampling is attempted - * before loading empiricalDistribution. - */ - @Test - public void testNextFail2() { - try { - empiricalDistribution2.createSampler(RandomSource.create(RandomSource.JDK)).sample(); - Assert.fail("Expecting MathIllegalStateException"); - } catch (MathIllegalStateException ex) { - // expected - } - } - - /** - * Make sure we can handle a grid size that is too fine - */ - @Test - public void testGridTooFine() throws Exception { - empiricalDistribution = new EmpiricalDistribution(1001); - tstGen(0.1); - empiricalDistribution2 = new EmpiricalDistribution(1001); - tstDoubleGen(0.1); - } - - /** - * How about too fat? - */ - @Test - public void testGridTooFat() throws Exception { - empiricalDistribution = new EmpiricalDistribution(1); - tstGen(5); // ridiculous tolerance; but ridiculous grid size - // really just checking to make sure we do not bomb - empiricalDistribution2 = new EmpiricalDistribution(1); - tstDoubleGen(5); - } - - /** - * Test bin index overflow problem (BZ 36450) - */ - @Test - public void testBinIndexOverflow() throws Exception { - double[] x = new double[] {9474.94326071674, 2080107.8865462579}; - new EmpiricalDistribution().load(x); - } - - @Test - public void testSerialization() { - // Empty - EmpiricalDistribution dist = new EmpiricalDistribution(); - EmpiricalDistribution dist2 = (EmpiricalDistribution) TestUtils.serializeAndRecover(dist); - verifySame(dist, dist2); - - // Loaded - empiricalDistribution2.load(dataArray); - dist2 = (EmpiricalDistribution) TestUtils.serializeAndRecover(empiricalDistribution2); - verifySame(empiricalDistribution2, dist2); - } - - @Test(expected=NullArgumentException.class) - public void testLoadNullDoubleArray() { - new EmpiricalDistribution().load((double[]) null); - } - - @Test(expected=NullArgumentException.class) - public void testLoadNullURL() throws Exception { - new EmpiricalDistribution().load((URL) null); - } - - @Test(expected=NullArgumentException.class) - public void testLoadNullFile() throws Exception { - new EmpiricalDistribution().load((File) null); - } - - /** - * MATH-298 - */ - @Test - public void testGetBinUpperBounds() { - double[] testData = {0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10}; - EmpiricalDistribution dist = new EmpiricalDistribution(5); - dist.load(testData); - double[] expectedBinUpperBounds = {2, 4, 6, 8, 10}; - double[] expectedGeneratorUpperBounds = {4d/13d, 7d/13d, 9d/13d, 11d/13d, 1}; - double tol = 10E-12; - TestUtils.assertEquals(expectedBinUpperBounds, dist.getUpperBounds(), tol); - TestUtils.assertEquals(expectedGeneratorUpperBounds, dist.getGeneratorUpperBounds(), tol); - } - - private void verifySame(EmpiricalDistribution d1, EmpiricalDistribution d2) { - Assert.assertEquals(d1.isLoaded(), d2.isLoaded()); - Assert.assertEquals(d1.getBinCount(), d2.getBinCount()); - Assert.assertEquals(d1.getSampleStats(), d2.getSampleStats()); - if (d1.isLoaded()) { - for (int i = 0; i < d1.getUpperBounds().length; i++) { - Assert.assertEquals(d1.getUpperBounds()[i], d2.getUpperBounds()[i], 0); - } - Assert.assertEquals(d1.getBinStats(), d2.getBinStats()); - } - } - - private void tstGen(double tolerance)throws Exception { - empiricalDistribution.load(url); - RealDistribution.Sampler sampler - = empiricalDistribution.createSampler(RandomSource.create(RandomSource.WELL_19937_C, 1000)); - SummaryStatistics stats = new SummaryStatistics(); - for (int i = 1; i < 1000; i++) { - stats.addValue(sampler.sample()); - } - Assert.assertEquals("mean", 5.069831575018909, stats.getMean(),tolerance); - Assert.assertEquals("std dev", 1.0173699343977738, stats.getStandardDeviation(),tolerance); - } - - private void tstDoubleGen(double tolerance)throws Exception { - empiricalDistribution2.load(dataArray); - RealDistribution.Sampler sampler - = empiricalDistribution2.createSampler(RandomSource.create(RandomSource.WELL_19937_C, 1000)); - SummaryStatistics stats = new SummaryStatistics(); - for (int i = 1; i < 1000; i++) { - stats.addValue(sampler.sample()); - } - Assert.assertEquals("mean", 5.069831575018909, stats.getMean(), tolerance); - Assert.assertEquals("std dev", 1.0173699343977738, stats.getStandardDeviation(), tolerance); - } - - // Setup for distribution tests - - @Override - public RealDistribution makeDistribution() { - // Create a uniform distribution on [0, 10,000] - final double[] sourceData = new double[n + 1]; - for (int i = 0; i < n + 1; i++) { - sourceData[i] = i; - } - EmpiricalDistribution dist = new EmpiricalDistribution(); - dist.load(sourceData); - return dist; - } - - /** Uniform bin mass = 10/10001 == mass of all but the first bin */ - private final double binMass = 10d / (n + 1); - - /** Mass of first bin = 11/10001 */ - private final double firstBinMass = 11d / (n + 1); - - @Override - public double[] makeCumulativeTestPoints() { - final double[] testPoints = new double[] {9, 10, 15, 1000, 5004, 9999}; - return testPoints; - } - - - @Override - public double[] makeCumulativeTestValues() { - /* - * Bins should be [0, 10], (10, 20], ..., (9990, 10000] - * Kernels should be N(4.5, 3.02765), N(14.5, 3.02765)... - * Each bin should have mass 10/10000 = .001 - */ - final double[] testPoints = getCumulativeTestPoints(); - final double[] cumValues = new double[testPoints.length]; - final EmpiricalDistribution empiricalDistribution = (EmpiricalDistribution) makeDistribution(); - final double[] binBounds = empiricalDistribution.getUpperBounds(); - for (int i = 0; i < testPoints.length; i++) { - final int bin = findBin(testPoints[i]); - final double lower = bin == 0 ? empiricalDistribution.getSupportLowerBound() : - binBounds[bin - 1]; - final double upper = binBounds[bin]; - // Compute bMinus = sum or mass of bins below the bin containing the point - // First bin has mass 11 / 10000, the rest have mass 10 / 10000. - final double bMinus = bin == 0 ? 0 : (bin - 1) * binMass + firstBinMass; - final RealDistribution kernel = findKernel(lower, upper); - final double withinBinKernelMass = kernel.probability(lower, upper); - final double kernelCum = kernel.probability(lower, testPoints[i]); - cumValues[i] = bMinus + (bin == 0 ? firstBinMass : binMass) * kernelCum/withinBinKernelMass; - } - return cumValues; - } - - @Override - public double[] makeDensityTestValues() { - final double[] testPoints = getCumulativeTestPoints(); - final double[] densityValues = new double[testPoints.length]; - final EmpiricalDistribution empiricalDistribution = (EmpiricalDistribution) makeDistribution(); - final double[] binBounds = empiricalDistribution.getUpperBounds(); - for (int i = 0; i < testPoints.length; i++) { - final int bin = findBin(testPoints[i]); - final double lower = bin == 0 ? empiricalDistribution.getSupportLowerBound() : - binBounds[bin - 1]; - final double upper = binBounds[bin]; - final RealDistribution kernel = findKernel(lower, upper); - final double withinBinKernelMass = kernel.probability(lower, upper); - final double density = kernel.density(testPoints[i]); - densityValues[i] = density * (bin == 0 ? firstBinMass : binMass) / withinBinKernelMass; - } - return densityValues; - } - - /** - * Modify test integration bounds from the default. Because the distribution - * has discontinuities at bin boundaries, integrals spanning multiple bins - * will face convergence problems. Only test within-bin integrals and spans - * across no more than 3 bin boundaries. - */ - @Override - @Test - public void testDensityIntegrals() { - final RealDistribution distribution = makeDistribution(); - final double tol = 1.0e-9; - final BaseAbstractUnivariateIntegrator integrator = - new IterativeLegendreGaussIntegrator(5, 1.0e-12, 1.0e-10); - final UnivariateFunction d = new UnivariateFunction() { - @Override - public double value(double x) { - return distribution.density(x); - } - }; - final double[] lower = {0, 5, 1000, 5001, 9995}; - final double[] upper = {5, 12, 1030, 5010, 10000}; - for (int i = 1; i < 5; i++) { - Assert.assertEquals( - distribution.probability( - lower[i], upper[i]), - integrator.integrate( - 1000000, // Triangle integrals are very slow to converge - d, lower[i], upper[i]), tol); - } - } - - /** - * MATH-984 - * Verify that sampled values do not go outside of the range of the data. - */ - @Test - public void testSampleValuesRange() { - // Concentrate values near the endpoints of (0, 1). - // Unconstrained Gaussian kernel would generate values outside the interval. - final double[] data = new double[100]; - for (int i = 0; i < 50; i++) { - data[i] = 1 / ((double) i + 1); - } - for (int i = 51; i < 100; i++) { - data[i] = 1 - 1 / (100 - (double) i + 2); - } - EmpiricalDistribution dist = new EmpiricalDistribution(10); - dist.load(data); - RealDistribution.Sampler sampler - = dist.createSampler(RandomSource.create(RandomSource.WELL_19937_C, 1000)); - for (int i = 0; i < 1000; i++) { - final double dev = sampler.sample(); - Assert.assertTrue(dev < 1); - Assert.assertTrue(dev > 0); - } - } - - /** - * MATH-1203, MATH-1208 - */ - @Test - public void testNoBinVariance() { - final double[] data = {0, 0, 1, 1}; - EmpiricalDistribution dist = new EmpiricalDistribution(2); - dist.load(data); - RealDistribution.Sampler sampler - = dist.createSampler(RandomSource.create(RandomSource.WELL_19937_C, 1000)); - for (int i = 0; i < 1000; i++) { - final double dev = sampler.sample(); - Assert.assertTrue(dev == 0 || dev == 1); - } - Assert.assertEquals(0.5, dist.cumulativeProbability(0), Double.MIN_VALUE); - Assert.assertEquals(1.0, dist.cumulativeProbability(1), Double.MIN_VALUE); - Assert.assertEquals(0.5, dist.cumulativeProbability(0.5), Double.MIN_VALUE); - Assert.assertEquals(0.5, dist.cumulativeProbability(0.7), Double.MIN_VALUE); - } - - /** - * Find the bin that x belongs (relative to {@link #makeDistribution()}). - */ - private int findBin(double x) { - // Number of bins below x should be trunc(x/10) - final double nMinus = FastMath.floor(x / 10); - final int bin = (int) FastMath.round(nMinus); - // If x falls on a bin boundary, it is in the lower bin - return FastMath.floor(x / 10) == x / 10 ? bin - 1 : bin; - } - - /** - * Find the within-bin kernel for the bin with lower bound lower - * and upper bound upper. All bins other than the first contain 10 points - * exclusive of the lower bound and are centered at (lower + upper + 1) / 2. - * The first bin includes its lower bound, 0, so has different mean and - * standard deviation. - */ - private RealDistribution findKernel(double lower, double upper) { - if (lower < 1) { - return new NormalDistribution(5d, 3.3166247903554); - } else { - return new NormalDistribution((upper + lower + 1) / 2d, 3.0276503540974917); - } - } - - @Test - public void testKernelOverrideConstant() { - final EmpiricalDistribution dist = new ConstantKernelEmpiricalDistribution(5); - final double[] data = {1d,2d,3d, 4d,5d,6d, 7d,8d,9d, 10d,11d,12d, 13d,14d,15d}; - dist.load(data); - RealDistribution.Sampler sampler - = dist.createSampler(RandomSource.create(RandomSource.WELL_19937_C, 1000)); - // Bin masses concentrated on 2, 5, 8, 11, 14 <- effectively discrete uniform distribution over these - double[] values = {2d, 5d, 8d, 11d, 14d}; - for (int i = 0; i < 20; i++) { - Assert.assertTrue(Arrays.binarySearch(values, sampler.sample()) >= 0); - } - final double tol = 10E-12; - Assert.assertEquals(0.0, dist.cumulativeProbability(1), tol); - Assert.assertEquals(0.2, dist.cumulativeProbability(2), tol); - Assert.assertEquals(0.6, dist.cumulativeProbability(10), tol); - Assert.assertEquals(0.8, dist.cumulativeProbability(12), tol); - Assert.assertEquals(0.8, dist.cumulativeProbability(13), tol); - Assert.assertEquals(1.0, dist.cumulativeProbability(15), tol); - - Assert.assertEquals(2.0, dist.inverseCumulativeProbability(0.1), tol); - Assert.assertEquals(2.0, dist.inverseCumulativeProbability(0.2), tol); - Assert.assertEquals(5.0, dist.inverseCumulativeProbability(0.3), tol); - Assert.assertEquals(5.0, dist.inverseCumulativeProbability(0.4), tol); - Assert.assertEquals(8.0, dist.inverseCumulativeProbability(0.5), tol); - Assert.assertEquals(8.0, dist.inverseCumulativeProbability(0.6), tol); - } - - @Test - public void testKernelOverrideUniform() { - final EmpiricalDistribution dist = new UniformKernelEmpiricalDistribution(5); - final double[] data = {1d,2d,3d, 4d,5d,6d, 7d,8d,9d, 10d,11d,12d, 13d,14d,15d}; - dist.load(data); - RealDistribution.Sampler sampler - = dist.createSampler(RandomSource.create(RandomSource.WELL_19937_C, 1000)); - // Kernels are uniform distributions on [1,3], [4,6], [7,9], [10,12], [13,15] - final double bounds[] = {3d, 6d, 9d, 12d}; - final double tol = 10E-12; - for (int i = 0; i < 20; i++) { - final double v = sampler.sample(); - // Make sure v is not in the excluded range between bins - that is (bounds[i], bounds[i] + 1) - for (int j = 0; j < bounds.length; j++) { - Assert.assertFalse(v > bounds[j] + tol && v < bounds[j] + 1 - tol); - } - } - Assert.assertEquals(0.0, dist.cumulativeProbability(1), tol); - Assert.assertEquals(0.1, dist.cumulativeProbability(2), tol); - Assert.assertEquals(0.6, dist.cumulativeProbability(10), tol); - Assert.assertEquals(0.8, dist.cumulativeProbability(12), tol); - Assert.assertEquals(0.8, dist.cumulativeProbability(13), tol); - Assert.assertEquals(1.0, dist.cumulativeProbability(15), tol); - - Assert.assertEquals(2.0, dist.inverseCumulativeProbability(0.1), tol); - Assert.assertEquals(3.0, dist.inverseCumulativeProbability(0.2), tol); - Assert.assertEquals(5.0, dist.inverseCumulativeProbability(0.3), tol); - Assert.assertEquals(6.0, dist.inverseCumulativeProbability(0.4), tol); - Assert.assertEquals(8.0, dist.inverseCumulativeProbability(0.5), tol); - Assert.assertEquals(9.0, dist.inverseCumulativeProbability(0.6), tol); - } - - - /** - * Empirical distribution using a constant smoothing kernel. - */ - private class ConstantKernelEmpiricalDistribution extends EmpiricalDistribution { - private static final long serialVersionUID = 1L; - public ConstantKernelEmpiricalDistribution(int i) { - super(i); - } - // Use constant distribution equal to bin mean within bin - @Override - protected RealDistribution getKernel(SummaryStatistics bStats) { - return new ConstantRealDistribution(bStats.getMean()); - } - } - - /** - * Empirical distribution using a uniform smoothing kernel. - */ - private class UniformKernelEmpiricalDistribution extends EmpiricalDistribution { - private static final long serialVersionUID = 2963149194515159653L; - public UniformKernelEmpiricalDistribution(int i) { - super(i); - } - @Override - protected RealDistribution getKernel(SummaryStatistics bStats) { - return new UniformRealDistribution(bStats.getMin(), bStats.getMax()); - } - } -} http://git-wip-us.apache.org/repos/asf/commons-math/blob/ccba0cfc/src/test/resources/org/apache/commons/math4/distribution/testData.txt ---------------------------------------------------------------------- diff --git a/src/test/resources/org/apache/commons/math4/distribution/testData.txt b/src/test/resources/org/apache/commons/math4/distribution/testData.txt new file mode 100644 index 0000000..4a10132 --- /dev/null +++ b/src/test/resources/org/apache/commons/math4/distribution/testData.txt @@ -0,0 +1,1000 @@ +4.038625496201205 +3.6485326248346936 +3.6651209675932845 +5.814896279561131 +5.384126469824717 +5.251190723365563 +4.465213440111648 +4.736608014129308 +5.566383814840726 +3.8872277480629114 +5.246598498086048 +3.7511487364188176 +6.733371385175343 +5.388632419618035 +6.036263402962769 +3.8105605069222905 +5.738599503606028 +4.994552792425298 +2.945504336988336 +4.095314381239862 +5.760924710543879 +3.889753944419315 +3.808861160991701 +5.084302950012555 +6.370292933705698 +5.9615431859588455 +4.8790354385481445 +4.068164663649243 +4.26491661935213 +5.911067976258105 +4.1316140545022115 +4.0479985648577115 +5.560425919351912 +5.7777862258090265 +4.6491664757229145 +5.322284766164775 +3.9643060017297818 +3.3374606422520423 +4.070818520139152 +5.162814971692577 +4.68959876937858 +5.729533112912969 +7.160010937980058 +5.154920628387343 +5.992604820701763 +5.317279162752973 +6.3388993007264 +4.38451874656454 +5.024014917973479 +3.7534872319471946 +5.042363342784924 +5.528064915562473 +4.645749024871185 +2.5572755520373756 +3.953716919712825 +3.479482401208564 +4.676100783445583 +4.602236051449888 +7.136692300563229 +3.2411466558895095 +4.188618724984135 +3.6403999184454445 +3.4104206071160776 +4.807963390662261 +4.039073733966207 +4.201017826594899 +4.381868005163936 +5.0635235098658935 +5.9840760229548735 +4.195400406346137 +5.649256144660377 +4.679088153774095 +4.169683379901892 +5.671299804360453 +6.159089864893807 +5.315685219074694 +6.3327786025390305 +5.57348047674858 +6.124073677151904 +4.599177837977919 +4.792320274522308 +5.670142645005109 +5.479531549270221 +4.7740747976996705 +4.99464290442364 +5.474337090086012 +5.232353744280737 +6.411298157619626 +4.757268066271138 +5.217779158748026 +5.07395379944902 +5.5759984176628965 +4.521182520094989 +5.738026445940142 +4.742204968903384 +4.670762511507285 +4.884925361512115 +3.2573282568729462 +4.548387675110013 +4.337950021352034 +3.7875587274144618 +3.6055586455442974 +7.361861332197413 +4.834945622163155 +6.019473054836964 +4.453304225895349 +3.258695681592217 +5.794572588445252 +3.706438851580378 +6.079300672323756 +4.828008457182361 +5.315261102210712 +3.981847695058188 +4.039767325290114 +5.790863349525503 +5.160671471128728 +4.835236459763434 +4.405281184174698 +6.036293520404953 +5.889067983920324 +4.645514887430352 +4.347244670972515 +6.447181244432997 +6.564267268399325 +5.1013992003059885 +4.123378901103389 +2.7101740954226283 +4.209200680057913 +5.085704888132955 +4.26810090240086 +5.54254381015526 +4.721081268239747 +6.890088385585999 +3.9983110493877954 +5.321006894021748 +4.316867375040024 +3.694764624577479 +5.453875921043777 +3.7798857421649927 +3.7228653199742623 +4.807698651287013 +3.953745662132547 +4.821189486606762 +4.453489509051613 +6.4517275696030225 +4.823034188588044 +4.722822481625316 +5.810689805246644 +2.79248319144007 +4.928162269110059 +4.661918219482871 +4.574123379557206 +5.241478194631993 +5.8345087395944155 +7.024415739565572 +3.5536052565954 +6.095523994939967 +5.714650096778455 +4.846741263282074 +6.002769586957791 +5.982356840660745 +5.045480762532407 +6.461077219605347 +4.806649266171423 +6.350848113862498 +6.402679936682352 +3.8190196431210914 +4.189064677946727 +4.868517260374518 +2.145198341547173 +5.9469461091347 +5.88772432287321 +4.258280909990726 +6.740134075161574 +4.6047650031608445 +3.9273659909763774 +4.291244045368331 +5.183827109845055 +5.696810583954774 +3.608472134466666 +4.169004030425733 +3.9965477474540467 +3.7571221568428017 +5.575534565152322 +5.0764208309825065 +5.3185446180363485 +5.157450995663762 +4.961815558094033 +5.687338919107788 +4.185906295178724 +4.382007991332045 +3.5280961455873676 +4.531506809760329 +4.5870808989545635 +4.1932173503939625 +7.213813469684956 +3.1814836225682908 +4.647297462243001 +5.223975935315364 +5.585001659776854 +5.120918864744974 +5.026571594328509 +6.348097968923147 +6.50023470519147 +5.712556147497515 +5.206026515338916 +5.749621140061565 +3.0714726650374033 +6.576852312067237 +7.873101351668455 +6.565410149266118 +6.42923283018875 +4.576910183319347 +4.891822273316748 +6.059357175219146 +3.5324494806223328 +5.02539429500825 +6.078049839679652 +4.395054417468175 +5.710022806162443 +5.577091376894232 +3.131753802875934 +5.4869998928318 +6.413992453090146 +6.368380820674971 +6.052068461844252 +5.480278219624535 +7.051236227914206 +4.748415087916627 +4.559239556696287 +4.780665068784505 +5.349223485326002 +4.522305152002386 +5.678473361027541 +6.734219964637535 +6.713281662687456 +6.22214905332774 +5.716102543806569 +6.336616632829493 +4.8399311234283635 +5.811391244308217 +4.3965755331585905 +5.297963707368242 +5.021726117260926 +4.497125082388555 +4.735667209277485 +6.048804114181307 +4.264048138073914 +7.181013762432201 +4.781684059171574 +5.779533272721499 +4.164421460389599 +3.6986809242837757 +4.8415576143236185 +4.924528568365373 +4.758045335351253 +5.628351489493518 +5.7967639104855415 +4.491988822693669 +2.776750089391839 +4.704679957076673 +4.039607278211126 +5.660350110077993 +4.955611684289963 +3.0641653090331107 +4.896101875253389 +3.6528358436331603 +5.552472713484715 +4.857203367367906 +6.698826102960048 +4.485176970803183 +3.359916665137426 +4.036570806638963 +3.48793689188148 +4.19214761961293 +3.9792199677002866 +6.760873252923419 +4.333561067615548 +5.018626873497648 +3.377671327382937 +4.426183834007672 +8.806961710969402 +5.2068790380550265 +5.483008251803699 +4.287267636533901 +5.931330465014387 +5.257260104496106 +4.623908313559696 +4.365112456604631 +5.600514050451817 +6.184093404453588 +4.9116883675838485 +6.019780977080248 +7.485280872899538 +3.5982660410679284 +4.232210941334369 +5.446496617538108 +6.487976163896015 +3.3960660696641156 +4.733884295853101 +5.352545256764909 +4.107747627715545 +3.949506252011129 +5.017847997679714 +4.24906287118262 +6.720303792581198 +5.832137142236708 +5.010377506040941 +6.458070081692352 +6.501223021355141 +4.612768564431788 +3.801740464538825 +4.469721893125596 +5.061713024524103 +6.872685648715577 +6.145993249521355 +4.638532388190405 +4.70471535512485 +6.417576222531886 +4.118577249932789 +4.431328683019108 +4.747884983644578 +4.495605382683923 +3.5972439735401767 +5.210796056817244 +2.9160129894156026 +3.4596190721900797 +3.972452277026154 +5.5237190584690214 +6.104711796147512 +4.787324556447702 +4.548676032231089 +6.356843891618192 +3.6148998030697816 +4.760679260180754 +4.698041709266617 +4.244003753086054 +5.595546833817678 +3.2784025595193267 +5.326657347561453 +6.213858447402109 +5.213011705084566 +7.232075882741927 +4.806572191866972 +4.680144670146755 +3.946663831660007 +3.6143084085883554 +7.789315918667734 +7.099181638561095 +3.672742516732736 +5.953845998789752 +6.28847712720666 +6.946689084108734 +6.325454389782429 +4.334133006331358 +3.039424552213366 +4.847328734611504 +4.249781519880862 +6.126424188695286 +3.3823135936253257 +6.3280255743100025 +6.150431997847958 +5.4226742397784005 +5.94864601826791 +4.425906835511732 +4.897545227095195 +6.26027333638832 +3.647858418615367 +5.276322437292433 +4.176876069581277 +4.346107259567459 +3.1384418250329995 +4.212957347421948 +4.637757894698186 +6.535589923573854 +5.193072556110316 +5.017309492685374 +5.1750466093509 +4.6381038872450375 +6.071604634493695 +4.357240286904764 +5.122391923621759 +6.556903940099011 +3.8006848201076036 +4.522363890394659 +6.2456602471550635 +5.829300589393535 +4.452647643620209 +5.371890862621703 +4.948677662633424 +5.661113800822228 +5.773629402623548 +6.139823333391851 +6.093004328053013 +5.362399773949667 +6.915042845179306 +5.394739321037944 +5.141451574018252 +5.053294383161769 +4.9834920876470665 +6.812746808763125 +3.5705971688428266 +4.664119854301202 +6.310596552569324 +5.674835228932813 +3.4639740645984807 +4.788956793299906 +5.1005488900135845 +4.534989910256703 +3.931742089464332 +3.572625977535623 +5.374511045697475 +3.859408179493194 +5.767053789854141 +5.1414168750827285 +4.7490168496463525 +7.481142748403815 +4.5189492261011575 +5.40235395980428 +6.700234279658992 +3.5063554778412183 +3.9690452319798735 +3.00630763890251 +7.23611608840341 +5.018006325958164 +4.523410620276403 +4.076684362167451 +5.916234395538267 +7.047286572236027 +3.8682363461132017 +4.390658924201581 +4.5292330092964255 +5.07906584568947 +4.671213490610071 +4.095193931403399 +4.054590162572947 +3.2227278245030027 +6.132646335444107 +2.8407359953623814 +4.7279370282096655 +5.593872406613741 +3.382542536766184 +5.85844025043303 +6.461000354065181 +3.4994741020969773 +4.132683344034104 +5.647894883473891 +5.011301190267978 +4.401435886120444 +3.3496957519609927 +6.119687677370172 +4.644762759286699 +4.5205629205178735 +3.0320051244977195 +4.596487037061894 +5.14520534308978 +5.282269168918912 +5.761372455401502 +4.148416743583162 +6.372742039103559 +5.649143130777574 +5.084494528193606 +4.811163551671385 +3.9806520282362476 +4.411511792047385 +4.670987670787611 +5.768451736319585 +3.984558689428816 +5.3293696591099975 +5.413539058295544 +6.40970782426591 +5.481145473625602 +4.36515208836978 +5.161811987273001 +3.963554978392394 +5.098946908474979 +7.786683053797615 +4.927631219070586 +5.524180021898693 +4.523736107490982 +3.557364094609177 +6.128701594561169 +4.2509207146594115 +3.944944115965259 +4.966138264389299 +5.394430219583224 +6.77531735530901 +4.128069102169693 +5.2683457909620355 +3.8872836447608496 +4.486696800422189 +6.5335585640393825 +4.916400608546338 +4.270979919569207 +4.311416898242187 +4.498167295277512 +6.132808180917634 +5.1041291367018875 +5.498388642491546 +5.584526454067219 +6.142894025331306 +4.944671156061267 +4.1686843376349945 +4.818977261651865 +6.235820918635881 +3.3212806573760028 +5.68435151611855 +6.189749316228399 +3.591267557367338 +5.043902793214377 +7.818905185451641 +4.768708643560666 +5.669288800286096 +6.398657810380692 +5.3717200778027605 +5.2573487416126525 +4.822935237131512 +6.182572962936934 +5.6072955002277105 +3.9675191626756288 +6.350858167126948 +6.283995295688788 +4.445782391191543 +6.877548745307459 +5.3208290700871315 +6.09847688940267 +6.434994026138841 +4.32779758193763 +7.2924037238697 +5.419935895280957 +4.288818201810987 +7.242433265647824 +4.947890367713541 +5.916218606455959 +6.490437527083841 +4.617582424838291 +7.957708355752131 +4.879357620439287 +6.103294400805588 +5.639488259504568 +4.335236791293937 +5.202542624850618 +5.4406339076225505 +5.782530244910674 +4.055314639567904 +5.552293301411749 +5.290496801505254 +4.022580394801182 +4.625571974654451 +5.5086593656510825 +4.913637297182931 +4.906396844626936 +6.439485089212817 +5.7942799739945325 +7.158136207286507 +4.280431104751667 +3.9206066719991517 +5.127791240556268 +6.70098532482022 +4.657147097255419 +4.524267698037553 +4.647534545829241 +4.839690189371444 +6.798322548455047 +5.094754599613737 +5.916399329150566 +5.767837713902285 +5.294550523894544 +4.161295164684424 +5.233358678928891 +5.546871474458429 +4.897048191655597 +3.939430251326603 +5.005888208270397 +3.2926576330038655 +4.0159694347757835 +5.056229917378723 +6.568879235955665 +4.497327615853924 +4.690014685240942 +4.746884105330737 +4.841384111334085 +4.14796180246966 +5.461902744235217 +5.869304766250897 +3.52354738655413 +5.582741221891035 +4.997825621424692 +5.439611672191855 +4.819402835865619 +5.76136287301575 +6.143090288547951 +5.976125217642891 +6.157007787875113 +4.912778652906766 +6.540414953620538 +3.8210262932626495 +4.727149320768898 +4.955255599543759 +5.7983414047818265 +5.167409288825197 +5.059246623397723 +6.965380962189423 +5.531311904089661 +5.4022568784996885 +4.344352255655229 +5.745261070226892 +5.118820012265567 +4.960430609470355 +4.487905086804239 +3.8537512154805835 +4.839114062528739 +5.367538410451759 +6.202050661574205 +4.001800559371117 +6.119617239220475 +3.236283913097008 +5.610134770285298 +5.757041556538514 +4.083399027093518 +5.055588718117847 +4.580930359877383 +6.545516697552579 +5.916270431823864 +3.761559453909257 +6.037777237143994 +7.29718541816528 +4.8965176227762734 +3.941358569293476 +3.9289815988008847 +3.2604315357316436 +4.639329221347256 +6.570997662310685 +3.851958625190621 +5.859087244914328 +4.647365626452129 +6.076778087850363 +4.627936340272149 +4.422345848512504 +6.2183675417422 +5.243889853389288 +5.90909311946919 +6.09260484846961 +6.0271781583360475 +6.913810502971691 +5.285845705409185 +5.318460367681083 +5.179580543035928 +4.6834977896331615 +5.382546996207003 +4.606307320228796 +4.038858683454586 +6.271279252908354 +6.0668723017439365 +5.713564644555386 +5.144428649779485 +5.2496039700779615 +3.8392027391676207 +4.7050632415088876 +7.137275712725372 +4.208879180827962 +4.81480733241727 +4.699941077536472 +4.423440083005291 +5.742161495602944 +4.592506326637019 +6.224046541049566 +4.611093653533141 +6.1166037746546165 +5.904004955760586 +5.589433336321981 +4.57489510266225 +5.500028469975376 +4.382479722617695 +4.257470376496386 +6.373209588018213 +5.375461447759072 +2.8662337475774584 +4.699832117278568 +3.102810935311515 +6.501460955698313 +4.550333534073201 +7.944860661426514 +5.69020177364993 +4.006199611798767 +5.11813341012065 +4.896479097282944 +4.816212778128475 +4.940296064591277 +5.419056166663748 +3.4659391357743616 +7.246324501631043 +5.907112751874067 +5.614502217435809 +4.750614593197476 +7.0951293897280205 +4.3819944682346055 +4.958360318480322 +4.962367933857186 +5.715499159595656 +5.220101872658552 +6.088622700649866 +5.491586360474799 +4.656477235994459 +3.8695533953710326 +3.7143742249025538 +3.7411936672155304 +6.603415889834424 +5.62928670505705 +5.5959396553858785 +5.6577330557176095 +6.003846653929077 +4.508563176717718 +5.549881486113916 +4.953305865372426 +6.203554032873964 +5.612208234244517 +4.854464793588011 +5.263585016371758 +3.897600440182904 +5.981235398882815 +5.531277293213279 +4.8817070690071445 +3.712544699529063 +3.513432242611217 +5.006035295792077 +7.124520658535316 +3.4782033127607037 +4.829578059223972 +5.742892584711905 +4.361333503197903 +4.601687049512891 +6.035189727259647 +4.711273209758127 +4.272043208125593 +4.447702393976457 +5.17487393756583 +4.741015989802225 +4.953808452791662 +4.6645084492292765 +4.276788530554644 +7.325515154525428 +4.602597440231014 +5.082884146093998 +3.068409439905545 +4.809983425115099 +3.8747882947708083 +4.893233436073575 +5.376932606908371 +6.239910432522629 +6.041695571547008 +5.317735375674715 +5.160517819092331 +5.283748111202239 +6.5357867130743745 +5.537247902605441 +5.4185896683530235 +5.287616337544387 +5.981700012459223 +5.992385624329782 +5.758772999982491 +4.599744432168506 +5.7237660286844605 +2.5862937961454855 +4.319918124665613 +7.566860260437548 +3.202784785619934 +6.67642720284947 +5.215802050091852 +5.452814592454087 +4.192858032386887 +5.299199379721475 +3.291677765243241 +4.632695766333648 +5.115714853147839 +4.996260485718097 +3.5271286032511773 +4.659715887897552 +6.587392147323261 +5.989132075359954 +3.8378063660060056 +4.975951043892332 +3.90853196371359 +5.708783809093124 +6.591895462100242 +5.653528117636727 +3.665428787393319 +4.324537690925271 +6.234413976864244 +4.053504794002944 +5.713371183460703 +4.670243561862966 +3.352660528859447 +4.020147292531281 +5.121933145078237 +4.282377411958472 +4.088770874857499 +4.275716553910016 +4.284046155337823 +6.449567142111275 +3.3275914286077084 +4.837717853228399 +5.261182985672333 +6.073443097165901 +5.40483608136289 +4.690566013556853 +4.222184746341714 +5.790245443382679 +5.020060832906476 +5.576527321711127 +5.340393035828579 +5.301460661931292 +5.076040366457228 +6.296482877500045 +3.037720796600903 +6.321850760102656 +5.701339165316606 +4.991940459105436 +5.758970102557518 +4.322111367356909 +5.721255109646473 +5.511881303620453 +4.9563635195228954 +6.861001584068987 +3.8299029968884195 +4.322974731453332 +5.3047403550360634 +6.0756269754391825 +6.117153630436378 +4.5085862451026495 +4.832132638553977 +4.699215334058029 +7.982648077178181 +3.303778194960711 +6.845166964779691 +5.175136241842978 +5.611538016661082 +4.293354218279116 +6.2617605857039775 +4.646868778200023 +5.596211970851805 +6.4731028962866635 +5.9737535333484795 +6.411386536458501 +2.7695062051965302 +3.5560570906765894 +5.451690061978083 +6.503535887841675 +4.695530301460264 +4.706120568510652 +2.800841111510871 +5.364729318170148 +5.1911558656154835 +5.947415408072919 +4.777513714112934 +4.596459418828304 +5.043317097051506 +5.174749896541634 +5.258257882159918 +3.887023257269741 +5.131383317673293 +5.843231353166214 +6.472487193651527 +5.763704927517821 +6.024396779444038 +4.926879229092987 +6.558645082464584 +5.447575064546803 +4.286751335276036 +3.9071252303818644 +4.618489035299945 +5.088217807208579 +3.808752600228301 +5.861810119867259 +4.033532296400091 +5.74542761207288 +4.925806147050348 +3.679404591586196 +4.05604604887352 +5.87881882930846 +4.513573760688276 +4.915009783906388 +3.654483449601882 +4.912095784340134 +3.3774256594506396 +4.188548007093734 +5.4860540834510445 +4.483111427918742 +6.091604204270534 +4.913639044459108 +6.347957296069254 +5.777137740280461 +4.996625717628335 +3.357832000765961 +4.529640780144531 +6.655383658310578 +5.187418414545693 +5.275067584707507 +5.50723064248028 +4.636201988408981 +4.947416066568987 +7.027581910469225 +4.570962245627946 +5.947355941474328 +4.7057667163042245 +4.786943520378938 +5.615852784022176 +4.645129057815488 +5.263882354785195 +3.844951724466573 +5.554260404852657 +4.684091248268045 +5.13336102667963 +3.417837773686996 +4.392489033666552 +6.270027300253521 +6.102372796945901 +4.219653651099504 +5.076173402237902 +4.383422445264855 +3.0437995085361025 +5.377941796580727 +6.276975902314367 +4.315133675763909 +5.507204150696545 +4.886780791403244 +7.147240935203286 +3.900457465197911 +5.102470142455588 +7.084247234995372 +5.457300111792919 +4.60867925423519 +6.2840312118540815 +7.236947706509271 +7.133509547170027 +4.3015318378968 +5.043756433592529 +5.108881706267525 +5.5240023845728645 +5.858632364389344 +5.981971317600007 +6.259948473084726 +4.062783955426871 +5.218852203995356 +3.8038254404258813 +4.758585778361602 +4.376196481713867 +4.458880802424765 +3.96326498727664 +3.6778134622710104 +4.374934998721925 +7.489468914416122 +5.700987063590436 +3.3100952240676955 +5.1696122166092415 +6.541584919841012 +4.4595571152023465 +4.366611842258099 +5.382259676070623 +4.7794428978336825 +3.757838857759169 +6.545307984939696 +4.881890171568036 +5.7063933726311165 +4.7730257133517116 +3.873677842944983 +3.840259191338565 +4.593661080441791 +4.511107632929962 +5.5385052402039605 +5.441167937479936 +5.984890322415174 +5.403820054129332 +5.148546201719365 +4.838476271562129 +6.2440438844133075 +3.9741885421050913 +6.327490860577795 +4.633940514497735 +5.232122748521683 +4.456999940494487 +5.576626928088951 +3.2818610857426584 +5.134684374559793 +4.602466559265273 +5.891324885962796 +5.517816321593768 +6.624687761337339 +5.2683180340267874 +4.662418552035468 +4.622236368091395 +5.536060664096081 +3.272870360657461 +3.9899131914173696 +5.121549579739896 +5.928806028927443 +4.259133981719825 +5.313734011651727 +5.635277610987355 +4.524627655490917 http://git-wip-us.apache.org/repos/asf/commons-math/blob/ccba0cfc/src/test/resources/org/apache/commons/math4/random/testData.txt ---------------------------------------------------------------------- diff --git a/src/test/resources/org/apache/commons/math4/random/testData.txt b/src/test/resources/org/apache/commons/math4/random/testData.txt deleted file mode 100644 index 4a10132..0000000 --- a/src/test/resources/org/apache/commons/math4/random/testData.txt +++ /dev/null @@ -1,1000 +0,0 @@ -4.038625496201205 -3.6485326248346936 -3.6651209675932845 -5.814896279561131 -5.384126469824717 -5.251190723365563 -4.465213440111648 -4.736608014129308 -5.566383814840726 -3.8872277480629114 -5.246598498086048 -3.7511487364188176 -6.733371385175343 -5.388632419618035 -6.036263402962769 -3.8105605069222905 -5.738599503606028 -4.994552792425298 -2.945504336988336 -4.095314381239862 -5.760924710543879 -3.889753944419315 -3.808861160991701 -5.084302950012555 -6.370292933705698 -5.9615431859588455 -4.8790354385481445 -4.068164663649243 -4.26491661935213 -5.911067976258105 -4.1316140545022115 -4.0479985648577115 -5.560425919351912 -5.7777862258090265 -4.6491664757229145 -5.322284766164775 -3.9643060017297818 -3.3374606422520423 -4.070818520139152 -5.162814971692577 -4.68959876937858 -5.729533112912969 -7.160010937980058 -5.154920628387343 -5.992604820701763 -5.317279162752973 -6.3388993007264 -4.38451874656454 -5.024014917973479 -3.7534872319471946 -5.042363342784924 -5.528064915562473 -4.645749024871185 -2.5572755520373756 -3.953716919712825 -3.479482401208564 -4.676100783445583 -4.602236051449888 -7.136692300563229 -3.2411466558895095 -4.188618724984135 -3.6403999184454445 -3.4104206071160776 -4.807963390662261 -4.039073733966207 -4.201017826594899 -4.381868005163936 -5.0635235098658935 -5.9840760229548735 -4.195400406346137 -5.649256144660377 -4.679088153774095 -4.169683379901892 -5.671299804360453 -6.159089864893807 -5.315685219074694 -6.3327786025390305 -5.57348047674858 -6.124073677151904 -4.599177837977919 -4.792320274522308 -5.670142645005109 -5.479531549270221 -4.7740747976996705 -4.99464290442364 -5.474337090086012 -5.232353744280737 -6.411298157619626 -4.757268066271138 -5.217779158748026 -5.07395379944902 -5.5759984176628965 -4.521182520094989 -5.738026445940142 -4.742204968903384 -4.670762511507285 -4.884925361512115 -3.2573282568729462 -4.548387675110013 -4.337950021352034 -3.7875587274144618 -3.6055586455442974 -7.361861332197413 -4.834945622163155 -6.019473054836964 -4.453304225895349 -3.258695681592217 -5.794572588445252 -3.706438851580378 -6.079300672323756 -4.828008457182361 -5.315261102210712 -3.981847695058188 -4.039767325290114 -5.790863349525503 -5.160671471128728 -4.835236459763434 -4.405281184174698 -6.036293520404953 -5.889067983920324 -4.645514887430352 -4.347244670972515 -6.447181244432997 -6.564267268399325 -5.1013992003059885 -4.123378901103389 -2.7101740954226283 -4.209200680057913 -5.085704888132955 -4.26810090240086 -5.54254381015526 -4.721081268239747 -6.890088385585999 -3.9983110493877954 -5.321006894021748 -4.316867375040024 -3.694764624577479 -5.453875921043777 -3.7798857421649927 -3.7228653199742623 -4.807698651287013 -3.953745662132547 -4.821189486606762 -4.453489509051613 -6.4517275696030225 -4.823034188588044 -4.722822481625316 -5.810689805246644 -2.79248319144007 -4.928162269110059 -4.661918219482871 -4.574123379557206 -5.241478194631993 -5.8345087395944155 -7.024415739565572 -3.5536052565954 -6.095523994939967 -5.714650096778455 -4.846741263282074 -6.002769586957791 -5.982356840660745 -5.045480762532407 -6.461077219605347 -4.806649266171423 -6.350848113862498 -6.402679936682352 -3.8190196431210914 -4.189064677946727 -4.868517260374518 -2.145198341547173 -5.9469461091347 -5.88772432287321 -4.258280909990726 -6.740134075161574 -4.6047650031608445 -3.9273659909763774 -4.291244045368331 -5.183827109845055 -5.696810583954774 -3.608472134466666 -4.169004030425733 -3.9965477474540467 -3.7571221568428017 -5.575534565152322 -5.0764208309825065 -5.3185446180363485 -5.157450995663762 -4.961815558094033 -5.687338919107788 -4.185906295178724 -4.382007991332045 -3.5280961455873676 -4.531506809760329 -4.5870808989545635 -4.1932173503939625 -7.213813469684956 -3.1814836225682908 -4.647297462243001 -5.223975935315364 -5.585001659776854 -5.120918864744974 -5.026571594328509 -6.348097968923147 -6.50023470519147 -5.712556147497515 -5.206026515338916 -5.749621140061565 -3.0714726650374033 -6.576852312067237 -7.873101351668455 -6.565410149266118 -6.42923283018875 -4.576910183319347 -4.891822273316748 -6.059357175219146 -3.5324494806223328 -5.02539429500825 -6.078049839679652 -4.395054417468175 -5.710022806162443 -5.577091376894232 -3.131753802875934 -5.4869998928318 -6.413992453090146 -6.368380820674971 -6.052068461844252 -5.480278219624535 -7.051236227914206 -4.748415087916627 -4.559239556696287 -4.780665068784505 -5.349223485326002 -4.522305152002386 -5.678473361027541 -6.734219964637535 -6.713281662687456 -6.22214905332774 -5.716102543806569 -6.336616632829493 -4.8399311234283635 -5.811391244308217 -4.3965755331585905 -5.297963707368242 -5.021726117260926 -4.497125082388555 -4.735667209277485 -6.048804114181307 -4.264048138073914 -7.181013762432201 -4.781684059171574 -5.779533272721499 -4.164421460389599 -3.6986809242837757 -4.8415576143236185 -4.924528568365373 -4.758045335351253 -5.628351489493518 -5.7967639104855415 -4.491988822693669 -2.776750089391839 -4.704679957076673 -4.039607278211126 -5.660350110077993 -4.955611684289963 -3.0641653090331107 -4.896101875253389 -3.6528358436331603 -5.552472713484715 -4.857203367367906 -6.698826102960048 -4.485176970803183 -3.359916665137426 -4.036570806638963 -3.48793689188148 -4.19214761961293 -3.9792199677002866 -6.760873252923419 -4.333561067615548 -5.018626873497648 -3.377671327382937 -4.426183834007672 -8.806961710969402 -5.2068790380550265 -5.483008251803699 -4.287267636533901 -5.931330465014387 -5.257260104496106 -4.623908313559696 -4.365112456604631 -5.600514050451817 -6.184093404453588 -4.9116883675838485 -6.019780977080248 -7.485280872899538 -3.5982660410679284 -4.232210941334369 -5.446496617538108 -6.487976163896015 -3.3960660696641156 -4.733884295853101 -5.352545256764909 -4.107747627715545 -3.949506252011129 -5.017847997679714 -4.24906287118262 -6.720303792581198 -5.832137142236708 -5.010377506040941 -6.458070081692352 -6.501223021355141 -4.612768564431788 -3.801740464538825 -4.469721893125596 -5.061713024524103 -6.872685648715577 -6.145993249521355 -4.638532388190405 -4.70471535512485 -6.417576222531886 -4.118577249932789 -4.431328683019108 -4.747884983644578 -4.495605382683923 -3.5972439735401767 -5.210796056817244 -2.9160129894156026 -3.4596190721900797 -3.972452277026154 -5.5237190584690214 -6.104711796147512 -4.787324556447702 -4.548676032231089 -6.356843891618192 -3.6148998030697816 -4.760679260180754 -4.698041709266617 -4.244003753086054 -5.595546833817678 -3.2784025595193267 -5.326657347561453 -6.213858447402109 -5.213011705084566 -7.232075882741927 -4.806572191866972 -4.680144670146755 -3.946663831660007 -3.6143084085883554 -7.789315918667734 -7.099181638561095 -3.672742516732736 -5.953845998789752 -6.28847712720666 -6.946689084108734 -6.325454389782429 -4.334133006331358 -3.039424552213366 -4.847328734611504 -4.249781519880862 -6.126424188695286 -3.3823135936253257 -6.3280255743100025 -6.150431997847958 -5.4226742397784005 -5.94864601826791 -4.425906835511732 -4.897545227095195 -6.26027333638832 -3.647858418615367 -5.276322437292433 -4.176876069581277 -4.346107259567459 -3.1384418250329995 -4.212957347421948 -4.637757894698186 -6.535589923573854 -5.193072556110316 -5.017309492685374 -5.1750466093509 -4.6381038872450375 -6.071604634493695 -4.357240286904764 -5.122391923621759 -6.556903940099011 -3.8006848201076036 -4.522363890394659 -6.2456602471550635 -5.829300589393535 -4.452647643620209 -5.371890862621703 -4.948677662633424 -5.661113800822228 -5.773629402623548 -6.139823333391851 -6.093004328053013 -5.362399773949667 -6.915042845179306 -5.394739321037944 -5.141451574018252 -5.053294383161769 -4.9834920876470665 -6.812746808763125 -3.5705971688428266 -4.664119854301202 -6.310596552569324 -5.674835228932813 -3.4639740645984807 -4.788956793299906 -5.1005488900135845 -4.534989910256703 -3.931742089464332 -3.572625977535623 -5.374511045697475 -3.859408179493194 -5.767053789854141 -5.1414168750827285 -4.7490168496463525 -7.481142748403815 -4.5189492261011575 -5.40235395980428 -6.700234279658992 -3.5063554778412183 -3.9690452319798735 -3.00630763890251 -7.23611608840341 -5.018006325958164 -4.523410620276403 -4.076684362167451 -5.916234395538267 -7.047286572236027 -3.8682363461132017 -4.390658924201581 -4.5292330092964255 -5.07906584568947 -4.671213490610071 -4.095193931403399 -4.054590162572947 -3.2227278245030027 -6.132646335444107 -2.8407359953623814 -4.7279370282096655 -5.593872406613741 -3.382542536766184 -5.85844025043303 -6.461000354065181 -3.4994741020969773 -4.132683344034104 -5.647894883473891 -5.011301190267978 -4.401435886120444 -3.3496957519609927 -6.119687677370172 -4.644762759286699 -4.5205629205178735 -3.0320051244977195 -4.596487037061894 -5.14520534308978 -5.282269168918912 -5.761372455401502 -4.148416743583162 -6.372742039103559 -5.649143130777574 -5.084494528193606 -4.811163551671385 -3.9806520282362476 -4.411511792047385 -4.670987670787611 -5.768451736319585 -3.984558689428816 -5.3293696591099975 -5.413539058295544 -6.40970782426591 -5.481145473625602 -4.36515208836978 -5.161811987273001 -3.963554978392394 -5.098946908474979 -7.786683053797615 -4.927631219070586 -5.524180021898693 -4.523736107490982 -3.557364094609177 -6.128701594561169 -4.2509207146594115 -3.944944115965259 -4.966138264389299 -5.394430219583224 -6.77531735530901 -4.128069102169693 -5.2683457909620355 -3.8872836447608496 -4.486696800422189 -6.5335585640393825 -4.916400608546338 -4.270979919569207 -4.311416898242187 -4.498167295277512 -6.132808180917634 -5.1041291367018875 -5.498388642491546 -5.584526454067219 -6.142894025331306 -4.944671156061267 -4.1686843376349945 -4.818977261651865 -6.235820918635881 -3.3212806573760028 -5.68435151611855 -6.189749316228399 -3.591267557367338 -5.043902793214377 -7.818905185451641 -4.768708643560666 -5.669288800286096 -6.398657810380692 -5.3717200778027605 -5.2573487416126525 -4.822935237131512 -6.182572962936934 -5.6072955002277105 -3.9675191626756288 -6.350858167126948 -6.283995295688788 -4.445782391191543 -6.877548745307459 -5.3208290700871315 -6.09847688940267 -6.434994026138841 -4.32779758193763 -7.2924037238697 -5.419935895280957 -4.288818201810987 -7.242433265647824 -4.947890367713541 -5.916218606455959 -6.490437527083841 -4.617582424838291 -7.957708355752131 -4.879357620439287 -6.103294400805588 -5.639488259504568 -4.335236791293937 -5.202542624850618 -5.4406339076225505 -5.782530244910674 -4.055314639567904 -5.552293301411749 -5.290496801505254 -4.022580394801182 -4.625571974654451 -5.5086593656510825 -4.913637297182931 -4.906396844626936 -6.439485089212817 -5.7942799739945325 -7.158136207286507 -4.280431104751667 -3.9206066719991517 -5.127791240556268 -6.70098532482022 -4.657147097255419 -4.524267698037553 -4.647534545829241 -4.839690189371444 -6.798322548455047 -5.094754599613737 -5.916399329150566 -5.767837713902285 -5.294550523894544 -4.161295164684424 -5.233358678928891 -5.546871474458429 -4.897048191655597 -3.939430251326603 -5.005888208270397 -3.2926576330038655 -4.0159694347757835 -5.056229917378723 -6.568879235955665 -4.497327615853924 -4.690014685240942 -4.746884105330737 -4.841384111334085 -4.14796180246966 -5.461902744235217 -5.869304766250897 -3.52354738655413 -5.582741221891035 -4.997825621424692 -5.439611672191855 -4.819402835865619 -5.76136287301575 -6.143090288547951 -5.976125217642891 -6.157007787875113 -4.912778652906766 -6.540414953620538 -3.8210262932626495 -4.727149320768898 -4.955255599543759 -5.7983414047818265 -5.167409288825197 -5.059246623397723 -6.965380962189423 -5.531311904089661 -5.4022568784996885 -4.344352255655229 -5.745261070226892 -5.118820012265567 -4.960430609470355 -4.487905086804239 -3.8537512154805835 -4.839114062528739 -5.367538410451759 -6.202050661574205 -4.001800559371117 -6.119617239220475 -3.236283913097008 -5.610134770285298 -5.757041556538514 -4.083399027093518 -5.055588718117847 -4.580930359877383 -6.545516697552579 -5.916270431823864 -3.761559453909257 -6.037777237143994 -7.29718541816528 -4.8965176227762734 -3.941358569293476 -3.9289815988008847 -3.2604315357316436 -4.639329221347256 -6.570997662310685 -3.851958625190621 -5.859087244914328 -4.647365626452129 -6.076778087850363 -4.627936340272149 -4.422345848512504 -6.2183675417422 -5.243889853389288 -5.90909311946919 -6.09260484846961 -6.0271781583360475 -6.913810502971691 -5.285845705409185 -5.318460367681083 -5.179580543035928 -4.6834977896331615 -5.382546996207003 -4.606307320228796 -4.038858683454586 -6.271279252908354 -6.0668723017439365 -5.713564644555386 -5.144428649779485 -5.2496039700779615 -3.8392027391676207 -4.7050632415088876 -7.137275712725372 -4.208879180827962 -4.81480733241727 -4.699941077536472 -4.423440083005291 -5.742161495602944 -4.592506326637019 -6.224046541049566 -4.611093653533141 -6.1166037746546165 -5.904004955760586 -5.589433336321981 -4.57489510266225 -5.500028469975376 -4.382479722617695 -4.257470376496386 -6.373209588018213 -5.375461447759072 -2.8662337475774584 -4.699832117278568 -3.102810935311515 -6.501460955698313 -4.550333534073201 -7.944860661426514 -5.69020177364993 -4.006199611798767 -5.11813341012065 -4.896479097282944 -4.816212778128475 -4.940296064591277 -5.419056166663748 -3.4659391357743616 -7.246324501631043 -5.907112751874067 -5.614502217435809 -4.750614593197476 -7.0951293897280205 -4.3819944682346055 -4.958360318480322 -4.962367933857186 -5.715499159595656 -5.220101872658552 -6.088622700649866 -5.491586360474799 -4.656477235994459 -3.8695533953710326 -3.7143742249025538 -3.7411936672155304 -6.603415889834424 -5.62928670505705 -5.5959396553858785 -5.6577330557176095 -6.003846653929077 -4.508563176717718 -5.549881486113916 -4.953305865372426 -6.203554032873964 -5.612208234244517 -4.854464793588011 -5.263585016371758 -3.897600440182904 -5.981235398882815 -5.531277293213279 -4.8817070690071445 -3.712544699529063 -3.513432242611217 -5.006035295792077 -7.124520658535316 -3.4782033127607037 -4.829578059223972 -5.742892584711905 -4.361333503197903 -4.601687049512891 -6.035189727259647 -4.711273209758127 -4.272043208125593 -4.447702393976457 -5.17487393756583 -4.741015989802225 -4.953808452791662 -4.6645084492292765 -4.276788530554644 -7.325515154525428 -4.602597440231014 -5.082884146093998 -3.068409439905545 -4.809983425115099 -3.8747882947708083 -4.893233436073575 -5.376932606908371 -6.239910432522629 -6.041695571547008 -5.317735375674715 -5.160517819092331 -5.283748111202239 -6.5357867130743745 -5.537247902605441 -5.4185896683530235 -5.287616337544387 -5.981700012459223 -5.992385624329782 -5.758772999982491 -4.599744432168506 -5.7237660286844605 -2.5862937961454855 -4.319918124665613 -7.566860260437548 -3.202784785619934 -6.67642720284947 -5.215802050091852 -5.452814592454087 -4.192858032386887 -5.299199379721475 -3.291677765243241 -4.632695766333648 -5.115714853147839 -4.996260485718097 -3.5271286032511773 -4.659715887897552 -6.587392147323261 -5.989132075359954 -3.8378063660060056 -4.975951043892332 -3.90853196371359 -5.708783809093124 -6.591895462100242 -5.653528117636727 -3.665428787393319 -4.324537690925271 -6.234413976864244 -4.053504794002944 -5.713371183460703 -4.670243561862966 -3.352660528859447 -4.020147292531281 -5.121933145078237 -4.282377411958472 -4.088770874857499 -4.275716553910016 -4.284046155337823 -6.449567142111275 -3.3275914286077084 -4.837717853228399 -5.261182985672333 -6.073443097165901 -5.40483608136289 -4.690566013556853 -4.222184746341714 -5.790245443382679 -5.020060832906476 -5.576527321711127 -5.340393035828579 -5.301460661931292 -5.076040366457228 -6.296482877500045 -3.037720796600903 -6.321850760102656 -5.701339165316606 -4.991940459105436 -5.758970102557518 -4.322111367356909 -5.721255109646473 -5.511881303620453 -4.9563635195228954 -6.861001584068987 -3.8299029968884195 -4.322974731453332 -5.3047403550360634 -6.0756269754391825 -6.117153630436378 -4.5085862451026495 -4.832132638553977 -4.699215334058029 -7.982648077178181 -3.303778194960711 -6.845166964779691 -5.175136241842978 -5.611538016661082 -4.293354218279116 -6.2617605857039775 -4.646868778200023 -5.596211970851805 -6.4731028962866635 -5.9737535333484795 -6.411386536458501 -2.7695062051965302 -3.5560570906765894 -5.451690061978083 -6.503535887841675 -4.695530301460264 -4.706120568510652 -2.800841111510871 -5.364729318170148 -5.1911558656154835 -5.947415408072919 -4.777513714112934 -4.596459418828304 -5.043317097051506 -5.174749896541634 -5.258257882159918 -3.887023257269741 -5.131383317673293 -5.843231353166214 -6.472487193651527 -5.763704927517821 -6.024396779444038 -4.926879229092987 -6.558645082464584 -5.447575064546803 -4.286751335276036 -3.9071252303818644 -4.618489035299945 -5.088217807208579 -3.808752600228301 -5.861810119867259 -4.033532296400091 -5.74542761207288 -4.925806147050348 -3.679404591586196 -4.05604604887352 -5.87881882930846 -4.513573760688276 -4.915009783906388 -3.654483449601882 -4.912095784340134 -3.3774256594506396 -4.188548007093734 -5.4860540834510445 -4.483111427918742 -6.091604204270534 -4.913639044459108 -6.347957296069254 -5.777137740280461 -4.996625717628335 -3.357832000765961 -4.529640780144531 -6.655383658310578 -5.187418414545693 -5.275067584707507 -5.50723064248028 -4.636201988408981 -4.947416066568987 -7.027581910469225 -4.570962245627946 -5.947355941474328 -4.7057667163042245 -4.786943520378938 -5.615852784022176 -4.645129057815488 -5.263882354785195 -3.844951724466573 -5.554260404852657 -4.684091248268045 -5.13336102667963 -3.417837773686996 -4.392489033666552 -6.270027300253521 -6.102372796945901 -4.219653651099504 -5.076173402237902 -4.383422445264855 -3.0437995085361025 -5.377941796580727 -6.276975902314367 -4.315133675763909 -5.507204150696545 -4.886780791403244 -7.147240935203286 -3.900457465197911 -5.102470142455588 -7.084247234995372 -5.457300111792919 -4.60867925423519 -6.2840312118540815 -7.236947706509271 -7.133509547170027 -4.3015318378968 -5.043756433592529 -5.108881706267525 -5.5240023845728645 -5.858632364389344 -5.981971317600007 -6.259948473084726 -4.062783955426871 -5.218852203995356 -3.8038254404258813 -4.758585778361602 -4.376196481713867 -4.458880802424765 -3.96326498727664 -3.6778134622710104 -4.374934998721925 -7.489468914416122 -5.700987063590436 -3.3100952240676955 -5.1696122166092415 -6.541584919841012 -4.4595571152023465 -4.366611842258099 -5.382259676070623 -4.7794428978336825 -3.757838857759169 -6.545307984939696 -4.881890171568036 -5.7063933726311165 -4.7730257133517116 -3.873677842944983 -3.840259191338565 -4.593661080441791 -4.511107632929962 -5.5385052402039605 -5.441167937479936 -5.984890322415174 -5.403820054129332 -5.148546201719365 -4.838476271562129 -6.2440438844133075 -3.9741885421050913 -6.327490860577795 -4.633940514497735 -5.232122748521683 -4.456999940494487 -5.576626928088951 -3.2818610857426584 -5.134684374559793 -4.602466559265273 -5.891324885962796 -5.517816321593768 -6.624687761337339 -5.2683180340267874 -4.662418552035468 -4.622236368091395 -5.536060664096081 -3.272870360657461 -3.9899131914173696 -5.121549579739896 -5.928806028927443 -4.259133981719825 -5.313734011651727 -5.635277610987355 -4.524627655490917