1 #ifndef PYTHONIC_NUMPY_CLIP_HPP
2 #define PYTHONIC_NUMPY_CLIP_HPP
3 
4 #include "pythonic/include/numpy/clip.hpp"
5 
6 #include "pythonic/utils/functor.hpp"
7 #include "pythonic/types/ndarray.hpp"
8 
9 PYTHONIC_NS_BEGIN
10 
11 namespace numpy
12 {
13   namespace wrapper
14   {
15     template <class T, class Mi, class Ma>
clip(T const & v,Mi a_min,Ma a_max)16     typename __combined<T, Mi, Ma>::type clip(T const &v, Mi a_min, Ma a_max)
17     {
18       if (v < a_min)
19         return a_min;
20       else if (v > a_max)
21         return a_max;
22       else
23         return v;
24     }
25 
26     template <class T, class Mi>
clip(T const & v,Mi a_min)27     typename __combined<T, Mi>::type clip(T const &v, Mi a_min)
28     {
29       if (v < a_min)
30         return a_min;
31       else
32         return v;
33     }
34   }
35 
36 #define NUMPY_NARY_FUNC_NAME clip
37 #define NUMPY_NARY_FUNC_SYM wrapper::clip
38 #include "pythonic/types/numpy_nary_expr.hpp"
39 }
40 PYTHONIC_NS_END
41 
42 #endif
43