static KotterAlgorithmBasedBuilderTests() { var gf5 = new PrimeOrderField(5); var gf8 = new PrimePowerOrderField(8, new Polynomial(new PrimeOrderField(2), 1, 1, 0, 1)); var gf27 = new PrimePowerOrderField(27, new Polynomial(new PrimeOrderField(3), 2, 2, 0, 1)); var degreeWeight = new Tuple <int, int>(1, 2); SuccessConstructionTestsData = new TheoryData <InterpolationPolynomialBuilderTestCase> { new InterpolationPolynomialBuilderTestCase { DegreeWeight = degreeWeight, MaxWeightedDegree = 3, Roots = new[] { Tuple.Create(gf5.One(), gf5.CreateElement(3)), Tuple.Create(gf5.CreateElement(2), gf5.CreateElement(4)) } }, new InterpolationPolynomialBuilderTestCase { DegreeWeight = degreeWeight, MaxWeightedDegree = 3, Roots = new[] { Tuple.Create(gf8.CreateElement(3), gf8.CreateElement(7)), Tuple.Create(gf8.CreateElement(5), gf8.CreateElement(4)) } }, new InterpolationPolynomialBuilderTestCase { DegreeWeight = degreeWeight, MaxWeightedDegree = 3, Roots = new[] { Tuple.Create(gf27.CreateElement(15), gf27.CreateElement(26)), Tuple.Create(gf27.CreateElement(10), gf27.CreateElement(9)) } } }; FailConstructionTestsData = new TheoryData <InterpolationPolynomialBuilderTestCase> { new InterpolationPolynomialBuilderTestCase { DegreeWeight = degreeWeight, MaxWeightedDegree = 2, Roots = new[] { Tuple.Create(gf27.One(), gf27.CreateElement(16)), Tuple.Create(gf27.CreateElement(13), gf27.CreateElement(26)), Tuple.Create(gf27.CreateElement(10), gf27.CreateElement(15)), Tuple.Create(gf27.CreateElement(8), gf27.CreateElement(5)) } } }; }
public FieldElement[] Decode(FieldElement[] noisyCodeword) { return(new[] { _gf2.One(), _gf2.One() }); }