/// <summary> /// Initializes a new instance of the <see cref="Polynomial"/> class using values from a given <see cref="Polynomial"/> instance. /// </summary> /// <param name="polynomial">A <see cref="Polynomial"/> instance.</param> public Polynomial(Polynomial polynomial) { _coefficients = new double[polynomial._coefficients.Length]; for (int i = 0; i < _coefficients.Length; i++) { _coefficients[i] = polynomial._coefficients[i]; } }
public static Polynomial Negate(Polynomial p) { throw new NotImplementedException(); }
public static Polynomial Divide(double scalar, Polynomial p) { throw new NotImplementedException(); }
public static void Divide(double scalar, Polynomial p, Polynomial result) { throw new NotImplementedException(); }
public static void Multiply(Polynomial left, Polynomial right, Polynomial result) { throw new NotImplementedException(); }
public static void Multiply(Polynomial p, double scalar, Polynomial result) { throw new NotImplementedException(); }
public static void Subtract(Polynomial left, Polynomial right, Polynomial result) { Polynomial largeOrder, smallOrder; if (left.Order >= right.Order) { largeOrder = left; smallOrder = right; } else { largeOrder = right; smallOrder = left; } result.Order = largeOrder.Order; for (int i = 0; i < smallOrder._coefficients.Length; i++) { result._coefficients[i] = largeOrder._coefficients[i] + smallOrder._coefficients[i]; } for (int i = smallOrder._coefficients.Length; i < largeOrder._coefficients.Length; i++) { result._coefficients[i] = largeOrder._coefficients[i]; } }
public static Polynomial Multiply(Polynomial p, double scalar) { throw new NotImplementedException(); }
public static Polynomial Subtract(double scalar, Polynomial p) { throw new NotImplementedException(); }
public static Polynomial Subtract(Polynomial left, Polynomial right) { throw new NotImplementedException(); }
public static Polynomial Add(Polynomial left, Polynomial right) { Polynomial largeOrder, smallOrder; if (left.Order >= right.Order) { largeOrder = left; smallOrder = right; } else { largeOrder = right; smallOrder = left; } Polynomial result = new Polynomial(largeOrder); for (int i = 0; i < smallOrder._coefficients.Length; i++) { result._coefficients[i] += smallOrder._coefficients[i]; } return result; }
public Polynomial GetInverse() { int order = this.Order; Polynomial result = new Polynomial(order); for (int i = 0; i < _coefficients.Length; i++) { result._coefficients[i] = _coefficients[order - i]; } return result; }
public int CompareTo(Polynomial p) { int i = this._coefficients.Length - 1; int j = p._coefficients.Length - 1; while (i != j) { if (i > j) { if (_coefficients[i--] != 0) return 1; } else { if (p._coefficients[j--] != 0) return -1; } } while (i >= 0) { if (_coefficients[i] > p._coefficients[i]) return 1; if (_coefficients[i] < p._coefficients[i]) return -1; i--; } return 0; }