static void Main(string[] args)
        {
            Polynomial result=null;
            Polynomial a = new Polynomial(new double[] { 3, 2, 1 });
            Polynomial b = new Polynomial(new double[] { 5, 6, 7 });
            Polynomial copy=new Polynomial(a);
            Polynomial expectedResult = new Polynomial(new double[] { 8, 8, 8 });

            result = a - result;
            Console.WriteLine(result.Equals(expectedResult));
            Console.WriteLine("adgfsdklgf");
            Console.ReadLine();

        }
 public Polynomial(Polynomial obj): this(obj.m_CoefficientArray) { }
        public bool Equals(Polynomial obj) {
            if (ReferenceEquals(null, obj)) return false;
            if (ReferenceEquals(this, obj)) return true;

            return EqualsCoefficientArrays(m_CoefficientArray, obj.m_CoefficientArray);
        }
 /// <summary>
 /// Multiplies two polynomials
 /// </summary>
 /// <param name="a">The first multiplier</param>
 /// <param name="b">The second multiplier</param>
 /// <param name="c">The third multiplier</param>
 /// <returns></returns>
 public static Polynomial Multiply(Polynomial a, Polynomial b, Polynomial c) => Multiply(Multiply(a, b), c);
        /// <summary>
        /// Multiplies two polynomials
        /// </summary>
        /// <param name="a">The first multiplier</param>
        /// <param name="b">The second multiplier</param>
        /// <returns></returns>
        public static Polynomial Multiply(Polynomial a, Polynomial b) {
            if (a == null)
                throw new ArgumentNullException(nameof(a));
            if (b == null)
                throw new ArgumentNullException(nameof(b));

            Polynomial result = new Polynomial(new double[0]);

            for( int i = 0; i <= a.Degree ; i++ ) 
                result += b.Multiply(a[i], i);
            
            return result;
        }
 /// <summary>
 /// Calculate the diffrence of two polynomials
 /// </summary>
 /// <param name="a">The minuend</param>
 /// <param name="b">The subtrahend</param>
 /// <returns></returns>
 public static Polynomial Subtraction(Polynomial a, Polynomial b) => a + (-b);
 /// <summary>
 /// Calculate the sum of three polynomials 
 /// </summary>
 /// <param name="a">The first summand</param>
 /// <param name="b">The second summand</param>
 /// <param name="c">The third summand</param>
 /// <returns>The sum of three polynomials</returns>
 public static Polynomial Add(Polynomial a, Polynomial b, Polynomial c) => Add(Add(a, b), c);
        /// <summary>
        /// Calculate the sum of two polynomials 
        /// </summary>
        /// <param name="a">The first summand</param>
        /// <param name="b">The second summand</param>
        /// <returns>The sum of two polynomials</returns>
        public static Polynomial Add(Polynomial a, Polynomial b) {
            if (a == null)
                throw new ArgumentNullException(nameof(a));
            if (b == null)
                throw new ArgumentNullException(nameof(b));
            int newDegree = Math.Max(a.Degree, b.Degree);
            double[] tempArray = new double[newDegree + 1];

            for (int i = 0; i <= newDegree; i++) {
                double temp = 0;
                if (i <= a.Degree)
                    temp += a[i];
                if (i <= b.Degree)
                    temp += b[i];
                tempArray[i] = temp;
            }
            return new Polynomial(tempArray);
        }