Package ghidra.util

# Class MathUtilities

java.lang.Object
ghidra.util.MathUtilities

public class MathUtilities extends Object

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static int`
  `clamp(int value, int min, int max)`
  Ensures that the given value is within the given range.
  `static void`
  `main(String[] args)`
  `static long`
  `unsignedDivide(long numerator, long denominator)`
  Perform unsigned division.
  `static int`
  `unsignedMax(int a, int b)`
  Compute the maximum, treating the inputs as unsigned
  `static long`
  `unsignedMax(int a, long b)`
  Compute the maximum, treating the inputs as unsigned
  `static long`
  `unsignedMax(long a, int b)`
  Compute the maximum, treating the inputs as unsigned
  `static long`
  `unsignedMax(long a, long b)`
  Compute the maximum, treating the inputs as unsigned
  `static int`
  `unsignedMin(int a, int b)`
  Compute the minimum, treating the inputs as unsigned
  `static int`
  `unsignedMin(int a, long b)`
  Compute the minimum, treating the inputs as unsigned
  `static int`
  `unsignedMin(long a, int b)`
  Compute the minimum, treating the inputs as unsigned
  `static long`
  `unsignedMin(long a, long b)`
  Compute the minimum, treating the inputs as unsigned
  `static long`
  `unsignedModulo(long numerator, long denominator)`
  Perform unsigned modulo.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Method Details

  - ### unsignedDivide

    public static long unsignedDivide(long numerator, long denominator)
    Perform unsigned division. Provides proper handling of all 64-bit unsigned values.
    Parameters:
      `numerator` - unsigned numerator
      `denominator` - positive divisor
    Returns:
      result of unsigned division
    Throws:
      `IllegalArgumentException` - if negative denominator is specified

  - ### unsignedModulo

    public static long unsignedModulo(long numerator, long denominator)
    Perform unsigned modulo. Provides proper handling of all 64-bit unsigned values.
    Parameters:
      `numerator` - unsigned numerator
      `denominator` - positive divisor
    Returns:
      result of unsigned modulo (i.e., remainder)
    Throws:
      `IllegalArgumentException` - if negative denominator is specified

  - ### clamp

    public static int clamp(int value, int min, int max)
    Ensures that the given value is within the given range.
    Parameters:
      `value` - the value to check
      `min` - the minimum value allowed
      `max` - the maximum value allowed
    Returns:
      the clamped value

  - ### main

    public static void main(String[] args)

  - ### unsignedMin

    public static long unsignedMin(long a, long b)
    Compute the minimum, treating the inputs as unsigned
    Parameters:
      `a` - the first value to consider
      `b` - the second value to consider
    Returns:
      the minimum

  - ### unsignedMin

    public static int unsignedMin(int a, int b)
    Compute the minimum, treating the inputs as unsigned
    Parameters:
      `a` - the first value to consider
      `b` - the second value to consider
    Returns:
      the minimum

  - ### unsignedMin

    public static int unsignedMin(int a, long b)
    Compute the minimum, treating the inputs as unsigned

    This method is overloaded to prevent accidental signed-extension on one of the inputs. This method will correctly zero-extend the `int` parameter before performing any comparison. Also note the return type is `int`, since b would never be selected if it overflows an `int`.

    Parameters:
      `a` - the first value to consider
      `b` - the second value to consider
    Returns:
      the minimum

  - ### unsignedMin

    public static int unsignedMin(long a, int b)
    Compute the minimum, treating the inputs as unsigned

    This method is overloaded to prevent accidental signed-extension on one of the inputs. This method will correctly zero-extend the `int` parameter before performing any comparison. Also note the return type is `int`, since b would never be selected if it overflows an `int`.

    Parameters:
      `a` - the first value to consider
      `b` - the second value to consider
    Returns:
      the minimum

  - ### unsignedMax

    public static long unsignedMax(long a, long b)
    Compute the maximum, treating the inputs as unsigned
    Parameters:
      `a` - the first value to consider
      `b` - the second value to consider
    Returns:
      the maximum

  - ### unsignedMax

    public static int unsignedMax(int a, int b)
    Compute the maximum, treating the inputs as unsigned
    Parameters:
      `a` - the first value to consider
      `b` - the second value to consider
    Returns:
      the maximum

  - ### unsignedMax

    public static long unsignedMax(int a, long b)
    Compute the maximum, treating the inputs as unsigned

    This method is overloaded to prevent accidental signed-extension on one of the inputs. This method will correctly zero-extend the `int` parameter before performing any comparison.

    Parameters:
      `a` - the first value to consider
      `b` - the second value to consider
    Returns:
      the maximum

  - ### unsignedMax

    public static long unsignedMax(long a, int b)
    Compute the maximum, treating the inputs as unsigned

    This method is overloaded to prevent accidental signed-extension on one of the inputs. This method will correctly zero-extend the `int` parameter before performing any comparison.

    Parameters:
      `a` - the first value to consider
      `b` - the second value to consider
    Returns:
      the maximum