Skip to content

num::kernel::dot

Defined in header <kernel/vector.hpp>

template <std::floating_point T>
T dot(const T *x, const T *y, idx n) noexcept;  // (1)

template <std::floating_point T>
T dot(contract::ordered_t, const T *x, const T *y, idx n) noexcept;  // (2)

template <std::floating_point T>
T dot(contract::throughput_t, const T *x, const T *y, idx n) noexcept;  // (3)

(1) Dot product \(\sum_{i=0}^{n-1} x_i y_i\), accumulated in detail::reduction_lanes chains. Use contract::ordered for source-order summation.

(2) Dot product summed strictly in index order, for bit-for-bit reproducibility.

(3) The same kernel as the unqualified overload, kept for callers that name it.