public BigInteger this[int degree] { get { ITerm term = Terms.FirstOrDefault(t => t.Exponent == degree); if (term == default(ITerm)) { return(BigInteger.Zero); } else { return(term.CoEfficient); } } set { ITerm term = Terms.FirstOrDefault(t => t.Exponent == degree); if (term == default(ITerm)) { if (value != BigInteger.Zero) { ITerm newTerm = new Term(value, degree); TermCollection terms = _terms; terms.Add(newTerm); SetTerms(terms); } } else { term.CoEfficient = value; } } }
public void RemoveZeros() { _terms.RemoveAll(t => t.CoEfficient == 0); if (!_terms.Any()) { _terms = new TermCollection(Term.GetTerms(new BigInteger[] { 0 }).ToList()); } SetDegree(); }
private void SetTerms(IEnumerable <ITerm> terms) { _terms = new TermCollection(terms.OrderBy(t => t.Exponent).ToList()); RemoveZeros(); }
internal Polynomial() { _terms = new TermCollection(); }