1#ifndef TATOOINE_TENSOR_OPERATIONS_NORM_H
2#define TATOOINE_TENSOR_OPERATIONS_NORM_H
8template <
typename Tensor,
typename T, std::
size_t N>
10 T
norm = -std::numeric_limits<T>::max();
11 for (std::size_t i = 0; i < N; ++i) {
12 norm = std::max(
norm, std::abs(t(i)));
17template <
typename Tensor,
typename T, std::
size_t N>
22template <
typename Tensor,
typename T, std::
size_t N>
25 for (std::size_t i = 0; i < N; ++i) {
26 n += std::pow(t(i), p);
28 return std::pow(n, T(1) / T(p));
32template <
typename Tensor,
typename T, std::
size_t M, std::
size_t N>
34 unsigned int const p) {
42template <
typename Tensor,
typename T, std::
size_t M, std::
size_t N>
44 unsigned int const p) {
49template <
typename Tensor,
typename T, std::
size_t M, std::
size_t N>
53 for (std::size_t j = 0; j < N; ++j) {
54 for (std::size_t i = 0; i < M; ++i) {
55 n += std::abs(
mat(i, j));
62template <
typename Tensor,
typename T, std::
size_t M, std::
size_t N>
68template <
typename Tensor,
typename T, std::
size_t M, std::
size_t N>
70 T
max = -std::numeric_limits<T>::max();
71 auto const absmat =
abs(
mat);
72 for (std::size_t i = 0; i < N; ++i) {
73 max = std::max(
max,
sum(absmat.template slice<1>(i)));
79template <
typename Tensor,
typename T, std::
size_t M, std::
size_t N>
81 T
max = -std::numeric_limits<T>::max();
82 for (std::size_t i = 0; i < M; ++i) {
89template <
typename Tensor,
typename T, std::
size_t M, std::
size_t N>
95template <
typename Tensor,
typename T, std::
size_t M, std::
size_t N>
static constexpr frobenius_t frobenius
Definition: tags.h:79
Definition: algorithm.h:6
constexpr auto abs(arithmetic auto const x)
Definition: math.h:26
constexpr auto norm1(base_tensor< Tensor, T, N > const &t)
Definition: norm.h:18
constexpr auto norm(base_tensor< Tensor, T, N > const &t, unsigned p=2) -> T
Definition: norm.h:23
constexpr auto max(A &&a, B &&b)
Definition: math.h:20
auto transposed(dynamic_tensor auto &&t)
Definition: transposed_tensor.h:170
constexpr auto sum(base_tensor< Tensor, T, VecDim > const &v)
sum of all components of a vector
Definition: tensor_operations.h:110
constexpr auto squared_norm(base_tensor< Tensor, T, M, N > const &A, unsigned int const p)
squared p-norm of a rank-2 tensor
Definition: norm.h:33
constexpr auto eigenvalues_sym(Mat &&A)
Definition: eigenvalues.h:55
constexpr auto norm_inf(base_tensor< Tensor, T, N > const &t) -> T
Definition: norm.h:9
Definition: base_tensor.h:23