Description
Returns the floor modulus of the long arguments.
License
Open Source License
Parameter
Parameter | Description |
---|
x | the dividend |
y | the divisor |
Exception
Parameter | Description |
---|
ArithmeticException | if the divisor y is zero |
Return
the floor modulus x - (floorDiv(x, y) * y)
Declaration
public static long floorMod(long x, long y)
Method Source Code
//package com.java2s;
/*/* ww w . j a va 2 s . c om*/
* Copyright 2015 Red Hat, Inc.
*
* This file is part of tzdbgen.
*
* tzdbgen is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published
* by the Free Software Foundation; either version 2, or (at your
* option) any later version.
*
* tzdbgen is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with tzdbgen; see the file COPYING. If not see
* <http://www.gnu.org/licenses/>.
*
* Linking this code with other modules is making a combined work
* based on this code. Thus, the terms and conditions of the GNU
* General Public License cover the whole combination.
*
* As a special exception, the copyright holders of this code give
* you permission to link this code with independent modules to
* produce an executable, regardless of the license terms of these
* independent modules, and to copy and distribute the resulting
* executable under terms of your choice, provided that you also
* meet, for each linked independent module, the terms and conditions
* of the license of that module. An independent module is a module
* which is not derived from or based on this code. If you modify
* this code, you may extend this exception to your version of the
* library, but you are not obligated to do so. If you do not wish
* to do so, delete this exception statement from your version.
*/
public class Main {
/**
* Returns the floor modulus of the {@code long} arguments.
* <p>
* The floor modulus is {@code x - (floorDiv(x, y) * y)},
* has the same sign as the divisor {@code y}, and
* is in the range of {@code -abs(y) < r < +abs(y)}.
*
* <p>
* The relationship between {@code floorDiv} and {@code floorMod} is such that:
* <ul>
* <li>{@code floorDiv(x, y) * y + floorMod(x, y) == x}
* </ul>
* <p>
* For examples, see {@link #floorMod(int, int)}.
*
* @param x the dividend
* @param y the divisor
* @return the floor modulus {@code x - (floorDiv(x, y) * y)}
* @throws ArithmeticException if the divisor {@code y} is zero
* @see #floorDiv(long, long)
* @since 1.8
*/
public static long floorMod(long x, long y) {
return x - floorDiv(x, y) * y;
}
/**
* Returns the largest (closest to positive infinity)
* {@code long} value that is less than or equal to the algebraic quotient.
* There is one special case, if the dividend is the
* {@linkplain Long#MIN_VALUE Long.MIN_VALUE} and the divisor is {@code -1},
* then integer overflow occurs and
* the result is equal to the {@code Long.MIN_VALUE}.
* <p>
* Normal integer division operates under the round to zero rounding mode
* (truncation). This operation instead acts under the round toward
* negative infinity (floor) rounding mode.
* The floor rounding mode gives different results than truncation
* when the exact result is negative.
* <p>
* For examples, see {@link #floorDiv(int, int)}.
*
* @param x the dividend
* @param y the divisor
* @return the largest (closest to positive infinity)
* {@code long} value that is less than or equal to the algebraic quotient.
* @throws ArithmeticException if the divisor {@code y} is zero
* @see #floorMod(long, long)
* @see #floor(double)
* @since 1.8
*/
public static long floorDiv(long x, long y) {
long r = x / y;
// if the signs are different and modulo not zero, round down
if ((x ^ y) < 0 && (r * y != x)) {
r--;
}
return r;
}
}
Related
- floorInt(float x)
- floorLogBaseTwo(final int i)
- floorLong(final double x)
- floormod(float a, float b)
- floorMod(long x, long y)
- floorModExt(int dividend, int divisor)
- floorModulo(int value, int divisor)
- floorPlaneAndHorizToPlanView(final int[][] frameCells, final short frame[], final int h)
- floorPlaneToPlanView(int[][] frameCells, final int h)