@@ -200,6 +200,13 @@ public override IExpression Analyze(Add exp)
200
200
( Temperature left , Temperature right )
201
201
=> ( left . Value + right . Value ) . AsExpression ( ) ,
202
202
203
+ ( Number left , Mass right )
204
+ => ( left . Value + right . Value ) . AsExpression ( ) ,
205
+ ( Mass left , Number right )
206
+ => ( left . Value + right . Value ) . AsExpression ( ) ,
207
+ ( Mass left , Mass right )
208
+ => ( left . Value + right . Value ) . AsExpression ( ) ,
209
+
203
210
// x + x
204
211
( Variable left , Variable right ) when left . Name == right . Name
205
212
=> new Mul ( Number . Two , left ) ,
@@ -314,6 +321,8 @@ public override IExpression Analyze(Div exp)
314
321
=> ( left . Value / right . Value ) . AsExpression ( ) ,
315
322
( Temperature left , Number right )
316
323
=> ( left . Value / right . Value ) . AsExpression ( ) ,
324
+ ( Mass left , Number right )
325
+ => ( left . Value / right . Value ) . AsExpression ( ) ,
317
326
318
327
// x / x
319
328
( Variable left , Variable right ) when left . Equals ( right )
@@ -506,6 +515,11 @@ public override IExpression Analyze(Mul exp)
506
515
( Temperature left , Number right )
507
516
=> ( left . Value * right . Value ) . AsExpression ( ) ,
508
517
518
+ ( Number left , Mass right )
519
+ => ( left . Value * right . Value ) . AsExpression ( ) ,
520
+ ( Mass left , Number right )
521
+ => ( left . Value * right . Value ) . AsExpression ( ) ,
522
+
509
523
// x * -y
510
524
( var left , UnaryMinus minus )
511
525
=> new UnaryMinus ( new Mul ( left , minus . Argument ) ) ,
@@ -747,6 +761,13 @@ public override IExpression Analyze(Sub exp)
747
761
( Temperature left , Temperature right )
748
762
=> ( left . Value - right . Value ) . AsExpression ( ) ,
749
763
764
+ ( Number left , Mass right )
765
+ => ( left . Value - right . Value ) . AsExpression ( ) ,
766
+ ( Mass left , Number right )
767
+ => ( left . Value - right . Value ) . AsExpression ( ) ,
768
+ ( Mass left , Mass right )
769
+ => ( left . Value - right . Value ) . AsExpression ( ) ,
770
+
750
771
// x + x
751
772
( Variable left , Variable right ) when left . Name == right . Name
752
773
=> Number . Zero ,
0 commit comments