/** * @param c * @param vars * @return * @throws DMLRuntimeException */ private static LiteralOp replaceLiteralValueTypeCastLiteral(Hop c, LocalVariableMap vars) throws DMLRuntimeException { LiteralOp ret = null; // as.double/as.integer/as.boolean over scalar literal (potentially created by other replacement // rewrite in same dag) - literal replacement if (c instanceof UnaryOp && (((UnaryOp) c).getOp() == OpOp1.CAST_AS_DOUBLE || ((UnaryOp) c).getOp() == OpOp1.CAST_AS_INT || ((UnaryOp) c).getOp() == OpOp1.CAST_AS_BOOLEAN) && c.getInput().get(0) instanceof LiteralOp) { LiteralOp sdat = (LiteralOp) c.getInput().get(0); UnaryOp cast = (UnaryOp) c; try { switch (cast.getOp()) { case CAST_AS_INT: long ival = HopRewriteUtils.getIntValue(sdat); ret = new LiteralOp(ival); break; case CAST_AS_DOUBLE: double dval = HopRewriteUtils.getDoubleValue(sdat); ret = new LiteralOp(dval); break; case CAST_AS_BOOLEAN: boolean bval = HopRewriteUtils.getBooleanValue(sdat); ret = new LiteralOp(bval); break; default: // otherwise: do nothing } } catch (HopsException ex) { throw new DMLRuntimeException(ex); } } return ret; }