Expression Templates Library (ETL)
view_expression_builder.hpp
Go to the documentation of this file.
1 //=======================================================================
2 // Copyright (c) 2014-2023 Baptiste Wicht
3 // Distributed under the terms of the MIT License.
4 // (See accompanying file LICENSE or copy at
5 // http://opensource.org/licenses/MIT)
6 //=======================================================================
7 
14 #pragma once
15 
16 namespace etl {
17 
24 template <size_t D, etl_expr E>
27 }
28 
35 template <etl_expr E>
38 }
39 
46 template <etl_expr E>
49 }
50 
57 template <matrix E>
58 auto sub(E&& value, size_t i) -> sub_view<detail::build_identity_type<E>, false> {
59  return {value, i};
60 }
61 
71 template <etl_2d E>
72 auto sub(E&& value, size_t i, size_t j, size_t m, size_t n) -> sub_matrix_2d<detail::build_identity_type<E>, false> {
73  return {value, i, j, m, n};
74 }
75 
85 template <etl_3d E>
86 auto sub(E&& value, size_t i, size_t j, size_t k, size_t m, size_t n, size_t o) -> sub_matrix_3d<detail::build_identity_type<E>, false> {
87  return {value, i, j, k, m, n, o};
88 }
89 
99 template <etl_4d E>
100 auto sub(E&& value, size_t i, size_t j, size_t k, size_t l, size_t m, size_t n, size_t o, size_t p) -> sub_matrix_4d<detail::build_identity_type<E>, false> {
101  return {value, i, j, k, l, m, n, o, p};
102 }
103 
111 template <etl_expr E>
112 auto slice(E&& value, size_t first, size_t last) -> slice_view<detail::build_identity_type<E>> {
113  return {value, first, last};
114 }
115 
122 template <size_t... Dims, etl_expr E>
123 auto reshape(E&& value) -> fast_matrix_view<detail::build_identity_type<E>, is_dma<E>, Dims...> {
124  cpp_assert(decay_traits<E>::is_generator || etl::size(value) == (Dims * ...), "Invalid size for reshape");
125 
126  return fast_matrix_view<detail::build_identity_type<E>, is_dma<E>, Dims...>{value};
127 }
128 
135 template <etl_expr E, typename... S>
136 auto reshape(E&& value, S... sizes) -> dyn_matrix_view<detail::build_identity_type<E>, sizeof...(sizes)> {
137  using ret_type = dyn_matrix_view<detail::build_identity_type<E>, sizeof...(sizes)>;
138 
139  cpp_assert(decay_traits<E>::is_generator || etl::size(value) == util::size(sizes...), "Invalid size for reshape");
140 
141  return ret_type{value, size_t(sizes)...};
142 }
143 
144 // Virtual Views that returns rvalues
145 
151 template <typename D = double>
154 }
155 
161 template <size_t N, typename D = double>
164 }
165 
166 } //end of namespace etl
View that shows a 3d sub matrix of an expression.
Definition: expr_fwd.hpp:65
Definition: expr_fwd.hpp:71
auto slice(E &&value, size_t first, size_t last) -> slice_view< detail::build_identity_type< E >>
Returns view representing a slice view of the given expression.
Definition: view_expression_builder.hpp:112
A view (virtual) of a dynamic magic matrix.
Definition: virtual_views.hpp:42
auto magic(size_t i) -> detail::virtual_helper< D, magic_view< D >>
Returns a view representing the square magic matrix.
Definition: view_expression_builder.hpp:152
D D
The number of dimensions.
Definition: dyn_matrix_view.hpp:24
auto reshape(E &&value) -> fast_matrix_view< detail::build_identity_type< E >, is_dma< E >, Dims... >
Returns view representing the reshape of another expression.
Definition: view_expression_builder.hpp:123
Definition: expr_fwd.hpp:77
An unary expression.
Definition: unary_expr.hpp:126
Definition: expr_fwd.hpp:80
Traits to get information about ETL types.
Definition: tmp.hpp:68
Root namespace for the ETL library.
Definition: adapter.hpp:15
auto dim(E &&value, size_t i) -> detail::identity_helper< E, dim_view< detail::build_identity_type< E >, D >>
Return a view representing the ith Dth dimension.
Definition: view_expression_builder.hpp:25
View that shows a 2D sub matrix of an expression.
Definition: expr_fwd.hpp:62
constexpr size_t size(const E &expr) noexcept
Returns the size of the given ETL expression.
Definition: helpers.hpp:108
auto row(E &&value, size_t i) -> detail::identity_helper< E, dim_view< detail::build_identity_type< E >, 1 >>
Returns view representing the ith row of the given expression.
Definition: view_expression_builder.hpp:36
Definition: expr_fwd.hpp:59
View that shows a 4d sub matrix of an expression.
Definition: expr_fwd.hpp:68
auto col(E &&value, size_t i) -> detail::identity_helper< E, dim_view< detail::build_identity_type< E >, 2 >>
Returns view representing the ith column of the given expression.
Definition: view_expression_builder.hpp:47