public void FactorisationPxFx_Test() { var p = 3; var _GF3 = new ZnRing(p); var _ring = new PxFx <long, ZnRing>( _GF3, new Polynom <long, ZnRing>(_GF3, new long[] { 2, 2, 1 })); var _mod = new Polynom <Polynom <long, ZnRing>, PxFx <long, ZnRing> >(_ring, new Polynom <long, ZnRing>[] { _ring.One, _ring.One, _ring.Zero, _ring.One, new Polynom <long, ZnRing>(_GF3, new long[] { 0, 1 }) }); var _pfx = new PxFx <Polynom <long, ZnRing>, PxFx <long, ZnRing> >(_ring, _mod); foreach (var _pol in _pfx) { //var _mults = _pol.Factorisation(); var _mults = Polynom <long, ZnRing> .FactorisationPxFx(_pol); var _prod = new Polynom <Polynom <long, ZnRing>, PxFx <long, ZnRing> >( _ring, new Polynom <long, ZnRing>[] { _ring.One }); foreach (var _mult in _mults) { _prod *= _mult; } if (!_pol.Equals(_prod)) { Assert.AreEqual(_pol, _prod, String.Format("Input: {0}", _pol.TexString("y", false))); } } }