@@ -192,112 +192,46 @@ public List<Expr> getExprs() {
192
192
public static final Expr MULT = new MultExpr ();
193
193
194
194
public static Polynomial eval (Expr expr ) {
195
- return switch (expr ) {
195
+ Expr exprs = Macro .applyStarMacro (expr .getExprs ());
196
+ return switch (exprs ) {
196
197
case PlusListExpr listExpr -> {
197
198
if (listExpr .value .size () == 1 ) {
198
199
yield eval (listExpr .value ().getFirst ());
199
200
}
200
- Expr exprs = Macro .applyStarMacro (listExpr .value );
201
201
if (exprs .size () == 1 ) {
202
202
yield eval (exprs .getFirst ());
203
203
}
204
- Polynomial result ;
205
- if (hasPlus (exprs )) {
206
- result = Polynomial .ZERO ;
207
- int sign = 1 ;
208
- for (Expr exp : exprs .getExprs ()) {
209
- if (isMinus (exp )) {
210
- sign = -1 ;
211
- continue ;
212
- }
213
- if (isPlus (exp )) {
214
- sign = 1 ;
215
- continue ;
216
- }
217
- Polynomial p = eval (exp );
218
- result = result .add (p .multiply (sign ));
204
+ Polynomial result = Polynomial .ZERO ;
205
+ int sign = 1 ;
206
+ for (Expr exp : exprs .getExprs ()) {
207
+ if (isMinus (exp )) {
208
+ sign = -1 ;
209
+ continue ;
219
210
}
220
- } else {
221
- result = Polynomial .ONE ;
222
- for (Expr exp : exprs .getExprs ()) {
223
- if (isOperator (exp )) {
224
- continue ;
225
- }
226
- Polynomial p = eval (exp );
227
- result = result .multiply (p );
211
+ if (isPlus (exp )) {
212
+ sign = 1 ;
213
+ continue ;
228
214
}
215
+ Polynomial p = eval (exp );
216
+ result = result .add (p .multiply (sign ));
229
217
}
230
218
yield result ;
231
219
}
232
220
case MultListExpr listExpr -> {
233
221
if (listExpr .value .size () == 1 ) {
234
222
yield eval (listExpr .value ().getFirst ());
235
223
}
236
- Expr exprs = Macro .applyStarMacro (listExpr .value );
237
224
if (exprs .size () == 1 ) {
238
225
yield eval (exprs .getFirst ());
239
226
}
240
227
Polynomial result ;
241
- if (hasPlus (exprs )) {
242
- result = Polynomial .ZERO ;
243
- int sign = 1 ;
244
- for (Expr exp : exprs .getExprs ()) {
245
- if (isMinus (exp )) {
246
- sign = -1 ;
247
- continue ;
248
- }
249
- if (isPlus (exp )) {
250
- sign = 1 ;
251
- continue ;
252
- }
253
- Polynomial p = eval (exp );
254
- result = result .add (p .multiply (sign ));
255
- }
256
- } else {
257
- result = Polynomial .ONE ;
258
- for (Expr exp : exprs .getExprs ()) {
259
- if (isOperator (exp )) {
260
- continue ;
261
- }
262
- Polynomial p = eval (exp );
263
- result = result .multiply (p );
264
- }
265
- }
266
- yield result ;
267
- }
268
- case ListExpr listExpr -> {
269
- if (listExpr .value .size () == 1 ) {
270
- yield eval (listExpr .value ().getFirst ());
271
- }
272
- Expr exprs = Macro .applyStarMacro (listExpr .value );
273
- if (exprs .size () == 1 ) {
274
- yield eval (exprs .getFirst ());
275
- }
276
- Polynomial result ;
277
- if (hasPlus (exprs )) {
278
- result = Polynomial .ZERO ;
279
- int sign = 1 ;
280
- for (Expr exp : exprs .getExprs ()) {
281
- if (isMinus (exp )) {
282
- sign = -1 ;
283
- continue ;
284
- }
285
- if (isPlus (exp )) {
286
- sign = 1 ;
287
- continue ;
288
- }
289
- Polynomial p = eval (exp );
290
- result = result .add (p .multiply (sign ));
291
- }
292
- } else {
293
- result = Polynomial .ONE ;
294
- for (Expr exp : exprs .getExprs ()) {
295
- if (isOperator (exp )) {
296
- continue ;
297
- }
298
- Polynomial p = eval (exp );
299
- result = result .multiply (p );
228
+ result = Polynomial .ONE ;
229
+ for (Expr exp : exprs .getExprs ()) {
230
+ if (isOperator (exp )) {
231
+ continue ;
300
232
}
233
+ Polynomial p = eval (exp );
234
+ result = result .multiply (p );
301
235
}
302
236
yield result ;
303
237
}
0 commit comments