org.apfloat.spi
Class Util

java.lang.Object
  extended by org.apfloat.spi.Util

public class Util
extends Object

Miscellaneous utility methods.

Version:
1.3
Author:
Mikko Tommila

Method Summary
static long ifFinite(long x, long y)
          Returns the argument y limited to Apfloat.INFINITE.
static int log2down(int x)
          Base-2 logarithm rounded down to nearest power of two.
static int log2down(long x)
          Base-2 logarithm rounded down to nearest power of two.
static int round23down(int x)
          Round down to nearest power of two or three times a power of two.
static long round23down(long x)
          Round down to nearest power of two or three times a power of two.
static int round23up(int x)
          Round up to nearest power of two or three times a power of two.
static long round23up(long x)
          Round up to nearest power of two or three times a power of two.
static int round2down(int x)
          Round down to nearest power of two.
static long round2down(long x)
          Round down to nearest power of two.
static int round2up(int x)
          Round up to nearest power of two.
static long round2up(long x)
          Round up to nearest power of two.
static int sqrt4down(int x)
          Square root rounded down to nearest power of two.
static long sqrt4down(long x)
          Square root rounded down to nearest power of two.
static int sqrt4up(int x)
          Square root rounded up to nearest power of two.
static long sqrt4up(long x)
          Square root rounded up to nearest power of two.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

round2down

public static int round2down(int x)
Round down to nearest power of two.

Parameters:
x - The input value, which must be non-negative.
Returns:
x rounded down to the nearest power of two.

round2down

public static long round2down(long x)
Round down to nearest power of two.

Parameters:
x - The input value, which must be non-negative.
Returns:
x rounded down to the nearest power of two.

round2up

public static int round2up(int x)
Round up to nearest power of two.

Parameters:
x - The input value, which must be non-negative and not greater than 230.
Returns:
x rounded up to the nearest power of two.

round2up

public static long round2up(long x)
Round up to nearest power of two.

Parameters:
x - The input value, which must be non-negative and not greater than 262.
Returns:
x rounded up to the nearest power of two.

round23down

public static int round23down(int x)
Round down to nearest power of two or three times a power of two.

Parameters:
x - The input value, which must be non-negative.
Returns:
x rounded down to nearest power of two or three times a power of two.

round23down

public static long round23down(long x)
Round down to nearest power of two or three times a power of two.

Parameters:
x - The input value, which must be non-negative.
Returns:
x rounded down to nearest power of two or three times a power of two.

round23up

public static int round23up(int x)
Round up to nearest power of two or three times a power of two.

Parameters:
x - The input value, which must be non-negative and not greater than 3 * 229.
Returns:
x rounded up to the nearest power of two or three times a power of two.

round23up

public static long round23up(long x)
Round up to nearest power of two or three times a power of two.

Parameters:
x - The input value, which must be non-negative and not greater than 3 * 261.
Returns:
x rounded up to the nearest power of two or three times a power of two.

sqrt4down

public static int sqrt4down(int x)
Square root rounded down to nearest power of two.

Parameters:
x - The input value, which must be non-negative.
Returns:
Square root of x rounded down to nearest power of two.

sqrt4down

public static long sqrt4down(long x)
Square root rounded down to nearest power of two.

Parameters:
x - The input value, which must be non-negative.
Returns:
Square root of x rounded down to nearest power of two.

sqrt4up

public static int sqrt4up(int x)
Square root rounded up to nearest power of two.

Parameters:
x - The input value, which must be non-negative.
Returns:
Square root of x rounded up to nearest power of two.

sqrt4up

public static long sqrt4up(long x)
Square root rounded up to nearest power of two.

Parameters:
x - The input value, which must be non-negative.
Returns:
Square root of x rounded up to nearest power of two.

log2down

public static int log2down(int x)
Base-2 logarithm rounded down to nearest power of two.

Parameters:
x - The input value, which must be positive.
Returns:
log2(x) rounded down to nearest integer.

log2down

public static int log2down(long x)
Base-2 logarithm rounded down to nearest power of two.

Parameters:
x - The input value, which must be positive.
Returns:
log2(x) rounded down to nearest integer.

ifFinite

public static long ifFinite(long x,
                            long y)
Returns the argument y limited to Apfloat.INFINITE. In case x is Apfloat.INFINITE, then Apfloat.INFINITE is returned, otherwise y. Also if y is negative or zero, this is treated as a case of overflow, and Apfloat.INFINITE is returned. The return value is thus always positive.

Parameters:
x - The argument that is tested to be Apfloat.INFINITE.
y - The argument that is returned if x is not Apfloat.INFINITE.
Returns:
(x == Apfloat.INFINITE || y <= 0 ? Apfloat.INFINITE : y)