From 73fa2eda2c23bd3baeb9e22b99eb0bfb183fc638 Mon Sep 17 00:00:00 2001 From: Martin Haug Date: Tue, 1 Jun 2021 14:56:02 +0200 Subject: Introduce `fr`s --- src/eval/ops.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/eval/ops.rs') diff --git a/src/eval/ops.rs b/src/eval/ops.rs index 69a0b02b..15c09e03 100644 --- a/src/eval/ops.rs +++ b/src/eval/ops.rs @@ -11,6 +11,7 @@ pub fn pos(value: Value) -> Value { Length(v) => Length(v), Angle(v) => Angle(v), Relative(v) => Relative(v), + Fractional(v) => Fractional(v), Linear(v) => Linear(v), _ => Error, } @@ -24,6 +25,7 @@ pub fn neg(value: Value) -> Value { Length(v) => Length(-v), Angle(v) => Angle(-v), Relative(v) => Relative(-v), + Fractional(v) => Fractional(-v), Linear(v) => Linear(-v), _ => Error, } @@ -44,6 +46,7 @@ pub fn add(lhs: Value, rhs: Value) -> Value { (Relative(a), Length(b)) => Linear(a + b), (Relative(a), Relative(b)) => Relative(a + b), (Relative(a), Linear(b)) => Linear(a + b), + (Fractional(a), Fractional(b)) => Fractional(a + b), (Linear(a), Length(b)) => Linear(a + b), (Linear(a), Relative(b)) => Linear(a + b), (Linear(a), Linear(b)) => Linear(a + b), @@ -84,6 +87,7 @@ pub fn sub(lhs: Value, rhs: Value) -> Value { (Relative(a), Length(b)) => Linear(a - b), (Relative(a), Relative(b)) => Relative(a - b), (Relative(a), Linear(b)) => Linear(a - b), + (Fractional(a), Fractional(b)) => Fractional(a - b), (Linear(a), Length(b)) => Linear(a - b), (Linear(a), Relative(b)) => Linear(a - b), (Linear(a), Linear(b)) => Linear(a - b), @@ -108,8 +112,13 @@ pub fn mul(lhs: Value, rhs: Value) -> Value { (Float(a), Angle(b)) => Angle(a * b), (Relative(a), Int(b)) => Relative(a * b as f64), (Relative(a), Float(b)) => Relative(a * b), + (Fractional(a), Fractional(b)) => Fractional(a * b.get()), + (Fractional(a), Int(b)) => Fractional(a * b as f64), + (Fractional(a), Float(b)) => Fractional(a * b), (Int(a), Relative(b)) => Relative(a as f64 * b), + (Int(a), Fractional(b)) => Fractional(a as f64 * b), (Float(a), Relative(b)) => Relative(a * b), + (Float(a), Fractional(b)) => Fractional(a * b), (Linear(a), Int(b)) => Linear(a * b as f64), (Linear(a), Float(b)) => Linear(a * b), (Int(a), Linear(b)) => Linear(a as f64 * b), @@ -134,6 +143,9 @@ pub fn div(lhs: Value, rhs: Value) -> Value { (Relative(a), Int(b)) => Relative(a / b as f64), (Relative(a), Float(b)) => Relative(a / b), (Relative(a), Relative(b)) => Float(a / b), + (Fractional(a), Fractional(b)) => Float(a.get() / b.get()), + (Fractional(a), Int(b)) => Fractional(a / b as f64), + (Fractional(a), Float(b)) => Fractional(a / b), (Linear(a), Int(b)) => Linear(a / b as f64), (Linear(a), Float(b)) => Linear(a / b), _ => Error, -- cgit v1.2.3