@Override public ArithmeticExpression clone(List<Expression> children) { return new DoubleSubtractExpression(children); }
@Override public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) { double result = 0.0; for (int i = 0; i < children.size(); i++) { Expression child = children.get(i); if (!child.evaluate(tuple, ptr)) { return false; } if (ptr.getLength() == 0) { return true; } double childvalue = child.getDataType().getCodec() .decodeDouble(ptr, child.getSortOrder()); if (!Double.isNaN(childvalue) && childvalue != Double.NEGATIVE_INFINITY && childvalue != Double.POSITIVE_INFINITY) { if (i == 0) { result = childvalue; } else { result -= childvalue; } } else { return false; } } byte[] resultPtr = new byte[getDataType().getByteSize()]; getDataType().getCodec().encodeDouble(result, resultPtr, 0); ptr.set(resultPtr); return true; }
@Test public void subtract() throws Exception { List<Expression> args = Lists.newArrayList(getInvertedLiteral(10, PInteger.INSTANCE), getLiteral(2)); evaluateAndAssertResult(new DecimalSubtractExpression(args), BigDecimal.valueOf(8)); args = Lists.newArrayList(getInvertedLiteral(10, PInteger.INSTANCE), getLiteral(2)); evaluateAndAssertResult(new LongSubtractExpression(args), 8l); args = Lists.newArrayList(getInvertedLiteral(10.0, PFloat.INSTANCE), getLiteral(2)); evaluateAndAssertResult(new DoubleSubtractExpression(args), 8.0); args = Lists.newArrayList(getInvertedLiteral(10.0, PUnsignedFloat.INSTANCE), getLiteral(2)); evaluateAndAssertResult(new DoubleSubtractExpression(args), 8.0); args = Lists.newArrayList(getInvertedLiteral(10.0, PUnsignedDouble.INSTANCE), getLiteral(2)); evaluateAndAssertResult(new DoubleSubtractExpression(args), 8.0); args = Lists.newArrayList(getInvertedLiteral(10.0, PDouble.INSTANCE), getLiteral(2)); evaluateAndAssertResult(new DoubleSubtractExpression(args), 8.0); }
@Override public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) { double result = 0.0; for (int i = 0; i < children.size(); i++) { Expression child = children.get(i); if (!child.evaluate(tuple, ptr)) { return false; } if (ptr.getLength() == 0) { return true; } double childvalue = child.getDataType().getCodec() .decodeDouble(ptr, child.getSortOrder()); if (!Double.isNaN(childvalue) && childvalue != Double.NEGATIVE_INFINITY && childvalue != Double.POSITIVE_INFINITY) { if (i == 0) { result = childvalue; } else { result -= childvalue; } } else { return false; } } byte[] resultPtr = new byte[getDataType().getByteSize()]; getDataType().getCodec().encodeDouble(result, resultPtr, 0); ptr.set(resultPtr); return true; }
@Override public ArithmeticExpression clone(List<Expression> children) { return new DoubleSubtractExpression(children); }
@Override public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) { double result = 0.0; for (int i = 0; i < children.size(); i++) { Expression child = children.get(i); if (!child.evaluate(tuple, ptr)) { return false; } if (ptr.getLength() == 0) { return true; } double childvalue = child.getDataType().getCodec() .decodeDouble(ptr, child.getSortOrder()); if (!Double.isNaN(childvalue) && childvalue != Double.NEGATIVE_INFINITY && childvalue != Double.POSITIVE_INFINITY) { if (i == 0) { result = childvalue; } else { result -= childvalue; } } else { return false; } } byte[] resultPtr = new byte[getDataType().getByteSize()]; getDataType().getCodec().encodeDouble(result, resultPtr, 0); ptr.set(resultPtr); return true; }
@Override public ArithmeticExpression clone(List<Expression> children) { return new DoubleSubtractExpression(children); }
return new LongSubtractExpression(children); } else if (theType == PDouble.INSTANCE) { return new DoubleSubtractExpression(children); } else if (theType == null) { return LiteralExpression.newConstant(null, theType, determinism);
e1 = new DoubleAddExpression(children); children = Arrays.<Expression>asList(op3, op4); e2 = new DoubleSubtractExpression(children); e3 = new DoubleAddExpression(Arrays.<Expression>asList(e1, e2)); e4 = new DoubleAddExpression(Arrays.<Expression>asList(new RandomFunction(Arrays.<Expression>asList(LiteralExpression.newConstant(null))), e3));
return new LongSubtractExpression(children); } else if (theType == PDouble.INSTANCE) { return new DoubleSubtractExpression(children); } else if (theType == null) { return LiteralExpression.newConstant(null, theType, determinism);
return new LongSubtractExpression(children); } else if (theType == PDouble.INSTANCE) { return new DoubleSubtractExpression(children); } else if (theType == null) { return LiteralExpression.newConstant(null, theType, determinism);