@@ -242,23 +242,22 @@ public override IExpression Analyze(Add exp)
242
242
( Sub ( var left , Number right ) , Number number )
243
243
=> Analyze ( new Add ( new Number ( number . Value - right . Value ) , left ) ) ,
244
244
245
- // TODO: nested complex 'x'
246
-
247
245
// ax + x
248
246
// xa + x
249
247
// x + bx
250
248
// x + xb
251
- ( Mul ( Number a , Variable x1 ) , Variable x2 ) when x1 . Equals ( x2 )
249
+ ( Mul ( Number a , var x1 ) , var x2 ) when x1 . Equals ( x2 )
252
250
=> Analyze ( new Mul ( new Number ( a . Value + 1 ) , x1 ) ) ,
253
251
254
252
// ax + bx
255
253
// ax + xb
256
254
// xa + bx
257
255
// xa + xb
258
- ( Mul ( Number a , Variable x1 ) , Mul ( Number b , Variable x2 ) ) when x1 . Equals ( x2 )
256
+ ( Mul ( Number a , var x1 ) , Mul ( Number b , var x2 ) ) when x1 . Equals ( x2 )
259
257
=> Analyze ( new Mul ( new Number ( a . Value + b . Value ) , x1 ) ) ,
260
258
261
- var ( left , right ) when IsChanged ( exp , left , right ) => new Add ( left , right ) ,
259
+ var ( left , right ) when IsChanged ( exp , left , right )
260
+ => new Add ( left , right ) ,
262
261
263
262
_ => exp ,
264
263
} ;
@@ -535,20 +534,18 @@ public override IExpression Analyze(Mul exp)
535
534
( Div ( var left , Number right ) , Number number )
536
535
=> Analyze ( new Mul ( new Number ( number . Value / right . Value ) , left ) ) ,
537
536
538
- // TODO: nested complex 'x'
539
-
540
537
// ax * x
541
538
// xa * x
542
539
// x * bx
543
540
// x * xb
544
- ( Mul ( Number a , Variable x1 ) , Variable x2 ) when x1 . Equals ( x2 )
541
+ ( Mul ( Number a , var x1 ) , var x2 ) when x1 . Equals ( x2 )
545
542
=> Analyze ( new Mul ( a , new Pow ( x1 , Number . Two ) ) ) ,
546
543
547
544
// ax + bx
548
545
// ax + xb
549
546
// xa + bx
550
547
// xa + xb
551
- ( Mul ( Number a , Variable x1 ) , Mul ( Number b , Variable x2 ) ) when x1 . Equals ( x2 )
548
+ ( Mul ( Number a , var x1 ) , Mul ( Number b , var x2 ) ) when x1 . Equals ( x2 )
552
549
=> Analyze ( new Mul ( new Number ( a . Value * b . Value ) , new Pow ( x1 , Number . Two ) ) ) ,
553
550
554
551
// x * (1 / x)
@@ -766,23 +763,21 @@ public override IExpression Analyze(Sub exp)
766
763
( Number number , Sub ( var left , Number right ) )
767
764
=> Analyze ( new Sub ( new Number ( number . Value + right . Value ) , left ) ) ,
768
765
769
- // TODO: nested complex 'x'
770
-
771
766
// x - bx
772
767
// x - xb
773
- ( Variable x1 , Mul ( Number b , Variable x2 ) ) when x1 . Equals ( x2 )
768
+ ( var x1 , Mul ( Number b , var x2 ) ) when x1 . Equals ( x2 )
774
769
=> Analyze ( new Mul ( new Number ( 1 - b . Value ) , x1 ) ) ,
775
770
776
771
// ax - x
777
772
// xa - x
778
- ( Mul ( Number a , Variable x1 ) , Variable x2 ) when x1 . Equals ( x2 )
773
+ ( Mul ( Number a , var x1 ) , var x2 ) when x1 . Equals ( x2 )
779
774
=> Analyze ( new Mul ( new Number ( a . Value - 1 ) , x1 ) ) ,
780
775
781
776
// ax - bx
782
777
// ax - xb
783
778
// xa - bx
784
779
// xa - xb
785
- ( Mul ( Number a , Variable x1 ) , Mul ( Number b , Variable x2 ) ) when x1 . Equals ( x2 )
780
+ ( Mul ( Number a , var x1 ) , Mul ( Number b , var x2 ) ) when x1 . Equals ( x2 )
786
781
=> Analyze ( new Mul ( new Number ( a . Value - b . Value ) , x1 ) ) ,
787
782
788
783
var ( left , right ) when IsChanged ( exp , left , right )
0 commit comments