/// <summary> /// Произведение /// </summary> public TFrac Multiplication(TFrac a, TFrac b) { TFrac otv = a.Copy(); otv.Denominator = a.Denominator * b.Denominator; otv.Numerator = a.Numerator * b.Numerator; return(otv); }
/// <summary> /// Деление /// </summary> public TFrac Division(TFrac a, TFrac b) { TFrac otv = a.Copy(); otv.Denominator = a.Denominator * b.Numerator; otv.Numerator = a.Numerator * b.Denominator; return(Norm(otv)); }
/// <summary> /// Сумма /// </summary> public TFrac Add(TFrac b) { TFrac otv = b.Copy(); if (this.Denominator == b.Denominator) { otv.denominator = this.Denominator; otv.numerator = this.Numerator + b.Numerator; } else { int nok = NOK(Convert.ToInt32(this.Denominator), Convert.ToInt32(b.Denominator)); otv.denominator = nok; otv.numerator = this.Numerator * (nok / this.Denominator) + b.Numerator * (nok / b.Denominator); } return(Norm(otv)); }
/// <summary> /// Разность /// </summary> public TFrac Difference(TFrac A, TFrac B) { //if (A.Numerator == 0) return Multiplication(Norm(B), new TFrac(-1, 1)); if (B.Numerator == 0) { return(Norm(A)); } TFrac otv = A.Copy(); TFrac a = Norm(A), b = Norm(B); if (a.Denominator == b.Denominator) { otv.Denominator = a.Denominator; otv.Numerator = a.Numerator - b.Numerator; } else { int nok = NOK(Convert.ToInt32(a.Denominator), Convert.ToInt32(b.Denominator)); otv.Denominator = nok; otv.Numerator = a.Numerator * (nok / a.Denominator) - b.Numerator * (nok / b.Denominator); } return(Norm(otv)); }