TRIQS/nda 1.3.0
Multi-dimensional array library for C++
Loading...
Searching...
No Matches
layout_transforms.hpp File Reference
#include "./concepts.hpp"
#include "./declarations.hpp"
#include "./group_indices.hpp"
#include "./layout/idx_map.hpp"
#include "./layout/permutation.hpp"
#include "./layout/policies.hpp"
#include "./map.hpp"
#include "./stdutil/array.hpp"
#include "./traits.hpp"
#include <array>
#include <concepts>
#include <type_traits>
#include <utility>
#include <numeric>

Detailed Description

Provides functions to transform the memory layout of an nda::basic_array or nda::basic_array_view.

Definition in file layout_transforms.hpp.

Go to the source code of this file.

Functions

template<MemoryArray A>
auto nda::flatten (A &&a)
 Flatten an nda::basic_array or nda::basic_array_view to a 1-dimensional array/view by reshaping it.
 
template<MemoryArray A, typename... IdxGrps>
auto nda::group_indices_view (A &&a, IdxGrps...)
 Create a new nda::basic_array or nda::basic_array_view by grouping indices together of a given array/view.
 
template<MemoryArray A, typename NewLayoutType >
auto nda::map_layout_transform (A &&a, NewLayoutType const &new_layout)
 Transform the memory layout of an nda::basic_array or nda::basic_array_view.
 
template<uint64_t Permutation, MemoryArray A>
auto nda::permuted_indices_view (A &&a)
 Permute the indices/dimensions of an nda::basic_array or nda::basic_array_view.
 
template<int N, typename A >
requires (nda::is_regular_or_view_v<A>)
auto nda::reinterpret_add_fast_dims_of_size_one (A &&a)
 Add N fast varying dimensions of size 1 to a given nda::basic_array or nda::basic_array_view.
 
template<MemoryArray A, std::integral... Ints>
auto nda::reshape (A &&a, Ints... is)
 Reshape an nda::basic_array or nda::basic_array_view.
 
template<MemoryArray A, std::integral Int, auto R>
auto nda::reshape (A &&a, std::array< Int, R > const &new_shape)
 Reshape an nda::basic_array or nda::basic_array_view.
 
template<MemoryArray A, std::integral Int, auto newRank>
auto nda::reshaped_view (A &&a, std::array< Int, newRank > const &new_shape)
 
template<typename A >
requires (MemoryArray<A> or is_instantiation_of_v<expr_call, A>)
auto nda::transpose (A &&a)
 Transpose the memory layout of an nda::MemoryArray or an nda::expr_call.
 
template<int I, int J, MemoryArray A>
requires (is_regular_or_view_v<A>)
auto nda::transposed_view (A &&a)
 Transpose two indices/dimensions of an nda::basic_array or nda::basic_array_view.