IMPORTANT: To view this page as Markdown, append `.md` to the URL (e.g. /docs/manual/basics.md). For the complete Mojo documentation index, see llms.txt.
Skip to main content
Version: 1.0.0b1
For the complete Mojo documentation index, see llms.txt. Markdown versions of all pages are available by appending .md to any URL (e.g. /docs/manual/basics.md).

next_power_of_two

next_power_of_two(val: Int) -> Int

Computes the smallest power of 2 that is greater than or equal to the input value. Any integral value less than or equal to 1 will be ceiled to 1.

Notes: This operation is called bit_ceil() in C++.

Args:

  • val (Int): The input value.

Returns:

Int: The smallest power of 2 that is greater than or equal to the input value.

next_power_of_two[dtype: DType, width: Int, //](val: SIMD[dtype, width]) -> SIMD[dtype, width]

Computes the smallest power of 2 that is greater than or equal to the input value for each element of a SIMD vector. Any integral value less than or equal to 1 will be ceiled to 1.

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

Constraints:

The element type of the input vector must be integral.

Parameters:

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

Args:

Returns:

SIMD[dtype, width]: A SIMD value where the element at position i is the smallest power of 2 that is greater than or equal to the integer at position i of the input value.