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 Summary

    Fields
    Modifier and Type
    Field
    Description
    static final Runtime
    A static reference to Runtime.getRuntime().
  • Method Summary

    Modifier and Type
    Method
    Description
    static long
    Returns the amount of available memory (free memory plus never allocated memory).
    static void
    Tries to compact memory as much as possible by forcing garbage collection.
    static int[]
    composePermutations(int[] p, int[] q)
    Computes the composition of two permutations expressed as arrays of n distinct integers in [0 .. n).
    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).
    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).
    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).
    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).
    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).
    static String
    format(double d)
    Formats a number.
    static String
    format(double d, NumberFormat format)
    Formats a number using a specified NumberFormat.
    static String
    format(long l)
    Formats a number.
    static String
    format(long l, NumberFormat format)
    Formats a number using a specified NumberFormat.
    static String
    Formats a binary size.
    static String
    formatBinarySize(long l, NumberFormat format)
    Formats a size using a specified NumberFormat.
    static String
    formatSize(long l)
    Formats a size.
    static String
    formatSize(long l, NumberFormat format)
    Formats a size using a specified NumberFormat.
    static String
    formatSize2(long l)
    Formats a size.
    static String
    formatSize2(long l, NumberFormat format)
    Formats a size using a specified NumberFormat and binary unit multipliers.
    static int[]
    identity(int n)
    Stores the identity permutation in a new array of given length.
    static int[]
    identity(int[] perm)
    Stores the identity permutation in an array.
    static long[][]
    identity(long n)
    Stores the identity permutation in a new big array of given length.
    static long[][]
    identity(long[][] perm)
    Stores the identity permutation in a big array.
    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.
    static int[]
    invertPermutation(int[] perm, int[] inv)
    Computes the inverse of a permutation expressed as an array of n distinct integers in [0 .. n).
    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.
    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).
    static int[]
    Computes in place the inverse of a permutation expressed as an array of n distinct integers in [0 .. n).
    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).
    static boolean
    Returns true if less then 5% of the available memory is free.
    static int
    Returns the percentage of available memory (free memory plus never allocated memory).
    static long
    Returns a random seed generated by taking the output of a XoRoShiRo128PlusRandomGenerator (seeded at startup with System.nanoTime()) and xoring it with System.nanoTime().
    static byte[]
    Returns a random seed generated by randomSeed() under the form of an array of eight bytes.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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: