10 raw::axpby(y.data(), x.data(), a, b, x.size());
14#ifdef NUMERICS_HAS_OMP
18 #pragma omp parallel for schedule(static)
19 for (
idx i = 0; i < n; ++i) {
20 yd[i] = (a * xd[i]) + (b * yd[i]);
28 raw::axpbyz(z.data(), x.data(), y.data(), a, b, x.size());
32#ifdef NUMERICS_HAS_OMP
37 #pragma omp parallel for schedule(static)
38 for (
idx i = 0; i < n; ++i) {
39 zd[i] = (a * xd[i]) + (b * yd[i]);
Elementwise vector kernels (namespace num::kernel::array)
constexpr idx size() const noexcept
void axpby(real a, const Vector &x, real b, Vector &y, seq_t) noexcept
Sequential: y[i] = a*x[i] + b*y[i] (single-pass; calls raw::axpby)
void axpbyz(real a, const Vector &x, real b, const Vector &y, Vector &z, seq_t) noexcept
Sequential: z[i] = a*x[i] + b*y[i].
NUM_K_AINLINE void axpby(T *NUM_K_RESTRICT y, const T *NUM_K_RESTRICT x, T a, T b, idx n) noexcept
y[i] = a*x[i] + b*y[i].
NUM_K_AINLINE void axpbyz(T *NUM_K_RESTRICT z, const T *NUM_K_RESTRICT x, const T *NUM_K_RESTRICT y, T a, T b, idx n) noexcept
z[i] = a*x[i] + b*y[i].
Tier-1 kernel: raw-pointer, inline, zero-overhead inner loops.
Parallel execution policy tag.
Sequential execution policy tag.