public static CreatePolinom operator *(CreatePolinom p, double a) { if (p == null) { throw new ArgumentNullException(); } CreatePolinom polinom = p; for (int i = 0; i < p.degree + 1; i++) { polinom[i] = a * polinom[i]; } return(polinom); }
private static void Deconv(CreatePolinom dividend, CreatePolinom divisor, out CreatePolinom quotient, out CreatePolinom remainder) { if (ReferenceEquals(dividend, null) || ReferenceEquals(divisor, null)) { throw new ArgumentNullException(); } remainder = dividend; quotient = new CreatePolinom(remainder.Degree - divisor.Degree); for (int i = 0; i < quotient.Degree + 1; i++) { CreatePolinom coef = (new CreatePolinom(remainder.Degree - divisor.Degree)) * (CreatePolinom)(remainder[remainder.Degree - i] / divisor[divisor.Degree]); quotient[quotient.Degree - i] = coef[coef.Degree]; coef = Multiply(coef, divisor); //for (int j = 0; j < divisor.degree + 1; j++) //{ remainder -= coef; //} } }
public override bool Equals(object obj) { if (ReferenceEquals(obj, null)) { return(false); } if (ReferenceEquals(obj, this)) { return(true); } CreatePolinom p = new CreatePolinom(); if (p.GetType() != obj.GetType()) { return(false); } p = (CreatePolinom)obj; return(Equals(p)); }
public static CreatePolinom operator +(CreatePolinom p1, CreatePolinom p2) { if (p1 == null || p2 == null) { throw new ArgumentNullException(); } CreatePolinom newm = p1.Degree > p2.Degree ? p1 : p2; for (int i = 0; i < Math.Min(p1.Degree, p2.Degree) + 1; i++) { if (newm.Equals(p1)) { newm.coeff[i] += p2.coeff[i]; } else { newm.coeff[i] += p1.coeff[i]; } } return(newm); }
public bool Equals(CreatePolinom p) { if (ReferenceEquals(p, null)) { return(false); } if (ReferenceEquals(p, this)) { return(true); } if (p.degree != degree) { return(false); } for (int i = 0; i < degree; i++) { if (Math.Abs(coeff[i] - p[i]) > eps) { return(false); } } return(true); }
public static CreatePolinom Multiply(CreatePolinom lhs, CreatePolinom rhs) { if (ReferenceEquals(lhs, null) || ReferenceEquals(rhs, null)) { throw new ArgumentNullException(); } CreatePolinom p2 = new CreatePolinom(rhs.Degree + lhs.Degree); for (int i = 0; i < lhs.Degree + 1; i++) { CreatePolinom p1 = new CreatePolinom(rhs.coeff); if (Math.Abs(lhs[i]) > eps) { p1 = p1 * lhs[i]; for (int k = 0; k < rhs.Degree + 1; k++) { p2[k + i] += p1[k]; } } } p2[p2.Degree] -= 1; return(p2); }
public static CreatePolinom Mod(CreatePolinom lhs, CreatePolinom rhs) { return(lhs % rhs); }
public static CreatePolinom Divide(CreatePolinom lhs, CreatePolinom rhs) { return(lhs / rhs); }
public static CreatePolinom Subtract(CreatePolinom lhs, CreatePolinom rhs) { return(lhs - rhs); }
public static CreatePolinom Add(CreatePolinom lhs, CreatePolinom rhs) { return(lhs + rhs); }