numerics 0.1.0
Loading...
Searching...
No Matches
reduce.hpp
Go to the documentation of this file.
1/// @file kernel/reduce.hpp
2/// @brief Scalar reduction kernels (namespace num::kernel::reduce)
3#pragma once
4
5#include "core/types.hpp"
6#include "core/vector.hpp"
7#include "kernel/policy.hpp"
8
10
11/// @brief Sequential l1 norm.
12[[nodiscard]] real l1_norm(const Vector& x, seq_t) noexcept;
13
14/// @brief Parallel l1 norm.
15[[nodiscard]] real l1_norm(const Vector& x, par_t);
16
17[[nodiscard]] inline real l1_norm(const Vector& x) {
18 return l1_norm(x, default_policy{});
19}
20
21/// @brief Sequential infinity norm.
22[[nodiscard]] real linf_norm(const Vector& x, seq_t) noexcept;
23
24/// @brief Parallel infinity norm.
25[[nodiscard]] real linf_norm(const Vector& x, par_t);
26
27[[nodiscard]] inline real linf_norm(const Vector& x) {
28 return linf_norm(x, default_policy{});
29}
30
31/// @brief Sequential sum.
32[[nodiscard]] real sum(const Vector& x, seq_t) noexcept;
33
34/// @brief Parallel sum.
35[[nodiscard]] real sum(const Vector& x, par_t);
36
37[[nodiscard]] inline real sum(const Vector& x) {
38 return sum(x, default_policy{});
39}
40
41} // namespace num::kernel::reduce
Core type definitions.
Compile-time dispatch policy tags for the kernel module.
real l1_norm(const Vector &x, seq_t) noexcept
Sequential l1 norm.
Definition reduce.cpp:10
real sum(const Vector &x, seq_t) noexcept
Sequential sum.
Definition reduce.cpp:51
real linf_norm(const Vector &x, seq_t) noexcept
Sequential infinity norm.
Definition reduce.cpp:29
double real
Definition types.hpp:10
Parallel execution policy tag.
Definition policy.hpp:13
Sequential execution policy tag.
Definition policy.hpp:10
Dense vector storage and operations.