@@ -28,23 +28,24 @@ void _expression_creation_and_evaluation() {
28
28
Expression exp = p.parse ('(x^2 + cos(y)) / 3' );
29
29
30
30
// (1b) Build expression: (x^2 + cos(y)) / 3
31
- Variable x = Variable ('x' ), y = Variable ('y' );
32
- Power xSquare = Power (x, 2 );
33
- Cos yCos = Cos (y);
34
- Number three = Number (3.0 );
31
+ var x = Variable ('x' ), y = Variable ('y' );
32
+ var xSquare = Power (x, 2 );
33
+ var yCos = Cos (y);
34
+ var three = Number (3.0 );
35
35
exp = (xSquare + yCos) / three;
36
36
37
37
// Bind variables and evaluate the expression as real number.
38
38
// (2) Bind variables:
39
- ContextModel cm = ContextModel ()
39
+ var context = ContextModel ()
40
40
..bindVariable (x, Number (2.0 ))
41
41
..bindVariable (y, Number (math.pi));
42
42
43
43
// (3) Evaluate expression:
44
- double eval = exp.evaluate (EvaluationType .REAL , cm);
44
+ var evaluator = RealEvaluator (context);
45
+ num eval = evaluator.evaluate (exp);
45
46
46
47
print ('Expression: $exp ' );
47
- print ('Evaluated expression: $eval \n (with context: $cm )' ); // = 1
48
+ print ('Evaluated expression: $eval \n (with context: $context )' ); // = 1
48
49
}
49
50
50
51
/// Example 2: Expression simplification and differentiation
@@ -78,29 +79,30 @@ void _custom_function_definition_and_use() {
78
79
print ('\n Example 3: Custom function definition and use\n ' );
79
80
80
81
// (1) Create and evaluate custom function: DOUBLEUP (R -> R)
81
- ContextModel cm = ContextModel ();
82
- Variable x = Variable ('x' );
82
+ var context = ContextModel ();
83
+ var evaluator = RealEvaluator (context);
84
+ var x = Variable ('x' );
83
85
CustomFunction doubleup = CustomFunction ('doubleup' , [x], x * Number (2 ));
84
86
85
- cm .bindVariable (x, Number (0.5 ));
87
+ context .bindVariable (x, Number (0.5 ));
86
88
87
89
print ('$doubleup = ${doubleup .expression }' );
88
90
print (
89
- 'doubleup(${cm .getExpression ('x' )}) = ${doubleup .evaluate (EvaluationType . REAL , cm )}\n ' );
91
+ 'doubleup(${context .getExpression ('x' )}) = ${evaluator .evaluate (doubleup )}\n ' );
90
92
91
93
// (1) Create and evaluate custom function: LEFTSHIFT (R² -> R)
92
94
// Shifting to the left makes the number larger, effectively multiplying the
93
95
// number by pow(2, shiftIndex). Custom implementation of x << i.
94
- Variable shiftIndex = Variable ('i' );
96
+ var shiftIndex = Variable ('i' );
95
97
CustomFunction leftshift =
96
98
CustomFunction ('leftshift' , [x, shiftIndex], x * Power (2 , shiftIndex));
97
99
98
- cm .bindVariable (x, Number (250 ));
99
- cm .bindVariable (shiftIndex, Number (8 ));
100
+ context .bindVariable (x, Number (250 ));
101
+ context .bindVariable (shiftIndex, Number (8 ));
100
102
101
103
print ('$leftshift = ${leftshift .expression }' );
102
104
print (
103
- 'leftshift(${cm .getExpression ('x' )}, ${cm .getExpression ('i' )}) = ${leftshift .evaluate (EvaluationType . REAL , cm )}' );
105
+ 'leftshift(${context .getExpression ('x' )}, ${context .getExpression ('i' )}) = ${evaluator .evaluate (leftshift )}' );
104
106
}
105
107
106
108
/// Example 4: Algorithmic function definition and use
@@ -117,11 +119,12 @@ void _algorithmic_function_definition_and_use() {
117
119
print ('my_min(1, x, -1) = $exp ' );
118
120
119
121
// (1) Evaluate algorithmic function: MY_MIN (R^3 -> R)
120
- ContextModel cm = ContextModel ();
121
- Variable x = Variable ('x' );
122
+ var context = ContextModel ();
123
+ var evaluator = RealEvaluator (context);
124
+ var x = Variable ('x' );
122
125
123
- cm .bindVariable (x, - Number (2 ));
126
+ context .bindVariable (x, - Number (2 ));
124
127
125
- double res = exp .evaluate (EvaluationType . REAL , cm );
126
- print ('my_min(1, ${cm .getExpression ('x' )}, -1) = $res ' );
128
+ num res = evaluator .evaluate (exp );
129
+ print ('my_min(1, ${context .getExpression ('x' )}, -1) = $res ' );
127
130
}
0 commit comments