tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
blas1_copy.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSL-1.0
2
3#ifndef TETL_LINALG_BLAS1_COPY_HPP
4#define TETL_LINALG_BLAS1_COPY_HPP
5
9
10namespace etl::linalg {
11
13template <in_object InObj, out_object OutObj>
14 requires(InObj::rank() == OutObj::rank())
15constexpr auto copy(InObj x, OutObj y) -> void
16{
17 TETL_PRECONDITION(x.extents() == y.extents());
18
19 using size_type = detail::common_size_type_t<InObj, OutObj>;
20
21 if constexpr (InObj::rank() == 1) {
22 for (size_type i{0}; etl::cmp_less(i, x.extent(0)); ++i) {
23 y(i) = x(i);
24 }
25 } else {
26 static_assert(InObj::rank() == 2);
27 for (size_type i{0}; etl::cmp_less(i, x.extent(0)); ++i) {
28 for (size_type j{0}; etl::cmp_less(j, x.extent(1)); ++j) {
29 y(i, j) = x(i, j);
30 }
31 }
32 }
33}
34
35} // namespace etl::linalg
36
37#endif // TETL_LINALG_BLAS1_COPY_HPP
#define TETL_PRECONDITION(...)
Definition check.hpp:16
constexpr auto copy(InObj x, OutObj y) -> void
Definition blas1_copy.hpp:15
constexpr auto cmp_less(T t, U u) noexcept -> bool
Compare the values of two integers t and u. Unlike builtin comparison operators, negative signed inte...
Definition cmp_less.hpp:21
Definition accessor_conjugate.hpp:12