Example usage for com.google.common.math LongMath divide

List of usage examples for com.google.common.math LongMath divide

Introduction

In this page you can find the example usage for com.google.common.math LongMath divide.

Prototype

@GwtIncompatible("TODO")
@SuppressWarnings("fallthrough")
public static long divide(long p, long q, RoundingMode mode) 

Source Link

Document

Returns the result of dividing p by q , rounding using the specified RoundingMode .

Usage

From source file:com.google.caliper.runner.instrument.NanoTimeGranularityModule.java

@Provides
@RunScoped// w  w  w .jav  a2s  .c  om
@NanoTimeGranularity
static ShortDuration testNanoTimeGranularity() {
    long total = 0L;
    for (int i = 0; i < TRIALS; i++) {
        long first = System.nanoTime();
        long second = System.nanoTime();
        long third = System.nanoTime();
        long fourth = System.nanoTime();
        long fifth = System.nanoTime();
        long sixth = System.nanoTime();
        long seventh = System.nanoTime();
        long eighth = System.nanoTime();
        long ninth = System.nanoTime();
        total += second - first;
        total += third - second;
        total += fourth - third;
        total += fifth - fourth;
        total += sixth - fifth;
        total += seventh - sixth;
        total += eighth - seventh;
        total += ninth - eighth;
    }
    return ShortDuration.of(LongMath.divide(total, TRIALS * 8, CEILING), NANOSECONDS);
}

From source file:c5db.log.LogTestUtil.java

/**
 * Create and return (end - start) entries, in ascending sequence number order, from start inclusive,
 * to end exclusive./*from   w  w  w  . ja v  a2  s . c o  m*/
 */
public static List<OLogEntry> someConsecutiveEntries(long start, long end) {
    List<OLogEntry> entries = new ArrayList<>();
    for (long i = start; i < end; i++) {
        entries.add(makeEntry(i, LongMath.divide(i + 1, 2, RoundingMode.CEILING), someData()));
    }
    return entries;
}

From source file:com.google.jimfs.HeapDisk.java

/**  Returns the nearest multiple of {@code blockSize} that is <= {@code size}. */
private static int toBlockCount(long size, int blockSize) {
    return (int) LongMath.divide(size, blockSize, RoundingMode.FLOOR);
}

From source file:org.fabrician.enabler.util.TimeUtil.java

/**
 * Format duration message in integral units of increasing coarse grains for display purpose
 * /*from  w  ww. jav  a 2s.  com*/
 * @param duration
 *            the duration in millisecs
 * @return a formatted duration string in secs, mins,hrs or weeks
 */
public static String formatDuration(long duration) {
    Validate.isTrue(duration >= 0, "Duration is negative", duration);
    if (duration < SEC_DURATION) {
        return duration + "ms";
    } else if (duration >= SEC_DURATION && duration < MIN_DURATION) {
        return formatDurationMsg(TimeUnit.MILLISECONDS.toSeconds(duration), "sec");
    } else if (duration >= MIN_DURATION && duration < HR_DURATION) {
        long num_secs = TimeUnit.MILLISECONDS.toSeconds(duration);
        long num_mins = LongMath.divide(num_secs, 60, RoundingMode.DOWN);
        long residue_secs = num_secs - (num_mins * 60);
        return formatDurationMsg(num_mins, "min", residue_secs, "sec");
    } else if (duration >= HR_DURATION && duration < DAY_DURATION) {
        long num_mins = TimeUnit.MILLISECONDS.toMinutes(duration);
        long num_hrs = LongMath.divide(num_mins, 60, RoundingMode.DOWN);
        long residue_mins = num_mins - (num_hrs * 60);
        return formatDurationMsg(num_hrs, "hr", residue_mins, "min");
    } else if (duration >= DAY_DURATION && duration < WEEK_DURATION) {
        long num_hrs = TimeUnit.MILLISECONDS.toHours(duration);
        long num_days = LongMath.divide(num_hrs, 24, RoundingMode.DOWN);
        long residue_hrs = num_hrs - (num_days * 24);
        return formatDurationMsg(num_days, "day", residue_hrs, "hr");
    } else {
        long num_days = TimeUnit.MILLISECONDS.toDays(duration);
        long num_weeks = LongMath.divide(num_days, 7, RoundingMode.DOWN);
        long residue_days = num_days - (num_weeks * 7);
        return formatDurationMsg(num_weeks, "week", residue_days, "day");
    }

}

From source file:com.duprasville.guava.probably.CuckooTable.java

public static int calculateDataLength(long numBuckets, int numEntriesPerBucket, int numBitsPerEntry) {
    checkArgument(numBuckets > 0, "numBuckets (%s) must be > 0", numBuckets);
    checkArgument(numEntriesPerBucket > 0, "numEntriesPerBucket (%s) must be > 0", numEntriesPerBucket);
    checkArgument(numBitsPerEntry > 0, "numBitsPerEntry (%s) must be > 0", numBitsPerEntry);

    return Ints.checkedCast(LongMath.divide(
            LongMath.checkedMultiply(numBuckets,
                    LongMath.checkedMultiply(numEntriesPerBucket, numBitsPerEntry)),
            Long.SIZE, RoundingMode.CEILING));
}

From source file:io.crate.operation.scalar.timestamp.CurrentTimestampFunction.java

private static long applyPrecision(long millis, int precision) {
    int factor;/*from w ww  . java 2s .co  m*/
    switch (precision) {
    case 0:
        factor = 1000;
        break;
    case 1:
        factor = 100;
        break;
    case 2:
        factor = 10;
        break;
    case 3:
        return millis;
    default:
        throw new IllegalArgumentException("Precision must be between 0 and 3");
    }
    return LongMath.divide(millis, factor, RoundingMode.DOWN) * factor;
}

