numerics 0.1.0
Loading...
Searching...
No Matches
vector.cpp
Go to the documentation of this file.
1/// @file core/backends/seq/vector.cpp
2/// @brief Sequential backend -- naive serial C++ vector operations
3
4#include "core/vector.hpp"
5#include "kernel/raw.hpp"
6
7namespace num::backends::seq {
8
9void scale(Vector& v, real alpha) {
10 kernel::raw::scale(v.data(), alpha, v.size());
11}
12
13void add(const Vector& x, const Vector& y, Vector& z) {
14 for (idx i = 0; i < x.size(); ++i)
15 z[i] = x[i] + y[i];
16}
17
18void axpy(real alpha, const Vector& x, Vector& y) {
19 kernel::raw::axpy(y.data(), x.data(), alpha, x.size());
20}
21
22real dot(const Vector& x, const Vector& y) {
23 return kernel::raw::dot(x.data(), y.data(), x.size());
24}
25
26real norm(const Vector& x) {
27 return kernel::raw::norm(x.data(), x.size());
28}
29
30} // namespace num::backends::seq
constexpr idx size() const noexcept
Definition vector.hpp:83
real dot(const Vector &x, const Vector &y)
Definition vector.cpp:22
void scale(Vector &v, real alpha)
Definition vector.cpp:9
real norm(const Vector &x)
Definition vector.cpp:26
void add(const Vector &x, const Vector &y, Vector &z)
Definition vector.cpp:13
void axpy(real alpha, const Vector &x, Vector &y)
Definition vector.cpp:18
NUM_K_AINLINE T dot(const T *NUM_K_RESTRICT x, const T *NUM_K_RESTRICT y, idx n) noexcept
dot product: return sum x[i] * y[i]
Definition raw.hpp:73
NUM_K_AINLINE void axpy(T *NUM_K_RESTRICT y, const T *NUM_K_RESTRICT x, T alpha, idx n) noexcept
y[i] += alpha * x[i]
Definition raw.hpp:34
NUM_K_AINLINE T norm(const T *NUM_K_RESTRICT x, idx n) noexcept
Euclidean norm: sqrt(sum x[i]^2)
Definition raw.hpp:97
NUM_K_AINLINE void scale(T *NUM_K_RESTRICT x, T alpha, idx n) noexcept
x[i] *= alpha
Definition raw.hpp:25
double real
Definition types.hpp:10
std::size_t idx
Definition types.hpp:11
Tier-1 kernel: raw-pointer, inline, zero-overhead inner loops.
Dense vector storage and operations.