コード例 #1
0
        public Derivatives <Func <double> > Derivative(string image, FunctionFoundEventArgs <Derivatives <Func <double> > > args, EvaluationContext context)
        {
            if (image == null)
            {
                throw new ArgumentNullException(nameof(image));
            }

            if (args == null)
            {
                throw new ArgumentNullException(nameof(args));
            }

            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var childContext = context.CreateChildContext(string.Empty, false);

            for (var i = 0; i < Arguments.Count; i++)
            {
                var iLocal = i;
                childContext.SetParameter(Arguments[i], args[iLocal][0]());
                childContext.Arguments.Add(Arguments[i], new FunctionExpression(args[iLocal][0]));
            }

            var childParser = childContext.GetDeriveParser();
            var parseResult = childParser.Parse(Expression);

            return(parseResult);
        }
コード例 #2
0
        public override double Logic(string image, double[] args, EvaluationContext context)
        {
            if (image == null)
            {
                throw new ArgumentNullException(nameof(image));
            }

            if (args == null)
            {
                throw new ArgumentNullException(nameof(args));
            }

            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var childContext = context.CreateChildContext(string.Empty, false);

            for (var i = 0; i < Arguments.Count; i++)
            {
                childContext.SetParameter(Arguments[i], args[i]);
            }

            var @value = childContext.Evaluate(Expression);

            return(@value);
        }