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