Package org.apache.commons.rng.core.util
Class NumberFactory
- java.lang.Object
-
- org.apache.commons.rng.core.util.NumberFactory
-
public final class NumberFactory extends java.lang.Object
Utility for creating number types from one or twoint
values or onelong
value, or a sequence of bytes.
-
-
Field Summary
Fields Modifier and Type Field Description private static double
DOUBLE_MULTIPLIER
The multiplier to convert the least significant 53-bits of along
to adouble
.private static float
FLOAT_MULTIPLIER
The multiplier to convert the least significant 24-bits of anint
to afloat
.private static int
INT_LOWEST_BYTE_MASK
Lowest byte mask.private static int
INT_SIZE
Number of bytes in aint
.private static long
LONG_LOWEST_BYTE_MASK
Lowest byte mask.private static int
LONG_SIZE
Number of bytes in along
.
-
Constructor Summary
Constructors Modifier Constructor Description private
NumberFactory()
Class contains only static methods.
-
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description private static void
checkSize(int expected, int actual)
static int
extractHi(long v)
Creates anint
from along
, using the high order bits.static int
extractLo(long v)
Creates anint
from along
, using the low order bits.private static int
getInt(byte[] input, int index)
Gets theint
from the buffer starting at the given position.private static long
getLong(byte[] input, int index)
Gets thelong
from the buffer starting at the given position.static boolean
makeBoolean(int v)
Deprecated.Since version 1.2.static boolean
makeBoolean(long v)
Deprecated.Since version 1.2.static byte[]
makeByteArray(int v)
Splits anint
into 4 bytes.static byte[]
makeByteArray(int[] input)
Splits an array ofint
values into a sequence of bytes.static byte[]
makeByteArray(long v)
Splits along
into 8 bytes.static byte[]
makeByteArray(long[] input)
Splits an array oflong
values into a sequence of bytes.static double
makeDouble(int v, int w)
Creates adouble
from twoint
values.static double
makeDouble(long v)
Creates adouble
from along
value.static float
makeFloat(int v)
Creates afloat
from anint
value.static int
makeInt(byte[] input)
Creates anint
from 4 bytes.static int
makeInt(long v)
Deprecated.Since version 1.2.static int[]
makeIntArray(byte[] input)
Creates an array ofint
values from a sequence of bytes.static long
makeLong(byte[] input)
Creates along
from 8 bytes.static long
makeLong(int v, int w)
Creates along
from twoint
values.static long[]
makeLongArray(byte[] input)
Creates an array oflong
values from a sequence of bytes.private static void
putInt(int v, byte[] buffer, int index)
Puts theint
into the buffer starting at the given position.private static void
putLong(long v, byte[] buffer, int index)
Puts thelong
into the buffer starting at the given position.
-
-
-
Field Detail
-
FLOAT_MULTIPLIER
private static final float FLOAT_MULTIPLIER
The multiplier to convert the least significant 24-bits of anint
to afloat
. SeemakeFloat(int)
.This is equivalent to 1.0f / (1 << 24).
- See Also:
- Constant Field Values
-
DOUBLE_MULTIPLIER
private static final double DOUBLE_MULTIPLIER
The multiplier to convert the least significant 53-bits of along
to adouble
. SeemakeDouble(long)
andmakeDouble(int, int)
.This is equivalent to 1.0 / (1L << 53).
- See Also:
- Constant Field Values
-
LONG_LOWEST_BYTE_MASK
private static final long LONG_LOWEST_BYTE_MASK
Lowest byte mask.- See Also:
- Constant Field Values
-
LONG_SIZE
private static final int LONG_SIZE
Number of bytes in along
.- See Also:
- Constant Field Values
-
INT_LOWEST_BYTE_MASK
private static final int INT_LOWEST_BYTE_MASK
Lowest byte mask.- See Also:
- Constant Field Values
-
INT_SIZE
private static final int INT_SIZE
Number of bytes in aint
.- See Also:
- Constant Field Values
-
-
Method Detail
-
makeBoolean
@Deprecated public static boolean makeBoolean(int v)
Deprecated.Since version 1.2. Method has become obsolete following RNG-57.Creates aboolean
from anint
value.- Parameters:
v
- Number.- Returns:
- a boolean.
-
makeBoolean
@Deprecated public static boolean makeBoolean(long v)
Deprecated.Since version 1.2. Method has become obsolete following RNG-57.Creates aboolean
from along
value.- Parameters:
v
- Number.- Returns:
- a boolean.
-
makeDouble
public static double makeDouble(long v)
Creates adouble
from along
value.- Parameters:
v
- Number.- Returns:
- a
double
value in the interval[0, 1]
.
-
makeDouble
public static double makeDouble(int v, int w)
Creates adouble
from twoint
values.- Parameters:
v
- Number (high order bits).w
- Number (low order bits).- Returns:
- a
double
value in the interval[0, 1]
.
-
makeFloat
public static float makeFloat(int v)
Creates afloat
from anint
value.- Parameters:
v
- Number.- Returns:
- a
float
value in the interval[0, 1]
.
-
makeLong
public static long makeLong(int v, int w)
Creates along
from twoint
values.- Parameters:
v
- Number (high order bits).w
- Number (low order bits).- Returns:
- a
long
value.
-
makeInt
@Deprecated public static int makeInt(long v)
Deprecated.Since version 1.2. Method has become obsolete following RNG-57.Creates anint
from along
.- Parameters:
v
- Number.- Returns:
- an
int
value made from the "xor" of thehigh order bits
andlow order bits
ofv
.
-
extractHi
public static int extractHi(long v)
Creates anint
from along
, using the high order bits.The returned value is such that if
vL = extractLo(v); vH = extractHi(v);
then
v
is equal tomakeLong(vH, vL)
.- Parameters:
v
- Number.- Returns:
- an
int
value made from the most significant bits ofv
.
-
extractLo
public static int extractLo(long v)
Creates anint
from along
, using the low order bits.The returned value is such that if
vL = extractLo(v); vH = extractHi(v);
then
v
is equal tomakeLong(vH, vL)
.- Parameters:
v
- Number.- Returns:
- an
int
value made from the least significant bits ofv
.
-
makeByteArray
public static byte[] makeByteArray(long v)
Splits along
into 8 bytes.- Parameters:
v
- Value.- Returns:
- the bytes that compose the given value (least-significant byte first).
-
putLong
private static void putLong(long v, byte[] buffer, int index)
Puts thelong
into the buffer starting at the given position. Adds 8 bytes (least-significant first).- Parameters:
v
- Value.buffer
- the buffer.index
- the index.
-
makeLong
public static long makeLong(byte[] input)
Creates along
from 8 bytes.- Parameters:
input
- Input.- Returns:
- the value that correspond to the given bytes assuming that the order is in increasing byte significance (i.e. the first byte in the array is the least-significant).
- Throws:
java.lang.IllegalArgumentException
- ifinput.length != 8
.
-
getLong
private static long getLong(byte[] input, int index)
Gets thelong
from the buffer starting at the given position. Uses 8 bytes (least-significant first).- Parameters:
input
- the input bytes.index
- the index.- Returns:
- the value that correspond to the given bytes assuming that the order is in increasing byte significance (i.e. the first byte in the array is the least-significant).
-
makeByteArray
public static byte[] makeByteArray(long[] input)
Splits an array oflong
values into a sequence of bytes. This method callsmakeByteArray(long)
for each element of theinput
.- Parameters:
input
- Input.- Returns:
- an array of bytes.
-
makeLongArray
public static long[] makeLongArray(byte[] input)
Creates an array oflong
values from a sequence of bytes. This method callsmakeLong(byte[])
for each subsequence of 8 bytes.- Parameters:
input
- Input.- Returns:
- an array of
long
. - Throws:
java.lang.IllegalArgumentException
- ifinput.length
is not a multiple of 8.
-
makeByteArray
public static byte[] makeByteArray(int v)
Splits anint
into 4 bytes.- Parameters:
v
- Value.- Returns:
- the bytes that compose the given value (least-significant byte first).
-
putInt
private static void putInt(int v, byte[] buffer, int index)
Puts theint
into the buffer starting at the given position. Adds 4 bytes (least-significant first).- Parameters:
v
- the value.buffer
- the buffer.index
- the index.
-
makeInt
public static int makeInt(byte[] input)
Creates anint
from 4 bytes.- Parameters:
input
- Input.- Returns:
- the value that correspond to the given bytes assuming that the order is in increasing byte significance (i.e. the first byte in the array is the least-significant).
- Throws:
java.lang.IllegalArgumentException
- ifinput.length != 4
.
-
getInt
private static int getInt(byte[] input, int index)
Gets theint
from the buffer starting at the given position. Uses 4 bytes (least-significant first).- Parameters:
input
- the input bytes.index
- the index.- Returns:
- the value that correspond to the given bytes assuming that the order is in increasing byte significance (i.e. the first byte in the array is the least-significant).
-
makeByteArray
public static byte[] makeByteArray(int[] input)
Splits an array ofint
values into a sequence of bytes. This method callsmakeByteArray(int)
for each element of theinput
.- Parameters:
input
- Input.- Returns:
- an array of bytes.
-
makeIntArray
public static int[] makeIntArray(byte[] input)
Creates an array ofint
values from a sequence of bytes. This method callsmakeInt(byte[])
for each subsequence of 4 bytes.- Parameters:
input
- Input. Length must be a multiple of 4.- Returns:
- an array of
int
. - Throws:
java.lang.IllegalArgumentException
- ifinput.length
is not a multiple of 4.
-
checkSize
private static void checkSize(int expected, int actual)
- Parameters:
expected
- Expected value.actual
- Actual value.- Throws:
java.lang.IllegalArgumentException
- ifexpected != actual
.
-
-