Class MathUtil

java.lang.Object
org.lwjgl.system.MathUtil

public final class MathUtil extends Object
Math utility class.

Method names in this class are prefixed with math to avoid ambiguities when used with static imports.

  • Method Summary

    Modifier and Type
    Method
    Description
    static long
    mathDivideUnsigned(long dividend, long divisor)
    Returns the unsigned quotient of dividing the first argument by the second where each argument and the result is interpreted as an unsigned value.
    static boolean
    mathHasZeroByte(int value)
     
    static boolean
    mathHasZeroByte(long value)
     
    static boolean
    mathHasZeroShort(int value)
     
    static boolean
    mathHasZeroShort(long value)
     
    static boolean
    mathIsPoT(int value)
    Returns true if the specified integer value is a power-of-two number.
    static long
    mathMultiplyHighS64(long x, long y)
    Returns as a long the most significant 64 bits of the 128-bit product of two int64_t factors.
    static long
    mathMultiplyHighU64(long x, long y)
    Returns as a long the most significant 64 bits of the 128-bit product of two uint64_t factors.
    static long
    mathRemainderUnsigned(long dividend, long divisor)
    Returns the unsigned remainder from dividing the first argument by the second where each argument and the result is interpreted as an unsigned value.
    static int
    mathRoundPoT(int value)
    Rounds the specified integer value up to the next power-of-two number.

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • mathIsPoT

      public static boolean mathIsPoT(int value)
      Returns true if the specified integer value is a power-of-two number.
      Parameters:
      value - the value to test
      Returns:
      true if the value if a power-of-two number.
    • mathRoundPoT

      public static int mathRoundPoT(int value)
      Rounds the specified integer value up to the next power-of-two number. The returned value will be equal to value if it already is a power-of-two number.
      Parameters:
      value - the value to round-up. Must be a number between 1 and 1 << 30.
      Returns:
      the power-of-two rounded value
    • mathHasZeroByte

      public static boolean mathHasZeroByte(int value)
    • mathHasZeroByte

      public static boolean mathHasZeroByte(long value)
    • mathHasZeroShort

      public static boolean mathHasZeroShort(int value)
    • mathHasZeroShort

      public static boolean mathHasZeroShort(long value)
    • mathMultiplyHighU64

      public static long mathMultiplyHighU64(long x, long y)
      Returns as a long the most significant 64 bits of the 128-bit product of two uint64_t factors.
      Parameters:
      x - the first value
      y - the second value
      Returns:
      the result
    • mathMultiplyHighS64

      public static long mathMultiplyHighS64(long x, long y)
      Returns as a long the most significant 64 bits of the 128-bit product of two int64_t factors.
      Parameters:
      x - the first value
      y - the second value
      Returns:
      the result
    • mathDivideUnsigned

      public static long mathDivideUnsigned(long dividend, long divisor)
      Returns the unsigned quotient of dividing the first argument by the second where each argument and the result is interpreted as an unsigned value.

      When either argument is negative (i.e. a uint64_t value higher than 0x8000_0000_0000_0000L), this method uses bit twiddling to implement the division. The JDK implementation uses BigInteger for this case, which has a negative impact on performance.

      Parameters:
      dividend - the value to be divided
      divisor - the value doing the dividing
      Returns:
      the unsigned quotient of the first argument divided by the second argument
    • mathRemainderUnsigned

      public static long mathRemainderUnsigned(long dividend, long divisor)
      Returns the unsigned remainder from dividing the first argument by the second where each argument and the result is interpreted as an unsigned value.

      When either argument is negative (i.e. a uint64_t value higher than 0x8000_0000_0000_0000L), this method uses bit twiddling to implement the remainder. The JDK implementation uses BigInteger for this case, which has a negative impact on performance.

      Parameters:
      dividend - the value to be divided
      divisor - the value doing the dividing
      Returns:
      the unsigned remainder of the first argument divided by the second argument