Skip to main content
Log in

Mojo function

prev_power_of_two

prev_power_of_two(val: Int) -> Int

Computes the largest power of 2 that is less than or equal to the input value. Any integral value less than or equal to 0 will be floored to 0.

This operation is called bit_floor() in C++.

Args:

  • val (Int): The input value.

Returns:

The largest power of 2 that is less than or equal to the input value.

prev_power_of_two[type: DType, width: Int, //](val: SIMD[type, width]) -> SIMD[type, width]

Computes the largest power of 2 that is less than or equal to the input value for each element of a SIMD vector. Any integral value less than or equal to 0 will be floored to 0.

This operation is called bit_floor() in C++.

Constraints:

The element type of the input vector must be integral.

Parameters:

  • type (DType): dtype used for the computation.
  • width (Int): SIMD width used for the computation.

Args:

  • val (SIMD[type, width]): The input value.

Returns:

A SIMD value where the element at position i is the largest power of 2 that is less than or equal to the integer at position i of the input value.