Package it.unimi.dsi

Class Util

java.lang.Object
it.unimi.dsi.Util

public final class Util extends Object
All-purpose static-method container class.
Since:
0.1
Author:
Sebastiano Vigna
  • Field Details

  • Method Details

    • format

      public static String format(double d)
      Formats a number.

      This method formats a double separating thousands and printing just two fractional digits.

      Note that the method is synchronized, as it uses a static NumberFormat.

      Parameters:
      d - a number.
      Returns:
      a string containing a pretty print of the number.
    • format

      public static String format(long l)
      Formats a number.

      This method formats a long separating thousands.

      Note that the method is synchronized, as it uses a static NumberFormat.

      Parameters:
      l - a number.
      Returns:
      a string containing a pretty print of the number.
    • format

      public static String format(double d, NumberFormat format)
      Formats a number using a specified NumberFormat.
      Parameters:
      d - a number.
      format - a format.
      Returns:
      a string containing a pretty print of the number.
    • format

      public static String format(long l, NumberFormat format)
      Formats a number using a specified NumberFormat.
      Parameters:
      l - a number.
      format - a format.
      Returns:
      a string containing a pretty print of the number.
    • formatSize

      public static String formatSize(long l)
      Formats a size.

      This method formats a long using suitable unit multipliers (e.g., K, M, G, and T) and printing just two fractional digits.

      Note that the method is synchronized, as it uses a static NumberFormat.

      Parameters:
      l - a number, representing a size (e.g., memory).
      Returns:
      a string containing a pretty print of the number using unit multipliers.
    • formatBinarySize

      public static String formatBinarySize(long l)
      Formats a binary size.

      This method formats a long using suitable unit binary multipliers (e.g., Ki, Mi, Gi, and Ti) and printing no fractional digits. The argument must be a power of 2.

      Note that the method is synchronized, as it uses a static NumberFormat.

      Parameters:
      l - a number, representing a binary size (e.g., memory); must be a power of 2.
      Returns:
      a string containing a pretty print of the number using binary unit multipliers.
    • formatSize2

      public static String formatSize2(long l)
      Formats a size.

      This method formats a long using suitable binary unit multipliers (e.g., Ki, Mi, Gi, and Ti) and printing just two fractional digits.

      Note that the method is synchronized, as it uses a static NumberFormat.

      Parameters:
      l - a number, representing a size (e.g., memory).
      Returns:
      a string containing a pretty print of the number using binary unit multipliers.
    • formatSize

      public static String formatSize(long l, NumberFormat format)
      Formats a size using a specified NumberFormat.

      This method formats a long using suitable unit multipliers (e.g., K, M, G, and T) and the given NumberFormat for the digits.

      Parameters:
      l - a number, representing a size (e.g., memory).
      format - a format.
      Returns:
      a string containing a pretty print of the number using unit multipliers.
    • formatBinarySize

      public static String formatBinarySize(long l, NumberFormat format)
      Formats a size using a specified NumberFormat.

      This method formats a long using suitable unit binary multipliers (e.g., Ki, Mi, Gi, and Ti) and the given NumberFormat for the digits. The argument must be a power of 2.

      Parameters:
      l - a number, representing a binary size (e.g., memory); must be a power of 2.
      format - a format.
      Returns:
      a string containing a pretty print of the number using binary unit multipliers.
    • formatSize2

      public static String formatSize2(long l, NumberFormat format)
      Formats a size using a specified NumberFormat and binary unit multipliers.

      This method formats a long using suitable binary unit multipliers (e.g., Ki, Mi, Gi, and Ti) and the given NumberFormat for the digits.

      Parameters:
      l - a number, representing a size (e.g., memory).
      format - a format.
      Returns:
      a string containing a pretty print of the number using binary unit multipliers.
    • memoryIsLow

      public static boolean memoryIsLow()
      Returns true if less then 5% of the available memory is free.
      Returns:
      true if less then 5% of the available memory is free.
    • availableMemory

      public static long availableMemory()
      Returns the amount of available memory (free memory plus never allocated memory).
      Returns:
      the amount of available memory, in bytes.
    • percAvailableMemory

      public static int percAvailableMemory()
      Returns the percentage of available memory (free memory plus never allocated memory).
      Returns:
      the percentage of available memory.
    • compactMemory

      public static void compactMemory()
      Tries to compact memory as much as possible by forcing garbage collection.
    • randomSeed

      public static long randomSeed()
      Returns a random seed generated by taking the output of a XoRoShiRo128PlusRandomGenerator (seeded at startup with System.nanoTime()) and xoring it with System.nanoTime().
      Returns:
      a reasonably good random seed.
    • randomSeedBytes

      public static byte[] randomSeedBytes()
      Returns a random seed generated by randomSeed() under the form of an array of eight bytes.
      Returns:
      a reasonably good random seed.
    • invertPermutationInPlace

      public static int[] invertPermutationInPlace(int[] perm)
      Computes in place the inverse of a permutation expressed as an array of n distinct integers in [0 .. n).

      Warning: if perm is not a permutation, essentially anything can happen.

      Parameters:
      perm - the permutation to be inverted.
      Returns:
      perm.
    • invertPermutation

      public static int[] invertPermutation(int[] perm, int[] inv)
      Computes the inverse of a permutation expressed as an array of n distinct integers in [0 .. n).

      Warning: if perm is not a permutation, essentially anything can happen.

      Parameters:
      perm - the permutation to be inverted.
      inv - the array storing the inverse.
      Returns:
      inv.
    • invertPermutation

      public static int[] invertPermutation(int[] perm)
      Computes the inverse of a permutation expressed as an array of n distinct integers in [0 .. n) and stores the result in a new array.

      Warning: if perm is not a permutation, essentially anything can happen.

      Parameters:
      perm - the permutation to be inverted.
      Returns:
      a new array containing the inverse permutation.
    • identity

      public static int[] identity(int[] perm)
      Stores the identity permutation in an array.
      Parameters:
      perm - an array of integers.
      Returns:
      perm, filled with the identity permutation.
    • identity

      public static int[] identity(int n)
      Stores the identity permutation in a new array of given length.
      Parameters:
      n - the size of the array.
      Returns:
      a new array of length n, filled with the identity permutation.
    • composePermutations

      public static int[] composePermutations(int[] p, int[] q, int[] r)
      Computes the composition of two permutations expressed as arrays of n distinct integers in [0 .. n).

      Warning: if the arguments are not permutations, essentially anything can happen.

      Parameters:
      p - the first permutation.
      q - the second permutation.
      r - an array that will store the resulting permutation: r[i] = q[p[i]].
      Returns:
      r.
    • composePermutations

      public static int[] composePermutations(int[] p, int[] q)
      Computes the composition of two permutations expressed as arrays of n distinct integers in [0 .. n).

      Warning: if the arguments are not permutations, essentially anything can happen.

      Parameters:
      p - the first permutation.
      q - the second permutation.
      Returns:
      an array r containing the resulting permutation: r[i] = q[p[i]].
      See Also:
    • composePermutationsInPlace

      public static int[] composePermutationsInPlace(int[] p, int[] q)
      Computes in place the composition of two permutations expressed as arrays of n distinct integers in [0 .. n).

      Warning: if the arguments are not permutations, essentially anything can happen.

      Parameters:
      p - the first permutation.
      q - the second permutation, which will contain the result at the end.
      Returns:
      q.
      See Also:
    • invertPermutationInPlace

      public static long[][] invertPermutationInPlace(long[][] perm)
      Computes in place the inverse of a permutation expressed as a big array of n distinct long integers in [0 .. n).

      Warning: if perm is not a permutation, essentially anything can happen.

      Parameters:
      perm - the permutation to be inverted.
      Returns:
      perm.
    • invertPermutation

      public static long[][] invertPermutation(long[][] perm, long[][] inv)
      Computes the inverse of a permutation expressed as a big array of n distinct long integers in [0 .. n).

      Warning: if perm is not a permutation, essentially anything can happen.

      Parameters:
      perm - the permutation to be inverted.
      inv - the big array storing the inverse.
      Returns:
      inv.
    • invertPermutation

      public static long[][] invertPermutation(long[][] perm)
      Computes the inverse of a permutation expressed as a big array of n distinct long integers in [0 .. n) and stores the result in a new big array.

      Warning: if perm is not a permutation, essentially anything can happen.

      Parameters:
      perm - the permutation to be inverted.
      Returns:
      a new big array containing the inverse permutation.
    • identity

      public static long[][] identity(long[][] perm)
      Stores the identity permutation in a big array.
      Parameters:
      perm - a big array.
      Returns:
      perm, filled with the identity permutation.
    • identity

      public static long[][] identity(long n)
      Stores the identity permutation in a new big array of given length.
      Parameters:
      n - the size of the array.
      Returns:
      a new array of length n, filled with the identity permutation.
    • composePermutations

      public static long[][] composePermutations(long[][] p, long[][] q, long[][] r)
      Computes the composition of two permutations expressed as big arrays of n distinct long integers in [0 .. n).

      Warning: if the arguments are not permutations, essentially anything can happen.

      Parameters:
      p - the first permutation.
      q - the second permutation.
      r - an array that will store the resulting permutation: r[i] = q[p[i]].
      Returns:
      r.
    • composePermutations

      public static long[][] composePermutations(long[][] p, long[][] q)
      Computes the composition of two permutations expressed as big arrays of n distinct long integers in [0 .. n).

      Warning: if the arguments are not permutations, essentially anything can happen.

      Parameters:
      p - the first permutation.
      q - the second permutation.
      Returns:
      an array r containing the resulting permutation: r[i] = q[p[i]].
      See Also:
    • composePermutationsInPlace

      public static long[][] composePermutationsInPlace(long[][] p, long[][] q)
      Computes in place the composition of two permutations expressed as big arrays of n distinct long integers in [0 .. n).

      Warning: if the arguments are not permutations, essentially anything can happen.

      Parameters:
      p - the first permutation.
      q - the second permutation, which will contain the result at the end.
      Returns:
      q.
      See Also: