HIBF
1.0.0-rc.1
Loading...
Searching...
No Matches
bin_size_in_bits.hpp
Go to the documentation of this file.
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
10
#pragma once
11
12
#include <
cassert
>
13
#include <
cmath
>
// for log, ceil, exp
14
#include <
cstddef
>
// for size_t
15
16
#include <
hibf/platform.hpp
>
17
18
namespace
seqan::hibf::build
19
{
20
25
struct
bin_size_parameters
26
{
27
double
fpr{};
28
size_t
hash_count{};
29
size_t
elements{};
30
};
31
35
inline
constexpr
size_t
bin_size_in_bits
(
bin_size_parameters
const
& params)
36
{
37
assert(params.hash_count > 0);
38
assert(params.fpr > 0.0);
39
assert(params.fpr < 1.0);
40
41
double
const
numerator{-
static_cast<
double
>
(params.elements * params.hash_count)};
42
double
const
denominator{
std::log
(1 -
std::exp
(
std::log
(params.fpr) / params.hash_count))};
43
double
const
result{
std::ceil
(numerator / denominator)};
44
return
result;
45
}
46
47
}
// namespace seqan::hibf::build
cassert
std::ceil
T ceil(T... args)
cmath
cstddef
std::exp
T exp(T... args)
seqan::hibf::build::bin_size_in_bits
constexpr size_t bin_size_in_bits(bin_size_parameters const ¶ms)
Computes the bin size.
Definition
bin_size_in_bits.hpp:35
std::log
T log(T... args)
platform.hpp
Provides platform and dependency checks.
seqan::hibf::build::bin_size_parameters
Contains parameters for bin_size_in_bits.
Definition
bin_size_in_bits.hpp:26
hibf
build
bin_size_in_bits.hpp
Generated on Thu Aug 29 2024 00:01:59 for HIBF by
1.10.0