All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.unlogged.logging.util.Tools Maven / Gradle / Ivy

There is a newer version: 0.7.6
Show newest version
package io.unlogged.logging.util;

public class Tools {

    /** Taken from FastUtil implementation */

    /** Return the least power of two greater than or equal to the specified value.
   	 *
   	 * 

Note that this function will return 1 when the argument is 0. * * @param x a long integer smaller than or equal to 262. * @return the least power of two greater than or equal to the specified value. */ public static long nextPowerOfTwo( long x ) { if ( x == 0 ) return 1; x--; x |= x >> 1; x |= x >> 2; x |= x >> 4; x |= x >> 8; x |= x >> 16; return ( x | x >> 32 ) + 1; } /** Returns the least power of two smaller than or equal to 230 and larger than or equal to Math.ceil( expected / f ). * * @param expected the expected number of elements in a hash table. * @param f the load factor. * @return the minimum possible size for a backing array. * @throws IllegalArgumentException if the necessary size is larger than 230. */ public static int arraySize( final int expected, final float f ) { final long s = Math.max( 2, nextPowerOfTwo( (long)Math.ceil( expected / f ) ) ); if ( s > (1 << 30) ) throw new IllegalArgumentException( "Too large (" + expected + " expected elements with load factor " + f + ")" ); return (int)s; } //taken from FastUtil private static final int INT_PHI = 0x9E3779B9; public static int phiMix( final int x ) { final int h = x * INT_PHI; return h ^ (h >> 16); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy