Browse Source

combinatorics: variations

Signed-off-by: Christoph Ruegg <git@cdrnet.ch>
la-knuth
Christoph Ruegg 17 years ago
parent
commit
c0f8112267
  1. 4
      src/Numerics/Combinatorics.cs
  2. 24
      src/UnitTests/CombinatoricsTests/CombinatoricsCountingTest.cs

4
src/Numerics/Combinatorics.cs

@ -48,7 +48,7 @@ namespace MathNet.Numerics
return 0; return 0;
} }
throw new NotImplementedException(); return Math.Floor(0.5 + Math.Exp(SpecialFunctions.FactorialLn(n) - SpecialFunctions.FactorialLn(n - k)));
} }
/// <summary> /// <summary>
@ -67,4 +67,4 @@ namespace MathNet.Numerics
return Math.Pow(n, k); return Math.Pow(n, k);
} }
} }
} }

24
src/UnitTests/CombinatoricsTests/CombinatoricsCountingTest.cs

@ -33,7 +33,7 @@ namespace MathNet.Numerics.UnitTests.CombinatoricsTests
[TestFixture] [TestFixture]
public class CombinatoricsCountingTest public class CombinatoricsCountingTest
{ {
[Test, Ignore("Depending on Special Functions")] [Test]
[Row(0, 0, 1)] [Row(0, 0, 1)]
[Row(1, 0, 1)] [Row(1, 0, 1)]
[Row(10, 0, 1)] [Row(10, 0, 1)]
@ -44,7 +44,10 @@ namespace MathNet.Numerics.UnitTests.CombinatoricsTests
[Row(10, 10, 3628800)] [Row(10, 10, 3628800)]
public void CanCountVariations(int n, int k, long expected) public void CanCountVariations(int n, int k, long expected)
{ {
Assert.AreEqual(expected, Combinatorics.Variations(n, k), "Count the number of variations without repetition"); Assert.AreEqual(
expected,
Combinatorics.Variations(n, k),
"Count the number of variations without repetition");
} }
[Test] [Test]
@ -56,7 +59,10 @@ namespace MathNet.Numerics.UnitTests.CombinatoricsTests
[Row(-1, 1)] [Row(-1, 1)]
public void OutOfRangeVariationsMustCountToZero(int n, int k) public void OutOfRangeVariationsMustCountToZero(int n, int k)
{ {
Assert.AreEqual(0, Combinatorics.Variations(n, k), "The number of variations without repetition but out of the range must be 0."); Assert.AreEqual(
0,
Combinatorics.Variations(n, k),
"The number of variations without repetition but out of the range must be 0.");
} }
[Test] [Test]
@ -71,7 +77,10 @@ namespace MathNet.Numerics.UnitTests.CombinatoricsTests
[Row(10, 11, 100000000000)] [Row(10, 11, 100000000000)]
public void CanCountVariationsWithRepetition(int n, int k, long expected) public void CanCountVariationsWithRepetition(int n, int k, long expected)
{ {
Assert.AreEqual(expected, Combinatorics.VariationsWithRepetition(n, k), "Count the number of variations with repetition"); Assert.AreEqual(
expected,
Combinatorics.VariationsWithRepetition(n, k),
"Count the number of variations with repetition");
} }
[Test] [Test]
@ -82,7 +91,10 @@ namespace MathNet.Numerics.UnitTests.CombinatoricsTests
[Row(-1, 1)] [Row(-1, 1)]
public void OutOfRangeVariationsWithRepetitionMustCountToZero(int n, int k) public void OutOfRangeVariationsWithRepetitionMustCountToZero(int n, int k)
{ {
Assert.AreEqual(0, Combinatorics.VariationsWithRepetition(n, k), "The number of variations with repetition but out of the range must be 0."); Assert.AreEqual(
0,
Combinatorics.VariationsWithRepetition(n, k),
"The number of variations with repetition but out of the range must be 0.");
} }
} }
} }
Loading…
Cancel
Save