HIBF
1.0.0-rc.1
Loading...
Searching...
No Matches
divide_and_ceil.hpp
1
// SPDX-FileCopyrightText: 2006-2024, Knut Reinert & Freie Universität Berlin
2
// SPDX-FileCopyrightText: 2016-2024, Knut Reinert & MPI für molekulare Genetik
3
// SPDX-License-Identifier: BSD-3-Clause
4
5
#pragma once
6
7
#include <
cassert
>
// for assert
8
#include <
concepts
>
// for unsigned_integral
9
#include <
cstddef
>
// for size_t
10
#include <
limits
>
// for numeric_limits
11
12
#include <
hibf/platform.hpp
>
13
14
namespace
seqan::hibf
15
{
16
20
template
<std::
unsigned
_
int
egral t1, std::
unsigned
_
int
egral t2>
21
[[nodiscard]]
inline
constexpr
size_t
divide_and_ceil
(t1
const
dividend, t2
const
divisor)
noexcept
22
{
23
assert(divisor > 0u);
24
assert(
std::numeric_limits<size_t>::max
() - divisor + 1u >= dividend);
// Overflow detection
25
return
(
static_cast<
size_t
>
(dividend) + (divisor - 1u)) / divisor;
26
}
27
28
}
// namespace seqan::hibf
cassert
concepts
cstddef
seqan::hibf::divide_and_ceil
constexpr size_t divide_and_ceil(t1 const dividend, t2 const divisor) noexcept
Returns, for unsigned integral operands, dividend / divisor ceiled to the next integer value.
Definition
divide_and_ceil.hpp:21
limits
std::numeric_limits
platform.hpp
Provides platform and dependency checks.
hibf
misc
divide_and_ceil.hpp
Generated on Thu Aug 29 2024 00:01:59 for HIBF by
1.10.0