MCPcopy Create free account
hub / github.com/arrayfire/arrayfire / setIntersect

Function setIntersect

src/backend/cpu/set.cpp:83–109  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

81
82template<typename T>
83Array<T> setIntersect(const Array<T> &first, const Array<T> &second,
84 const bool is_unique) {
85 Array<T> uFirst = first;
86 Array<T> uSecond = second;
87
88 if (!is_unique) {
89 uFirst = setUnique(first, false);
90 uSecond = setUnique(second, false);
91 }
92
93 dim_t first_elements = uFirst.elements();
94 dim_t second_elements = uSecond.elements();
95 dim_t elements = std::max(first_elements, second_elements);
96
97 Array<T> out = createEmptyArray<T>(af::dim4(elements));
98
99 T *ptr = out.get();
100 T *last =
101 set_intersection(uFirst.get(), uFirst.get() + first_elements,
102 uSecond.get(), uSecond.get() + second_elements, ptr);
103
104 auto dist = static_cast<dim_t>(distance(ptr, last));
105 dim4 dims(dist, 1, 1, 1);
106 out.resetDims(dims);
107
108 return out;
109}
110
111#define INSTANTIATE(T) \
112 template Array<T> setUnique<T>(const Array<T> &in, const bool is_sorted); \

Callers

nothing calls this directly

Calls 7

setUniqueFunction · 0.70
maxFunction · 0.70
dim4Class · 0.70
distanceFunction · 0.50
elementsMethod · 0.45
getMethod · 0.45
resetDimsMethod · 0.45

Tested by

no test coverage detected