/// <summary> /// Sum /// </summary> /// <param name="p">First term</param> /// <param name="q">Second term</param> /// <returns>Sum</returns> static public RealPolynom operator +(RealPolynom p, RealPolynom q) { RealPolynom r = new RealPolynom(0); if (p.coeffs.Length < q.coeffs.Length) { for (int i = 0; i < p.coeffs.Length; i++) { r.coeffs[i] = p.coeffs[i] + q.coeffs[i]; } for (int i = p.coeffs.Length - 1; i < q.coeffs.Length; i++) { r.coeffs[i] = q.coeffs[i]; } return(r); } for (int i = 0; i < q.coeffs.Length; i++) { r.coeffs[i] = p.coeffs[i] + q.coeffs[i]; } for (int i = q.coeffs.Length - 1; i < p.coeffs.Length; i++) { r.coeffs[i] = p.coeffs[i]; } r.Reduce(); return(r); }
/// <summary> /// Plus constant left /// </summary> /// <param name="d">Constant</param> /// <param name="p">Polynom</param> /// <returns>Result polynom</returns> static public RealPolynom operator +(double d, RealPolynom p) { RealPolynom r = p.Clone() as RealPolynom; r.coeffs[0] += d; r.Reduce(); return(r); }
/// <summary> /// Multiply to constant left /// </summary> /// <param name="d">Constant</param> /// <param name="p">Polynom</param> /// <returns>Result polynom</returns> static public RealPolynom operator *(double d, RealPolynom p) { RealPolynom r = p.Clone() as RealPolynom; for (int i = 0; i < r.coeffs.Length; i++) { r.coeffs[i] *= d; } r.Reduce(); return(r); }