@Override public Number combine(Number val1, Number val2) { return Numbers.add(val1, val2); }
long rangeCount(long start, long end, long step) { // (1) count = ceiling ( (end - start) / step ) // (2) ceiling(a/b) = (a+b+o)/b where o=-1 for positive stepping and +1 for negative stepping // thus: count = end - start + step + o / step return Numbers.add(Numbers.add(Numbers.minus(end, start), step), this.step > 0 ? -1 : 1) / step; }
public Object next() { if (hasNext) { long ret = next; try { next = Numbers.add(next, step); hasNext = ! boundsCheck.exceededBounds(next); } catch(ArithmeticException e) { hasNext = false; } return ret; } else { throw new NoSuchElementException(); } }
long steppingCount(long start, long end, long step) { long count = 1; long s = start; while(count <= CHUNK_SIZE) { try { s = Numbers.add(s, step); if(boundsCheck.exceededBounds(s)) break; else count++; } catch(ArithmeticException e) { break; } } return count; }
@Override public void execute(Tuple tuple) { Object key = tuple.getValue(1); Number curr = Utils.get(_sums, key, 0); _sums.put(key, Numbers.add(curr, tuple.getValue(2))); }
public Number dec(Number x){ return Numbers.add(x, -1); }
static public Number add(long x, Object y){ return add((Object)x,y); }
@Override public Number combine(Number val1, Number val2) { return Numbers.add(val1, val2); }
public Number inc(Number x){ return Numbers.add(x, 1); }
@Override public Number combine(Number val1, Number val2) { return Numbers.add(val1, val2); }
@Override public Number combine(Number val1, Number val2) { return Numbers.add(val1, val2); }
static public double unchecked_add(double x, double y){return add(x,y);} static public double unchecked_minus(double x, double y){return minus(x,y);}
static public Number unchecked_add(long x, Object y){return add(x,y);} static public Number unchecked_minus(long x, Object y){return minus(x,y);}
static public double add(Object x, double y){ return add(((Number)x).doubleValue(),y); }
static public double add(double x, Object y){ return add(x,((Number)y).doubleValue()); }
long rangeCount(long start, long end, long step) { // (1) count = ceiling ( (end - start) / step ) // (2) ceiling(a/b) = (a+b+o)/b where o=-1 for positive stepping and +1 for negative stepping // thus: count = end - start + step + o / step return Numbers.add(Numbers.add(Numbers.minus(end, start), step), this.step > 0 ? -1 : 1) / step; }
public Object next() { if (hasNext) { long ret = next; try { next = Numbers.add(next, step); hasNext = ! boundsCheck.exceededBounds(next); } catch(ArithmeticException e) { hasNext = false; } return ret; } else { throw new NoSuchElementException(); } }
@Override public void execute(Tuple tuple) { Object key = tuple.getValue(1); Number curr = Utils.get(_sums, key, 0); _sums.put(key, Numbers.add(curr, tuple.getValue(2))); }
@Override public void execute(Tuple tuple) { Object key = tuple.getValue(1); Number curr = Utils.get(_sums, key, 0); _sums.put(key, Numbers.add(curr, tuple.getValue(2))); }
@Override public void execute(Tuple tuple) { Object key = tuple.getValue(1); Number curr = Utils.get(_sums, key, 0); _sums.put(key, Numbers.add(curr, tuple.getValue(2))); }