示例#1
0
 static Expr MultiplyConvoultion(IContext context, Expr arg)
 {
     return arg
         .With(x => MultiplyExpressionExtractor.ExtractMultiply(x))
         .ConvertAs<MultiplyExpr>()
         .With(x => {
             FunctionExpr lnExpr = x.Args
                 .Where(y => y is FunctionExpr)
                 .Cast<FunctionExpr>()
                 .FirstOrDefault(y => context.GetFunction(y.FunctionName) is LnFunction);
             if(lnExpr != null) {
                 return new ConvolutionExprBuilder(context).Power(lnExpr.Args.First(), Expr.Multiply(x.Args.Where(y => y != lnExpr)));
             }
             return null;
         });
 }