Browse Source

Merge pull request #77 from tibel/lazy_median

Lazy load DescriptiveStatistics.Median, fix some IO test i18n issues
v2
Christoph Ruegg 14 years ago
parent
commit
5099fe8444
  1. 1
      src/Examples/Statistics.cs
  2. 11
      src/Numerics/Statistics/DescriptiveStatistics.cs
  3. 2
      src/UnitTests/ComplexTests/Complex32Test.cs
  4. 13
      src/UnitTests/LinearAlgebraTests/Complex/IO/DelimitedWriterTests.cs
  5. 13
      src/UnitTests/LinearAlgebraTests/Complex32/IO/DelimitedWriterTests.cs
  6. 13
      src/UnitTests/LinearAlgebraTests/Double/IO/DelimitedWriterTests.cs
  7. 13
      src/UnitTests/LinearAlgebraTests/Single/IO/DelimitedWriterTests.cs
  8. 6
      src/UnitTests/StatisticsTests/DescriptiveStatisticsTests.cs

1
src/Examples/Statistics.cs

@ -105,7 +105,6 @@ namespace Examples
Console.WriteLine(@"{0} - Largest element", descriptiveStatistics.Maximum.ToString(" #0.00000;-#0.00000"));
Console.WriteLine(@"{0} - Smallest element", descriptiveStatistics.Minimum.ToString(" #0.00000;-#0.00000"));
Console.WriteLine(@"{0} - Mean", descriptiveStatistics.Mean.ToString(" #0.00000;-#0.00000"));
Console.WriteLine(@"{0} - Median", descriptiveStatistics.Median.ToString(" #0.00000;-#0.00000"));
Console.WriteLine(@"{0} - Variance", descriptiveStatistics.Variance.ToString(" #0.00000;-#0.00000"));
Console.WriteLine(@"{0} - Standard deviation", descriptiveStatistics.StandardDeviation.ToString(" #0.00000;-#0.00000"));
Console.WriteLine(@"{0} - Skewness", descriptiveStatistics.Skewness.ToString(" #0.00000;-#0.00000"));

11
src/Numerics/Statistics/DescriptiveStatistics.cs

@ -87,7 +87,7 @@ namespace MathNet.Numerics.Statistics
Compute(data);
}
Median = data.Median();
_medianLazy = new Lazy<double>(() => data.Median());
}
/// <summary>
@ -119,7 +119,7 @@ namespace MathNet.Numerics.Statistics
Compute(data);
}
Median = data.Median();
_medianLazy = new Lazy<double>(() => data.Median());
}
/// <summary>
@ -158,7 +158,12 @@ namespace MathNet.Numerics.Statistics
/// </summary>
/// <value>The sample median.</value>
[Obsolete("Dropped in future versions for performance reasons. Please use Statistics.Median instead.")]
public double Median { get; private set; }
public double Median
{
get { return _medianLazy.Value; }
}
readonly Lazy<double> _medianLazy;
/// <summary>
/// Gets the sample kurtosis.

2
src/UnitTests/ComplexTests/Complex32Test.cs

@ -510,8 +510,10 @@ namespace MathNet.Numerics.UnitTests.ComplexTests
[Test]
public void CanTestForEqualityUsingOperators()
{
#pragma warning disable 1718
Assert.That(Complex32.NaN != Complex32.NaN);
Assert.That(Complex32.PositiveInfinity == Complex32.PositiveInfinity);
#pragma warning restore 1718
Assert.That(new Complex32(1.1f, -2.2f) == new Complex32(1.1f, -2.2f));
Assert.That(new Complex32(-1.1f, 2.2f) != new Complex32(1.1f, -2.2f));
}

13
src/UnitTests/LinearAlgebraTests/Complex/IO/DelimitedWriterTests.cs

