27 #include "../types/types.hpp"
45 template<
typename ARRAYT>
typename ARRAYT::value_type min(
const ARRAYT &a)
47 typedef typename ARRAYT::value_type RType;
51 for(
auto iter=a.begin();iter!=a.end();iter++)
58 if(v<result) result = v;
75 template<
typename ARRAYT>
typename ARRAYT::value_type max(
const ARRAYT &a)
77 typedef typename ARRAYT::value_type RType;
82 for(
auto iter=a.begin();iter!=a.end();iter++)
89 if(v>result) result = v;
107 template<
typename ARRAYT>
void min_max(
const ARRAYT &a,
108 typename ARRAYT::value_type &min,
109 typename ARRAYT::value_type &max)
111 min=
typename ARRAYT::value_type(a[0]);
112 max=
typename ARRAYT::value_type(a[0]);
114 for(
auto iter=a.begin();iter!=a.end();iter++)
137 template<
typename ARRAYT>
void clip(ARRAYT &a,
138 typename ARRAYT::value_type minth,
139 typename ARRAYT::value_type maxth)
142 for(
auto iter=a.begin();iter!=a.end();iter++)
144 typename ARRAYT::value_type &v = *iter;
146 for(
typename ARRAYT::value_type &v: a)
176 template<
typename ARRAYT>
void clip(ARRAYT &a,
177 typename ARRAYT::value_type minth,
178 typename ARRAYT::value_type maxth,
179 typename ARRAYT::value_type minval,
180 typename ARRAYT::value_type maxval)
183 for(
auto iter=a.begin();iter!=a.end();iter++)
185 typename ARRAYT::value_type &v = *iter;
187 for(
typename ARRAYT::value_type &v: a)
213 template<
typename ARRAYT>
214 void min_clip(ARRAYT &a,
typename ARRAYT::value_type threshold)
217 for(
auto iter=a.begin();iter!=a.end();iter++)
219 typename ARRAYT::value_type &v = *iter;
221 for(
typename ARRAYT::value_type &v: a)
224 if(v<=threshold) v = threshold;
238 template<
typename ARRAYT>
239 void min_clip(ARRAYT &a,
typename ARRAYT::value_type threshold,
240 typename ARRAYT::value_type value)
243 for(
auto iter=a.begin();iter!=a.end();iter++)
245 typename ARRAYT::value_type &v = *iter;
247 for(
typename ARRAYT::value_type &v: a)
250 if(v<=threshold) v = value;
262 template<
typename ARRAYT>
263 void max_clip(ARRAYT &a,
typename ARRAYT::value_type threshold)
266 for(
auto iter=a.begin();iter!=a.end();iter++)
268 typename ARRAYT::value_type &v = *iter;
270 for(
typename ARRAYT::value_type &v: a)
273 if(v>=threshold) v = threshold;
287 template<
typename ARRAYT>
288 void max_clip(ARRAYT &a,
typename ARRAYT::value_type threshold,
289 typename ARRAYT::value_type value)
292 for(
auto iter=a.begin();iter!=a.end();iter++)
294 typename ARRAYT::value_type &v = *iter;
296 for(
typename ARRAYT::value_type &v: a)
299 if(v>=threshold) v = value;
311 template<
typename ARRAYT>
size_t max_offset(
const ARRAYT &a)
313 typedef typename ARRAYT::value_type value_type;
316 value_type max_value = value_type(a[0]);
320 for(
auto iter=a.begin();iter!=a.end();iter++)
346 template<
typename CONT,
typename ARRAYT> CONT max_index(
const ARRAYT &a)
348 size_t offset = max_offset(a);
349 return a.map().template index<CONT>(
offset);
361 template<
typename ARRAYT>
size_t min_offset(
const ARRAYT &a)
364 typedef typename ARRAYT::value_type value_type;
367 value_type min_value = value_type(a[0]);
371 for(
auto iter=a.begin();iter!=a.end();iter++)
397 template<
typename CONT,
typename ARRAYT> CONT min_index(
const ARRAYT &a)
399 size_t offset = min_offset(a);
400 return a.map().template index<CONT>(
offset);
Definition: add_op.hpp:29
size_t offset(const MAPT &map, const array_selection &s, const CTYPE &index)
compute offset
Definition: array_selection.hpp:510