1
1
openmpi/src/util/pow2.c

46 строки
961 B
C
Исходник Обычный вид История

/*
* $HEADER$
*/
#include "ompi_config.h"
#include "util/pow2.h"
/**
* This routine takes in an interger, and returns the nearest
* power of 2 integer, same or greater than the input.
*
* @param input_integer input value
*
* @returnvalue power of 2 integer same or greater than the input
* parameter.
*/
int ompi_round_up_to_nearest_pow2(int input_integer)
{
int pop_count, highest_used_bit, tmp_input_integer, return_value;
/* init counters */
pop_count=0;
highest_used_bit=-1;
/* get population count, and highest non-zero bit */
tmp_input_integer=input_integer;
while ( tmp_input_integer > 0 ){
pop_count+=(tmp_input_integer&1);
highest_used_bit++;
tmp_input_integer>>=1;
};
if( 1 < pop_count ) {
/* "round" up */
highest_used_bit++;
}
/* generate return value */
return_value=1<<highest_used_bit;
return return_value;
}