/// <summary> /// Method for shifting polynomial <paramref name="a"/> by <paramref name="degreeDelta"/> positions to the right /// </summary> /// <param name="a">Shifted polynomial</param> /// <param name="degreeDelta">Positions count for shifting</param> public static Polynomial RightShift(Polynomial a, int degreeDelta) { var c = new Polynomial(a); return(c.RightShift(degreeDelta)); }
/// <summary> /// Method for checking the equality of the current polynomial to the <paramref name="other"/> /// </summary> /// <param name="other">Another polynomial</param> /// <returns>Checking result</returns> private bool Equals(Polynomial other) { return(_coefficients.SequenceEqual(other._coefficients) && Equals(Field, other.Field)); }
/// <summary> /// Method for calculating the remainder of dividing polynomial <paramref name="a"/> by polynomial <paramref name="b"/> /// </summary> /// <param name="a">Dividend</param> /// <param name="b">Divider</param> public static Polynomial Modulo(Polynomial a, Polynomial b) { var c = new Polynomial(a); return(c.Modulo(b)); }
/// <summary> /// Method for calculating the quotient of dividing polynomial <paramref name="a"/> by number <paramref name="b"/> /// </summary> /// <param name="a">Dividend</param> /// <param name="b">Divider</param> public static Polynomial Divide(Polynomial a, int b) { var c = new Polynomial(a); return(c.Divide(b)); }
/// <summary> /// Method for multiplying polynomial <paramref name="a"/> by polynomial <paramref name="b"/> /// </summary> /// <param name="a">First factor</param> /// <param name="b">Second factor</param> public static Polynomial Multiply(Polynomial a, Polynomial b) { var c = new Polynomial(a); return(c.Multiply(b)); }
/// <summary> /// Method for multiplying number <paramref name="a"/> by polynomial <paramref name="b"/> /// </summary> /// <param name="a">First factor</param> /// <param name="b">Second factor</param> public static Polynomial Multiply(int a, Polynomial b) { return(Multiply(b, a)); }
/// <summary> /// Method for subtracting polynomial <paramref name="b"/> from <paramref name="a"/> /// </summary> /// <param name="a">Minuend</param> /// <param name="b">Subtrahend</param> public static Polynomial Subtract(Polynomial a, Polynomial b) { var c = new Polynomial(a); return(c.Subtract(b)); }
/// <summary> /// Method for adding polynomial <paramref name="b"/> to <paramref name="a"/> /// </summary> /// <param name="a">First term</param> /// <param name="b">Second term</param> public static Polynomial Add(Polynomial a, Polynomial b) { var c = new Polynomial(a); return(c.Add(b)); }
/// <summary> /// Constructor for creating copy of the polynomial <paramref name="polynomial"/> /// </summary> /// <param name="polynomial">The copied polynomial</param> public Polynomial(Polynomial polynomial) { Field = polynomial.Field; _coefficients = polynomial._coefficients.ToList(); }