@ -47,7 +47,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.IO
public void CanWriteCommaDelimitedData()
{
var matrix = new DenseMatrix(new[,] { { new Complex(1.1, 1.1), new Complex(2.2, 2.2), new Complex(3.3, 3.3) }, { new Complex(4.4, 4.4), new Complex(5.5, 5.5), new Complex(6.6, 6.6) }, { new Complex(7.7, 7.7), new Complex(8.8, 8.8), new Complex(9.9, 9.9) } });
var writer = new DelimitedWriter(',');
var writer = new DelimitedWriter(',')
{
CultureInfo = CultureInfo.InvariantCulture
};
var stream = new MemoryStream();
writer.WriteMatrix(matrix, stream);
var data = stream.ToArray();
@ -89,7 +92,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.IO
public void CanWriteSpaceDelimitedData()
{
var matrix = new DenseMatrix(new[,] { { new Complex(1.1, 1.1), new Complex(2.2, 2.2), new Complex(3.3, 3.3) }, { new Complex(4.4, 4.4), new Complex(5.5, 5.5), new Complex(6.6, 6.6) }, { new Complex(7.7, 7.7), new Complex(8.8, 8.8), new Complex(9.9, 9.9) } });
var writer = new DelimitedWriter(' ');
var writer = new DelimitedWriter(' ')
{
CultureInfo = CultureInfo.InvariantCulture
};
var stream = new MemoryStream();
writer.WriteMatrix(matrix, stream);
var data = stream.ToArray();
@ -111,7 +117,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.IO
var headers = new[] { "a", "b", "c" };
var writer = new DelimitedWriter('\t')
{
ColumnHeaders = headers
ColumnHeaders = headers,
CultureInfo = CultureInfo.InvariantCulture
};
var stream = new MemoryStream();
writer.WriteMatrix(matrix, stream);

13
src/UnitTests/LinearAlgebraTests/Complex32/IO/DelimitedWriterTests.cs

@ -47,7 +47,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.IO
public void CanWriteCommaDelimitedData()
{
var matrix = new DenseMatrix(new[,] { { new Complex32(1.1f, 1.1f), new Complex32(2.2f, 2.2f), new Complex32(3.3f, 3.3f) }, { new Complex32(4.4f, 4.4f), new Complex32(5.5f, 5.5f), new Complex32(6.6f, 6.6f) }, { new Complex32(7.7f, 7.7f), new Complex32(8.8f, 8.8f), new Complex32(9.9f, 9.9f) } });
var writer = new DelimitedWriter(',');
var writer = new DelimitedWriter(',')
{
CultureInfo = CultureInfo.InvariantCulture
};
var stream = new MemoryStream();
writer.WriteMatrix(matrix, stream);
var data = stream.ToArray();
@ -89,7 +92,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.IO
public void CanWriteSpaceDelimitedData()
{
var matrix = new DenseMatrix(new[,] { { new Complex32(1.1f, 1.1f), new Complex32(2.2f, 2.2f), new Complex32(3.3f, 3.3f) }, { new Complex32(4.4f, 4.4f), new Complex32(5.5f, 5.5f), new Complex32(6.6f, 6.6f) }, { new Complex32(7.7f, 7.7f), new Complex32(8.8f, 8.8f), new Complex32(9.9f, 9.9f) } });
var writer = new DelimitedWriter(' ');
var writer = new DelimitedWriter(' ')
{
CultureInfo = CultureInfo.InvariantCulture
};
var stream = new MemoryStream();
writer.WriteMatrix(matrix, stream);
var data = stream.ToArray();
@ -111,7 +117,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.IO
var headers = new[] { "a", "b", "c" };
var writer = new DelimitedWriter('\t')
{
ColumnHeaders = headers
ColumnHeaders = headers,
CultureInfo = CultureInfo.InvariantCulture
};
var stream = new MemoryStream();
writer.WriteMatrix(matrix, stream);

13
src/UnitTests/LinearAlgebraTests/Double/IO/DelimitedWriterTests.cs

@ -46,7 +46,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.IO
public void CanWriteCommaDelimitedData()
{
var matrix = new DenseMatrix(new[,] { { 1.1, 2.2, 3.3 }, { 4.4, 5.5, 6.6 }, { 7.7, 8.8, 9.9 } });
var writer = new DelimitedWriter(',');
var writer = new DelimitedWriter(',')
{
CultureInfo = CultureInfo.InvariantCulture
};
var stream = new MemoryStream();
writer.WriteMatrix(matrix, stream);
var data = stream.ToArray();
@ -88,7 +91,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.IO
public void CanWriteSpaceDelimitedData()
{
var matrix = new SparseMatrix(new[,] { { 1.1, 0, 0 }, { 0, 5.5, 0 }, { 0, 0, 9.9 } });
var writer = new DelimitedWriter(' ');
var writer = new DelimitedWriter(' ')
{
CultureInfo = CultureInfo.InvariantCulture
};
var stream = new MemoryStream();
writer.WriteMatrix(matrix, stream);
var data = stream.ToArray();
@ -110,7 +116,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.IO
var headers = new[] { "a", "b", "c" };
var writer = new DelimitedWriter('\t')
{
ColumnHeaders = headers
ColumnHeaders = headers,
CultureInfo = CultureInfo.InvariantCulture
};
var stream = new MemoryStream();
writer.WriteMatrix(matrix, stream);

13
src/UnitTests/LinearAlgebraTests/Single/IO/DelimitedWriterTests.cs

@ -45,7 +45,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.IO
public void CanWriteCommaDelimitedData()
{
var matrix = new DenseMatrix(new[,] { { 1.1f, 2.2f, 3.3f }, { 4.4f, 5.5f, 6.6f }, { 7.7f, 8.8f, 9.9f } });
var writer = new DelimitedWriter(',');
var writer = new DelimitedWriter(',')
{
CultureInfo = CultureInfo.InvariantCulture
};
var stream = new MemoryStream();
writer.WriteMatrix(matrix, stream);
var data = stream.ToArray();
@ -87,7 +90,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.IO
public void CanWriteSpaceDelimitedData()
{
var matrix = new SparseMatrix(new[,] { { 1.1f, 0, 0 }, { 0, 5.5f, 0 }, { 0, 0, 9.9f } });
var writer = new DelimitedWriter(' ');
var writer = new DelimitedWriter(' ')
{
CultureInfo = CultureInfo.InvariantCulture
};
var stream = new MemoryStream();
writer.WriteMatrix(matrix, stream);
var data = stream.ToArray();
@ -109,7 +115,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.IO
var headers = new[] { "a", "b", "c" };
var writer = new DelimitedWriter('\t')
{
ColumnHeaders = headers
ColumnHeaders = headers,
CultureInfo = CultureInfo.InvariantCulture
};
var stream = new MemoryStream();
writer.WriteMatrix(matrix, stream);

6
src/UnitTests/StatisticsTests/DescriptiveStatisticsTests.cs

@ -114,7 +114,6 @@ namespace MathNet.Numerics.UnitTests.StatisticsTests
AssertHelpers.AlmostEqual(data.StandardDeviation, stats.StandardDeviation, digits);
AssertHelpers.AlmostEqual(skewness, stats.Skewness, 7);
AssertHelpers.AlmostEqual(kurtosis, stats.Kurtosis, 7);
AssertHelpers.AlmostEqual(median, stats.Median, 15);
Assert.AreEqual(stats.Minimum, min);
Assert.AreEqual(stats.Maximum, max);
Assert.AreEqual(stats.Count, count);
@ -146,7 +145,6 @@ namespace MathNet.Numerics.UnitTests.StatisticsTests
AssertHelpers.AlmostEqual(data.StandardDeviation, stats.StandardDeviation, 15);
AssertHelpers.AlmostEqual(skewness, stats.Skewness, 9);
AssertHelpers.AlmostEqual(kurtosis, stats.Kurtosis, 9);
AssertHelpers.AlmostEqual(median, stats.Median, 15);
Assert.AreEqual(stats.Minimum, min);
Assert.AreEqual(stats.Maximum, max);
Assert.AreEqual(stats.Count, count);
@ -179,7 +177,6 @@ namespace MathNet.Numerics.UnitTests.StatisticsTests
AssertHelpers.AlmostEqual(data.StandardDeviation, stats.StandardDeviation, digits);
AssertHelpers.AlmostEqual(skewness, stats.Skewness, 7);
AssertHelpers.AlmostEqual(kurtosis, stats.Kurtosis, 7);
AssertHelpers.AlmostEqual(median, stats.Median, 15);
Assert.AreEqual(stats.Minimum, min);
Assert.AreEqual(stats.Maximum, max);
Assert.AreEqual(stats.Count, count);
@ -212,7 +209,6 @@ namespace MathNet.Numerics.UnitTests.StatisticsTests
AssertHelpers.AlmostEqual(data.StandardDeviation, stats.StandardDeviation, digits);
AssertHelpers.AlmostEqual(skewness, stats.Skewness, 7);
AssertHelpers.AlmostEqual(kurtosis, stats.Kurtosis, 7);
AssertHelpers.AlmostEqual(median, stats.Median, 15);
Assert.AreEqual(stats.Minimum, min);
Assert.AreEqual(stats.Maximum, max);
Assert.AreEqual(stats.Count, count);
@ -244,7 +240,6 @@ namespace MathNet.Numerics.UnitTests.StatisticsTests
AssertHelpers.AlmostEqual(data.StandardDeviation, stats.StandardDeviation, 15);
AssertHelpers.AlmostEqual(skewness, stats.Skewness, 9);
AssertHelpers.AlmostEqual(kurtosis, stats.Kurtosis, 9);
AssertHelpers.AlmostEqual(median, stats.Median, 15);
Assert.AreEqual(stats.Minimum, min);
Assert.AreEqual(stats.Maximum, max);
Assert.AreEqual(stats.Count, count);
@ -277,7 +272,6 @@ namespace MathNet.Numerics.UnitTests.StatisticsTests
AssertHelpers.AlmostEqual(data.StandardDeviation, stats.StandardDeviation, digits);
AssertHelpers.AlmostEqual(skewness, stats.Skewness, 7);
AssertHelpers.AlmostEqual(kurtosis, stats.Kurtosis, 7);
AssertHelpers.AlmostEqual(median, stats.Median, 15);
Assert.AreEqual(stats.Minimum, min);
Assert.AreEqual(stats.Maximum, max);
Assert.AreEqual(stats.Count, count);

Loading…
Cancel
Save