From source file:gobblin.source.extractor.extract.LongWatermark.java

@Override
public short calculatePercentCompletion(Watermark lowWatermark, Watermark highWatermark) {
    Preconditions.checkArgument(lowWatermark instanceof LongWatermark);
    Preconditions.checkArgument(highWatermark instanceof LongWatermark);
    long total = ((LongWatermark) highWatermark).value - ((LongWatermark) lowWatermark).value;
    long pulled = this.value - ((LongWatermark) lowWatermark).value;
    Preconditions.checkState(total >= 0);
    Preconditions.checkState(pulled >= 0);
    if (total == 0) {
        return 0;
    }/*from   w  w  w .java 2s . c  om*/
    long percent = Math.min(100, LongMath.divide(pulled * 100, total, RoundingMode.HALF_UP));
    return (short) percent;
}

From source file:org.terasology.world.sun.DefaultCelestialSystem.java

/**
 * Updates the game perception of the time of day via launching a new OnMiddayEvent(),
 * OnDuskEvent(), OnMidnightEvent(), or OnDawnEvent() based on the time of day when
 * this method is called upon./*from   ww  w .  j  a v  a2s.c o m*/
 */
protected void fireEvents() {
    long startTime = worldTime.getMilliseconds();
    long delta = startTime - lastUpdate;
    if (delta > 0) {
        long timeInDay = LongMath.mod(startTime, DAY_LENGTH);
        long day = LongMath.divide(startTime, DAY_LENGTH, RoundingMode.FLOOR);

        long dawn = model.getDawn(day);
        long midday = model.getMidday(day);
        long dusk = model.getDusk(day);
        long midnight = model.getMidnight(day);

        if (timeInDay - delta < midday && timeInDay >= midday) {
            long tick = day * DAY_LENGTH + midday;
            getWorldEntity().send(new OnMiddayEvent(tick));
        }

        if (timeInDay - delta < dusk && timeInDay >= dusk) {
            long tick = day * DAY_LENGTH + dusk;
            getWorldEntity().send(new OnDuskEvent(tick));
        }

        if (timeInDay - delta < midnight && timeInDay >= midnight) {
            long tick = day * DAY_LENGTH + midnight;
            getWorldEntity().send(new OnMidnightEvent(tick));
        }

        if (timeInDay - delta < dawn && timeInDay >= dawn) {
            long tick = day * DAY_LENGTH + dawn;
            getWorldEntity().send(new OnDawnEvent(tick));
        }
    }

    lastUpdate = startTime;
}

From source file:org.terasology.world.time.WorldTimeImpl.java

@Override
public void update(float delta) {
    long deltaMs = time.getDeltaInMs();
    if (deltaMs > 0) {
        deltaMs = (long) (deltaMs * WORLD_TIME_MULTIPLIER);
        long startTime = worldTime.getAndAdd(deltaMs);
        long endTime = startTime + deltaMs;
        long timeInDay = LongMath.mod(startTime, DAY_LENGTH);
        long day = LongMath.divide(startTime, DAY_LENGTH, RoundingMode.FLOOR);

        long startTick = startTime / TICK_EVENT_RATE;
        long endTick = (endTime) / TICK_EVENT_RATE;

        if (startTick != endTick) {
            long tick = endTime - endTime % TICK_EVENT_RATE;
            getWorldEntity().send(new WorldTimeEvent(tick));
        }/*from w  w w.j  a  va 2s.com*/

        if (timeInDay < MIDDAY_TIME && timeInDay + deltaMs >= MIDDAY_TIME) {
            long tick = day * DAY_LENGTH + MIDDAY_TIME;
            getWorldEntity().send(new OnMiddayEvent(tick));
        }

        if (timeInDay < DUSK_TIME && timeInDay + deltaMs >= DUSK_TIME) {
            long tick = day * DAY_LENGTH + DUSK_TIME;
            getWorldEntity().send(new OnDuskEvent(tick));
        }

        if (timeInDay < MIDNIGHT_TIME && timeInDay + deltaMs >= MIDNIGHT_TIME) {
            long tick = day * DAY_LENGTH + MIDNIGHT_TIME;
            getWorldEntity().send(new OnMidnightEvent(tick));
        }

        if (timeInDay < DAWN_TIME && timeInDay + deltaMs >= DAWN_TIME) {
            long tick = day * DAY_LENGTH + DAWN_TIME;
            getWorldEntity().send(new OnDawnEvent(tick));
        }
    }
}

From source file:gobblin.source.extractor.extract.kafka.MultiLongWatermark.java

/**
 * Given a low watermark (starting point) and a high watermark (target), returns the percentage
 * of events pulled.//from  w  ww.j a  va2  s. com
 *
 * @return a percentage value between 0 and 100.
 */
@Override
public short calculatePercentCompletion(Watermark lowWatermark, Watermark highWatermark) {
    Preconditions.checkArgument(
            lowWatermark instanceof MultiLongWatermark && highWatermark instanceof MultiLongWatermark,
            String.format("Arguments of %s.%s must be of type %s", MultiLongWatermark.class.getSimpleName(),
                    Thread.currentThread().getStackTrace()[1].getMethodName(),
                    MultiLongWatermark.class.getSimpleName()));

    long pulled = ((MultiLongWatermark) lowWatermark).getGap(this);
    long all = ((MultiLongWatermark) lowWatermark).getGap((MultiLongWatermark) highWatermark);
    Preconditions.checkState(all > 0);
    long percent = Math.min(100, LongMath.divide(pulled * 100, all, RoundingMode.HALF_UP));
    return (short) percent;
}