2#include "../macros.hpp"
9template<
typename Context>
11 std::same_as<Context, float>
or
13 std::same_as<
Context. std::span<float>>
or
14 std::same_as<
Context. std::span<double>>
or
15 std::same_as<
Context. std::span<float const>>
or
16 std::same_as<
Context. std::span<double const>>;
18template<
typename T,
typename Op>
19void dsp_visit(std::span<T> r, std::span<T const> a, std::span<T const> b,
Op op)
noexcept
21 hi_axiom(r.size() == a.size());
22 hi_axiom(r.size() == b.size());
25 constexpr auto stride = S::size;
28 auto wide_size = (size / stride) * stride;
49template<
typename T,
typename Op>
50void dsp_visit(std::span<T> r, std::span<T const> a, T b,
Op op)
noexcept
52 hi_axiom(r.size() == a.size());
55 constexpr auto stride = S::size;
58 auto wide_size = (size / stride) * stride;
63 hilet
b_wide = S::broadcast(b);
78template<
typename T,
typename Op>
79void dsp_visit(std::span<float> r,
float a,
Op op)
noexcept
82 constexpr auto stride = S::size;
84 hilet size = r.size();
85 hilet
wide_size = (size / stride) * stride;
88 hilet
a_ = S::broadcast(b);
103void dsp_add(dsp_argument
auto... args)
noexcept
105 return dsp_operator(args..., [](
auto a,
auto b) { return a + b; });
110 return dsp_operator(args..., [](
auto a,
auto b) { return a - b; });
115 return dsp_operator(args..., [](
auto a,
auto b) { return a * b; });
DOXYGEN BUG.
Definition algorithm.hpp:16
geometry/margins.hpp
Definition lookahead_iterator.hpp:5
constexpr Out narrow_cast(In const &rhs) noexcept
Cast numeric values without loss of precision.
Definition cast.hpp:377
Definition dsp_float.hpp:10