Annotate noexcept and constexpr with HEDLEY, and add interval containment, ChaCha, and the dyadic range tables.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
875f09fec1
commit
0d8a5a8131
97 changed files with 9212 additions and 1159 deletions
|
|
@ -331,7 +331,12 @@ void eval_prepare_nodes(const DpfKey & dpf, InputT from, InputT to,
|
|||
|
||||
integral_type from_node = utils::get_from_node<dpf_type>(from);
|
||||
integral_type to_node = utils::get_to_node<dpf_type>(to);
|
||||
auto segs = utils::split_leaf_nodes(from_node, to_node, dpf.depth);
|
||||
constexpr auto to_int = utils::to_integral_type<InputT>{};
|
||||
const bool wraps = utils::interval_wraps(
|
||||
static_cast<integral_type>(to_int(from)),
|
||||
static_cast<integral_type>(to_int(to)),
|
||||
utils::bitlength_of_v<InputT>);
|
||||
auto segs = utils::split_leaf_nodes(from_node, to_node, dpf.depth, wraps);
|
||||
// The memoizer keeps one interval. A wrap is two intervals, and walking
|
||||
// the first clobbers the second, so only a single segment can be cached.
|
||||
if (segs.n == 1)
|
||||
|
|
@ -359,7 +364,12 @@ auto eval_inner_product_impl(const DpfKey & dpf, InputT from, InputT to,
|
|||
|
||||
integral_type from_node = utils::get_from_node<dpf_type>(from);
|
||||
integral_type to_node = utils::get_to_node<dpf_type>(to);
|
||||
auto segs = utils::split_leaf_nodes(from_node, to_node, dpf.depth);
|
||||
constexpr auto to_int = utils::to_integral_type<InputT>{};
|
||||
const bool wraps = utils::interval_wraps(
|
||||
static_cast<integral_type>(to_int(from)),
|
||||
static_cast<integral_type>(to_int(to)),
|
||||
utils::bitlength_of_v<InputT>);
|
||||
auto segs = utils::split_leaf_nodes(from_node, to_node, dpf.depth, wraps);
|
||||
|
||||
auto accs = std::make_tuple(
|
||||
ip_accum<typename DpfKey::concrete_output_type<Is>>{}...);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue