コード例 #1
0
        public static IComplexPolynomial ExtendedGCD(IComplexPolynomial left, IComplexPolynomial right, Complex mod)
        {
            IComplexPolynomial rem = ComplexPolynomial.Two;
            IComplexPolynomial a   = left.Clone();
            IComplexPolynomial b   = right.Clone();
            IComplexPolynomial c   = ComplexPolynomial.Zero;


            while (c.CompareTo(ComplexPolynomial.Zero) != 0 && rem.CompareTo(ComplexPolynomial.Zero) != 0 && rem.CompareTo(ComplexPolynomial.One) != 0)
            {
                c = ComplexPolynomial.Divide(a, b, out rem);

                a = b;
                b = rem;
            }

            if (rem.CompareTo(ComplexPolynomial.Zero) != 0 || rem.CompareTo(ComplexPolynomial.One) != 0)
            {
                return(ComplexPolynomial.One);
            }

            return(rem);
        }
コード例 #2
0
        public static IComplexPolynomial Divide(IComplexPolynomial left, IComplexPolynomial right)
        {
            IComplexPolynomial remainder = ComplexPolynomial.Zero;

            return(ComplexPolynomial.Divide(left, right, out remainder));
        }