cuda::ilog2 and cuda::ilog10

Contents

cuda::ilog2 and cuda::ilog10#

2026-10-07

1 min read time

Applies to Linux and Windows

This page documents cuda::ilog2 and cuda::ilog10, which compute the integer logarithm to base 2 or base 10 of an integer value.

template <typename T>
[[nodiscard]] __host__ __device__ inline constexpr
int ilog2(T value) noexcept;
template <typename T>
[[nodiscard]] __host__ __device__ inline constexpr
int ilog10(T value) noexcept;

The functions compute the logarithm to the base 2 and 10 respectively of an integer value.

Parameters

value: The input value.

Return value

The logarithm to the base 2 and 10 respectively, rounded down to the nearest integer.

Constraints

T is an integer type.

Preconditions

value > 0

Example#

#include <cuda/cmath>
#include <cuda/std/cassert>

__global__ void ilog_kernel() {
    assert(cuda::ilog2(20) == 4);
    assert(cuda::ilog2(32) == 5);
    assert(cuda::ilog10(100) == 2);
    assert(cuda::ilog10(2000) == 3);
}

int main() {
    ilog_kernel<<<1, 1>>>();
    hipDeviceSynchronize();
    return 0;
}