| 124 | } |
| 125 | |
| 126 | @Override |
| 127 | public Expr simplifyFor(final Simplify mode, final CompileContext cc) throws QueryException { |
| 128 | Expr expr = this; |
| 129 | if(mode == Simplify.PREDICATE && Function.LAST.is(exprs[0]) && |
| 130 | exprs[1] instanceof final ANum num) { |
| 131 | // E[last() + 1] → E[false()] |
| 132 | final double d = num.dbl(); |
| 133 | if(calc == Calc.ADD && d > 0 || calc == Calc.SUBTRACT && d < 0 || |
| 134 | calc == Calc.MULTIPLY && d > 1 || calc == Calc.DIVIDE && d < 1) expr = Bln.FALSE; |
| 135 | } |
| 136 | return cc.simplify(this, expr, mode); |
| 137 | } |
| 138 | |
| 139 | @Override |
| 140 | public Arith copy(final CompileContext cc, final IntObjectMap<Var> vm) { |