@@ -178,13 +178,28 @@ public override IExpression Analyze(Add exp)
178
178
// const + const
179
179
( Number left , Number right )
180
180
=> new Number ( left . Value + right . Value ) ,
181
+
181
182
( Number left , Angle right )
182
183
=> ( left . Value + right . Value ) . AsExpression ( ) ,
183
184
( Angle left , Number right )
184
185
=> ( left . Value + right . Value ) . AsExpression ( ) ,
185
186
( Angle left , Angle right )
186
187
=> ( left . Value + right . Value ) . AsExpression ( ) ,
187
188
189
+ ( Number left , Power right )
190
+ => ( left . Value + right . Value ) . AsExpression ( ) ,
191
+ ( Power left , Number right )
192
+ => ( left . Value + right . Value ) . AsExpression ( ) ,
193
+ ( Power left , Power right )
194
+ => ( left . Value + right . Value ) . AsExpression ( ) ,
195
+
196
+ ( Number left , Temperature right )
197
+ => ( left . Value + right . Value ) . AsExpression ( ) ,
198
+ ( Temperature left , Number right )
199
+ => ( left . Value + right . Value ) . AsExpression ( ) ,
200
+ ( Temperature left , Temperature right )
201
+ => ( left . Value + right . Value ) . AsExpression ( ) ,
202
+
188
203
// x + x
189
204
( Variable left , Variable right ) when left . Name == right . Name
190
205
=> new Mul ( Number . Two , left ) ,
@@ -292,11 +307,12 @@ public override IExpression Analyze(Div exp)
292
307
// const / const
293
308
( Number left , Number right )
294
309
=> new Number ( left . Value / right . Value ) ,
295
- ( Number left , Angle right )
296
- => ( left . Value / right . Value ) . AsExpression ( ) ,
310
+
297
311
( Angle left , Number right )
298
312
=> ( left . Value / right . Value ) . AsExpression ( ) ,
299
- ( Angle left , Angle right )
313
+ ( Power left , Number right )
314
+ => ( left . Value / right . Value ) . AsExpression ( ) ,
315
+ ( Temperature left , Number right )
300
316
=> ( left . Value / right . Value ) . AsExpression ( ) ,
301
317
302
318
// x / x
@@ -474,11 +490,20 @@ public override IExpression Analyze(Mul exp)
474
490
// const * const
475
491
( Number left , Number right )
476
492
=> new Number ( left . Value * right . Value ) ,
493
+
477
494
( Number left , Angle right )
478
495
=> ( left . Value * right . Value ) . AsExpression ( ) ,
479
496
( Angle left , Number right )
480
497
=> ( left . Value * right . Value ) . AsExpression ( ) ,
481
- ( Angle left , Angle right )
498
+
499
+ ( Number left , Power right )
500
+ => ( left . Value * right . Value ) . AsExpression ( ) ,
501
+ ( Power left , Number right )
502
+ => ( left . Value * right . Value ) . AsExpression ( ) ,
503
+
504
+ ( Number left , Temperature right )
505
+ => ( left . Value * right . Value ) . AsExpression ( ) ,
506
+ ( Temperature left , Number right )
482
507
=> ( left . Value * right . Value ) . AsExpression ( ) ,
483
508
484
509
// x * -y
@@ -700,13 +725,28 @@ public override IExpression Analyze(Sub exp)
700
725
// const - const
701
726
( Number left , Number right )
702
727
=> new Number ( left . Value - right . Value ) ,
728
+
703
729
( Number left , Angle right )
704
730
=> ( left . Value - right . Value ) . AsExpression ( ) ,
705
731
( Angle left , Number right )
706
732
=> ( left . Value - right . Value ) . AsExpression ( ) ,
707
733
( Angle left , Angle right )
708
734
=> ( left . Value - right . Value ) . AsExpression ( ) ,
709
735
736
+ ( Number left , Power right )
737
+ => ( left . Value - right . Value ) . AsExpression ( ) ,
738
+ ( Power left , Number right )
739
+ => ( left . Value - right . Value ) . AsExpression ( ) ,
740
+ ( Power left , Power right )
741
+ => ( left . Value - right . Value ) . AsExpression ( ) ,
742
+
743
+ ( Number left , Temperature right )
744
+ => ( left . Value - right . Value ) . AsExpression ( ) ,
745
+ ( Temperature left , Number right )
746
+ => ( left . Value - right . Value ) . AsExpression ( ) ,
747
+ ( Temperature left , Temperature right )
748
+ => ( left . Value - right . Value ) . AsExpression ( ) ,
749
+
710
750
// x + x
711
751
( Variable left , Variable right ) when left . Name == right . Name
712
752
=> Number . Zero ,
0 commit comments