sequence.hpp Source File#
utility/sequence.hpp
Go to the documentation of this file.
513 using sorted_ids = typename conditional<choose_x, Sequence<IdX, IdY>, Sequence<IdY, IdX>>::type;
616struct is_valid_sequence_map : is_same<typename arithmetic_sequence_gen<0, SeqMap::Size(), 1>::type,
Definition utility/sequence.hpp:187
Definition ck.hpp:268
__host__ __device__ constexpr auto reverse_inclusive_scan_sequence(Seq, Reduce, Number< Init >)
Definition utility/sequence.hpp:799
typename uniform_sequence_gen< NSize, I >::type uniform_sequence_gen_t
Definition utility/sequence.hpp:928
__host__ __device__ constexpr auto operator/(integral_constant< TX, X >, integral_constant< TY, Y >)
Definition utility/integral_constant.hpp:46
__host__ __device__ constexpr auto pick_sequence_elements_by_ids(Seq, Sequence< Is... >)
Definition utility/sequence.hpp:818
__host__ __device__ constexpr auto operator-(const MultiIndex< NSize > &a, const T &b)
Definition array_multi_index.hpp:60
__host__ __device__ constexpr auto transform_sequences(F f, Sequence< Xs... >)
Definition utility/sequence.hpp:774
__host__ __device__ constexpr auto sequence_pop_back(Seq)
Definition utility/sequence.hpp:761
__host__ __device__ constexpr auto operator+(const MultiIndex< NSize > &a, const T &b)
Definition array_multi_index.hpp:50
__host__ __device__ constexpr auto operator%(integral_constant< TX, X >, integral_constant< TY, Y >)
Definition utility/integral_constant.hpp:53
typename __make_integer_seq< impl::__integer_sequence, index_t, N >::seq_type make_index_sequence
Definition utility/sequence.hpp:199
__host__ __device__ constexpr auto operator*(const MultiIndex< NSize > &a, const T &b)
Definition array_multi_index.hpp:70
__host__ __device__ constexpr auto sequence_pop_front(Sequence< I, Is... >)
Definition utility/sequence.hpp:755
typename sequence_merge< Sx, Sy >::type sequence_merge_t
Definition utility/sequence.hpp:925
__host__ __device__ constexpr bool sequence_any_of(Seq, F f)
Definition utility/sequence.hpp:898
__host__ __device__ constexpr bool operator==(Sequence< Xs... >, Sequence< Ys... >)
Definition utility/sequence.hpp:649
__host__ __device__ constexpr auto reverse_exclusive_scan_sequence(Seq, Reduce, Number< Init >)
Definition utility/sequence.hpp:805
__host__ __device__ constexpr auto pick_sequence_elements_by_mask(Seq, Mask)
Definition utility/sequence.hpp:847
__host__ __device__ constexpr auto modify_sequence_elements_by_ids(Seq, Values, Ids)
Definition utility/sequence.hpp:874
__host__ __device__ constexpr index_t reduce_on_sequence(Seq, Reduce f, Number< Init >)
Definition utility/sequence.hpp:884
__host__ __device__ constexpr auto merge_sequences(Seqs...)
Definition utility/sequence.hpp:768
__host__ __device__ constexpr auto inclusive_scan_sequence(Seq, Reduce, Number< Init >)
Definition utility/sequence.hpp:812
__host__ __device__ constexpr bool sequence_all_of(Seq, F f)
Definition utility/sequence.hpp:912
Definition utility/sequence.hpp:43
__host__ static __device__ constexpr auto Back()
Definition utility/sequence.hpp:114
__host__ static __device__ constexpr auto PushBack(Sequence< Xs... >)
Definition utility/sequence.hpp:137
__host__ static __device__ constexpr auto PushBack(Number< Xs >...)
Definition utility/sequence.hpp:143
index_t data_type
Definition utility/sequence.hpp:45
__host__ static __device__ constexpr auto PushFront(Sequence< Xs... >)
Definition utility/sequence.hpp:125
__host__ static __device__ constexpr auto Extract(Sequence< Ns... >)
Definition utility/sequence.hpp:155
__host__ static __device__ constexpr auto Transform(F f)
Definition utility/sequence.hpp:173
__host__ __device__ constexpr auto operator[](I i) const
Definition utility/sequence.hpp:75
__host__ static __device__ constexpr auto Reverse()
Definition utility/sequence.hpp:103
__host__ static __device__ constexpr auto PopBack()
Definition utility/sequence.hpp:122
__host__ static __device__ constexpr auto At(Number< I >)
Definition utility/sequence.hpp:61
__host__ static __device__ constexpr auto PopFront()
Definition utility/sequence.hpp:120
__host__ static __device__ constexpr auto Modify(Number< I >, Number< X >)
Definition utility/sequence.hpp:161
static constexpr index_t mSize
Definition utility/sequence.hpp:47
__host__ static __device__ constexpr auto Get(Number< I >)
Definition utility/sequence.hpp:69
__host__ static __device__ constexpr auto ReorderGivenNew2Old(Sequence< IRs... >)
Definition utility/sequence.hpp:81
Sequence Type
Definition utility/sequence.hpp:44
__host__ static __device__ constexpr auto Extract(Number< Ns >...)
Definition utility/sequence.hpp:149
__host__ static __device__ constexpr auto Front()
Definition utility/sequence.hpp:108
__host__ static __device__ constexpr auto Size()
Definition utility/sequence.hpp:49
__host__ static __device__ constexpr auto PushFront(Number< Xs >...)
Definition utility/sequence.hpp:131
__host__ static __device__ constexpr auto GetSize()
Definition utility/sequence.hpp:51
__host__ static __device__ constexpr auto ReorderGivenOld2New(MapOld2New)
Definition utility/sequence.hpp:93
__host__ static __device__ constexpr index_t At(index_t I)
Definition utility/sequence.hpp:53
Definition utility/sequence.hpp:258
__host__ __device__ constexpr index_t operator()(index_t i) const
Definition utility/sequence.hpp:259
Definition utility/sequence.hpp:279
Sequence< Ints... > type
Definition utility/sequence.hpp:280
typename __make_integer_seq< WrapSequence, index_t, IEnd >::type type
Definition utility/sequence.hpp:283
Definition utility/sequence.hpp:256
static constexpr bool kHasContent
Definition utility/sequence.hpp:268
typename sequence_gen<(IEnd - IBegin)/Increment, F >::type type0
Definition utility/sequence.hpp:265
typename conditional< kHasContent, type0, type1 >::type type
Definition utility/sequence.hpp:271
Definition utility/functional.hpp:100
WorkSeq type
Definition utility/sequence.hpp:869
Definition utility/sequence.hpp:857
decltype(WorkSeq::Modify(RemainIds::Front(), RemainValues::Front())) new_work_seq
Definition utility/sequence.hpp:858
typename modify_sequence_elements_by_ids_impl< new_work_seq, decltype(RemainValues::PopFront()), decltype(RemainIds::PopFront())>::type type
Definition utility/sequence.hpp:860
WorkSeq type
Definition utility/sequence.hpp:841
Definition utility/sequence.hpp:827
typename pick_sequence_elements_by_mask_impl< new_work_seq, decltype(RemainSeq::PopFront()), decltype(RemainMask::PopFront())>::type type
Definition utility/sequence.hpp:832
typename conditional< RemainMask::Front(), decltype(WorkSeq::PushBack(RemainSeq::Front())), WorkSeq >::type new_work_seq
Definition utility/sequence.hpp:828
Sequence< Ints... > seq_type
Definition utility/sequence.hpp:194
Definition utility/sequence.hpp:189
Definition type.hpp:177
Definition utility/sequence.hpp:618
Sequence<> type
Definition utility/sequence.hpp:247
static constexpr index_t Is
Definition utility/sequence.hpp:240
Sequence< Is > type
Definition utility/sequence.hpp:241
Definition utility/sequence.hpp:227
static constexpr index_t NRemainRight
Definition utility/sequence.hpp:229
static constexpr index_t IMiddle
Definition utility/sequence.hpp:230
typename sequence_merge< typename sequence_gen_impl< IBegin, NRemainLeft, G >::type, typename sequence_gen_impl< IMiddle, NRemainRight, G >::type >::type type
Definition utility/sequence.hpp:232
static constexpr index_t NRemainLeft
Definition utility/sequence.hpp:228
Definition utility/sequence.hpp:224
typename sequence_gen_impl< 0, NSize, F >::type type
Definition utility/sequence.hpp:250
WorkingY2X type
Definition utility/sequence.hpp:638
Definition utility/sequence.hpp:626
static constexpr auto new_y2x
Definition utility/sequence.hpp:627
typename sequence_map_inverse_impl< X2Y, decltype(new_y2x), XBegin+1, XRemain - 1 >:: type type
Definition utility/sequence.hpp:630
Definition utility/sequence.hpp:623
typename sequence_map_inverse_impl< SeqMap, typename uniform_sequence_gen< SeqMap::Size(), 0 >::type, 0, SeqMap::Size()>::type type
Definition utility/sequence.hpp:641
Sequence< Xs..., Ys... > type
Definition utility/sequence.hpp:212
Definition utility/sequence.hpp:205
typename sequence_merge< Seq, typename sequence_merge< Seqs... >::type >::type type
Definition utility/sequence.hpp:206
Sequence< Reduce{}(Xs, Ys)... > type
Definition utility/sequence.hpp:373
Definition utility/sequence.hpp:364
typename sequence_reduce< Reduce, Seq, typename sequence_reduce< Reduce, Seqs... >::type >::type type
Definition utility/sequence.hpp:365
Sequence< I1, I0 > type
Definition utility/sequence.hpp:358
typename sequence_merge< Sequence< new_reduce >, old_scan >::type type
Definition utility/sequence.hpp:309
typename sequence_reverse_inclusive_scan< Sequence< Is... >, Reduce, Init >::type old_scan
Definition utility/sequence.hpp:305
static constexpr index_t new_reduce
Definition utility/sequence.hpp:307
Sequence< Reduce{}(I, Init)> type
Definition utility/sequence.hpp:315
Sequence<> type
Definition utility/sequence.hpp:321
Definition utility/sequence.hpp:300
Definition utility/sequence.hpp:340
sequence_split< Seq, NSize/2 > seq_split
Definition utility/sequence.hpp:343
typename sequence_merge< typename sequence_reverse< typename seq_split::right_type >::type, typename sequence_reverse< typename seq_split::left_type >::type >::type type
Definition utility/sequence.hpp:344
typename sequence_merge< MergedIds, LeftIds >::type merged_ids
Definition utility/sequence.hpp:440
typename sequence_merge< MergedValues, LeftValues >::type merged_values
Definition utility/sequence.hpp:439
typename sequence_merge< MergedValues, RightValues >::type merged_values
Definition utility/sequence.hpp:456
typename sequence_merge< MergedIds, RightIds >::type merged_ids
Definition utility/sequence.hpp:457
Definition utility/sequence.hpp:394
typename merge::merged_values merged_values
Definition utility/sequence.hpp:422
typename merge::merged_ids merged_ids
Definition utility/sequence.hpp:423
static constexpr bool choose_left
Definition utility/sequence.hpp:395
decltype(MergedValues::PushBack(Number< chosen_value >{})) new_merged_values
Definition utility/sequence.hpp:401
decltype(MergedIds::PushBack(Number< chosen_id >{})) new_merged_ids
Definition utility/sequence.hpp:402
typename conditional< choose_left, decltype(LeftValues::PopFront()), LeftValues >::type new_left_values
Definition utility/sequence.hpp:404
sorted_sequence_merge_impl< new_left_values, new_left_ids, new_right_values, new_right_ids, new_merged_values, new_merged_ids, Comp > merge
Definition utility/sequence.hpp:414
typename conditional< choose_left, RightIds, decltype(RightIds::PopFront())>::type new_right_ids
Definition utility/sequence.hpp:411
static constexpr index_t chosen_value
Definition utility/sequence.hpp:397
typename conditional< choose_left, RightValues, decltype(RightValues::PopFront())>::type new_right_values
Definition utility/sequence.hpp:409
typename conditional< choose_left, decltype(LeftIds::PopFront()), LeftIds >::type new_left_ids
Definition utility/sequence.hpp:406
static constexpr index_t chosen_id
Definition utility/sequence.hpp:399
Definition utility/sequence.hpp:466
typename merge::merged_ids merged_ids
Definition utility/sequence.hpp:476
sorted_sequence_merge_impl< LeftValues, LeftIds, RightValues, RightIds, Sequence<>, Sequence<>, Comp > merge
Definition utility/sequence.hpp:467
typename merge::merged_values merged_values
Definition utility/sequence.hpp:475
Sequence< Id > sorted_ids
Definition utility/sequence.hpp:520
Sequence< Value > sorted_values
Definition utility/sequence.hpp:519
typename conditional< choose_x, Sequence< ValueX, ValueY >, Sequence< ValueY, ValueX > >::type sorted_values
Definition utility/sequence.hpp:511
typename conditional< choose_x, Sequence< IdX, IdY >, Sequence< IdY, IdX > >::type sorted_ids
Definition utility/sequence.hpp:513
static constexpr bool choose_x
Definition utility/sequence.hpp:509
Sequence<> sorted_values
Definition utility/sequence.hpp:526
Sequence<> sorted_ids
Definition utility/sequence.hpp:527
Definition utility/sequence.hpp:385
sequence_sort_impl< right_unsorted_values, right_unsorted_ids, Compare > right_sort
Definition utility/sequence.hpp:492
typename left_sort::sorted_values left_sorted_values
Definition utility/sequence.hpp:487
sequence_sort_impl< left_unsorted_values, left_unsorted_ids, Compare > left_sort
Definition utility/sequence.hpp:486
sequence_split< Ids, nsize/2 > split_unsorted_ids
Definition utility/sequence.hpp:482
typename right_sort::sorted_values right_sorted_values
Definition utility/sequence.hpp:493
typename left_sort::sorted_ids left_sorted_ids
Definition utility/sequence.hpp:488
typename split_unsorted_values::left_type left_unsorted_values
Definition utility/sequence.hpp:484
static constexpr index_t nsize
Definition utility/sequence.hpp:479
sorted_sequence_merge< left_sorted_values, left_sorted_ids, right_sorted_values, right_sorted_ids, Compare > merged_sorted
Definition utility/sequence.hpp:496
typename merged_sorted::merged_values sorted_values
Definition utility/sequence.hpp:502
typename split_unsorted_ids::left_type left_unsorted_ids
Definition utility/sequence.hpp:485
typename right_sort::sorted_ids right_sorted_ids
Definition utility/sequence.hpp:494
typename split_unsorted_ids::right_type right_unsorted_ids
Definition utility/sequence.hpp:491
typename split_unsorted_values::right_type right_unsorted_values
Definition utility/sequence.hpp:490
sequence_split< Values, nsize/2 > split_unsorted_values
Definition utility/sequence.hpp:481
typename merged_sorted::merged_ids sorted_ids
Definition utility/sequence.hpp:503
Definition utility/sequence.hpp:532
typename sort::sorted_ids sorted2unsorted_map
Definition utility/sequence.hpp:538
typename arithmetic_sequence_gen< 0, Values::Size(), 1 >::type unsorted_ids
Definition utility/sequence.hpp:533
sequence_sort_impl< Values, unsorted_ids, Compare > sort
Definition utility/sequence.hpp:534
Definition utility/sequence.hpp:327
typename arithmetic_sequence_gen< 0, I, 1 >::type range0
Definition utility/sequence.hpp:330
decltype(Seq::Extract(range1{})) right_type
Definition utility/sequence.hpp:334
static constexpr index_t NSize
Definition utility/sequence.hpp:328
typename arithmetic_sequence_gen< I, NSize, 1 >::type range1
Definition utility/sequence.hpp:331
decltype(Seq::Extract(range0{})) left_type
Definition utility/sequence.hpp:333
UniquifiedIds uniquified_ids
Definition utility/sequence.hpp:588
UniquifiedValues uniquified_values
Definition utility/sequence.hpp:587
Definition utility/sequence.hpp:550
typename uniquify::uniquified_values uniquified_values
Definition utility/sequence.hpp:576
typename uniquify::uniquified_ids uniquified_ids
Definition utility/sequence.hpp:577
decltype(RemainValues::PopFront()) new_remain_values
Definition utility/sequence.hpp:556
static constexpr index_t current_value
Definition utility/sequence.hpp:551
typename conditional< is_unique_value, decltype(UniquifiedValues::PushBack(Number< current_value >{})), UniquifiedValues >::type new_uniquified_values
Definition utility/sequence.hpp:559
decltype(RemainIds::PopFront()) new_remain_ids
Definition utility/sequence.hpp:557
static constexpr index_t current_id
Definition utility/sequence.hpp:552
sorted_sequence_uniquify_impl< new_remain_values, new_remain_ids, new_uniquified_values, new_uniquified_ids, Eq > uniquify
Definition utility/sequence.hpp:569
typename conditional< is_unique_value, decltype(UniquifiedIds::PushBack(Number< current_id >{})), UniquifiedIds >::type new_uniquified_ids
Definition utility/sequence.hpp:564
static constexpr bool is_unique_value
Definition utility/sequence.hpp:554
Definition utility/sequence.hpp:593
sorted_sequence_uniquify_impl< decltype(SortedValues::PopFront()), decltype(SortedIds::PopFront()), Sequence< SortedValues::Front()>, Sequence< SortedIds::Front()>, Eq > uniquify
Definition utility/sequence.hpp:594
typename uniquify::uniquified_values uniquified_values
Definition utility/sequence.hpp:600
typename uniquify::uniquified_ids uniquified_ids
Definition utility/sequence.hpp:601
Definition utility/sequence.hpp:543
typename sort::sorted2unsorted_map sorted_ids
Definition utility/sequence.hpp:606
typename sort::type sorted_values
Definition utility/sequence.hpp:605
typename uniquify::uniquified_values type
Definition utility/sequence.hpp:611
typename uniquify::uniquified_ids sorted2unsorted_map
Definition utility/sequence.hpp:612
sorted_sequence_uniquify< sorted_values, sorted_ids, Equal > uniquify
Definition utility/sequence.hpp:608
Definition functional2.hpp:33
Definition utility/sequence.hpp:291
__host__ __device__ constexpr index_t operator()(index_t) const
Definition utility/sequence.hpp:292
Definition utility/sequence.hpp:289
typename sequence_gen< NSize, F >::type type
Definition utility/sequence.hpp:295
std::ostream & operator<<(std::ostream &os, const ck::Sequence< Is... >)
Definition utility/sequence.hpp:934