From 5e719471282a68b42fba1ed9954ece76a126cdbc Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Fri, 14 Apr 2017 07:48:02 -0700 Subject: [PATCH] Partial implementation of Rational addition --- types/src/number/add.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/types/src/number/add.rs b/types/src/number/add.rs index b1b3d96..9d27963 100644 --- a/types/src/number/add.rs +++ b/types/src/number/add.rs @@ -3,7 +3,8 @@ */ use std::ops::Add; -use super::Real; +use number::Real; +use number::math::*; impl Add for Real { type Output = Real; @@ -11,6 +12,15 @@ impl Add for Real { fn add(self, other: Real) -> Real { match (self, other) { (Real::Integer(v), Real::Integer(ov)) => Real::Integer(v + ov), + (Real::Rational(p, q), Real::Rational(op, oq)) => { + if q == oq { + Real::Rational(p + op, q) + } + else { + let lcm = q.lcm(oq); + Real::Rational(1, 1) + } + }, (Real::Irrational(v), Real::Irrational(ov)) => Real::Irrational(v + ov), // TODO: The rest. _ => Real::Integer(0)