Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Linq;
- using System.Linq.Expressions;
- namespace ConsoleApplication16
- {
- class Program
- {
- static void Main(string[] args)
- {
- ParameterExpression result = Expression.Parameter(typeof(double), "result");
- ParameterExpression value = Expression.Parameter(typeof(double), "value");
- ParameterExpression i = Expression.Parameter(typeof(double), "i");
- ParameterExpression chisl = Expression.Parameter(typeof(double), "chisl");
- ParameterExpression znam = Expression.Parameter(typeof(double), "znam");
- LabelTarget label = Expression.Label(typeof(double));
- BlockExpression block = Expression.Block(
- new[] { result, chisl, znam, i},
- Expression.Assign(result, Expression.Constant(0.0)),
- Expression.Assign(i, Expression.Constant(1.0)),
- Expression.Assign(chisl, value),
- Expression.MultiplyAssign(chisl, value),
- Expression.MultiplyAssign(chisl, value),
- Expression.Assign(znam, Expression.Constant(3.0)),
- Expression.Loop(
- Expression.IfThenElse(
- Expression.LessThan(i, Expression.Constant(1000.0)),
- Expression.Block(
- Expression.AddAssign(result, Expression.Divide(chisl, znam)),
- Expression.Assign(znam, Expression.Constant(1.0)),
- Expression.AddAssign(i, Expression.Constant(1.0)),
- Expression.MultiplyAssign(chisl, value),
- Expression.MultiplyAssign(chisl, value),
- Expression.MultiplyAssign(znam, i),
- Expression.MultiplyAssign(znam, i),
- Expression.MultiplyAssign(znam, Expression.Constant(4.0)),
- Expression.SubtractAssign(znam, Expression.Constant(1.0)),
- Expression.MultiplyAssign(chisl, Expression.Constant(-1.0))
- ),
- Expression.Break(label, result)
- ),
- label
- ), result
- );
- for (double x = 0.1; x < 1; x += 0.1)
- {
- double sum = Expression.Lambda<Func<double, double>>(block, value).Compile()(x);
- Console.WriteLine("{0}\t{1}", Math.Round(sum, 3), Math.Round((1 + x * x)*Math.Atan(x)/2 - x/2, 3));
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement