numerics
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 <cmath>
6
7namespace num::backends::seq {
8
9void scale(Vector& v, real alpha) {
10 for (idx i = 0; i < v.size(); ++i) v[i] *= alpha;
11}
12
13void add(const Vector& x, const Vector& y, Vector& z) {
14 for (idx i = 0; i < x.size(); ++i) z[i] = x[i] + y[i];
15}
16
17void axpy(real alpha, const Vector& x, Vector& y) {
18 for (idx i = 0; i < x.size(); ++i) y[i] += alpha * x[i];
19}
20
21real dot(const Vector& x, const Vector& y) {
22 real sum = 0;
23 for (idx i = 0; i < x.size(); ++i) sum += x[i] * y[i];
24 return sum;
25}
26
27real norm(const Vector& x) {
28 real sum = 0;
29 for (idx i = 0; i < x.size(); ++i) sum += x[i] * x[i];
30 return std::sqrt(sum);
31}
32
33} // namespace num::backends::seq
constexpr idx size() const noexcept
Definition vector.hpp:77
real dot(const Vector &x, const Vector &y)
Definition vector.cpp:21
void scale(Vector &v, real alpha)
Definition vector.cpp:9
real norm(const Vector &x)
Definition vector.cpp:27
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:17
double real
Definition types.hpp:10
constexpr T ipow(T x) noexcept
Compute x^N at compile time via repeated squaring.
std::size_t idx
Definition types.hpp:11
Vector operations.