27 #ifndef MLN_MORPHO_MIN_HH
28 # define MLN_MORPHO_MIN_HH
37 # include <mln/data/compare.hh>
38 # include <mln/logical/and.hh>
39 # include <mln/arith/min.hh>
53 template <
typename I,
typename J>
55 min(const Image<I>& lhs, const Image<J>&
rhs);
64 template <typename I, typename J>
65 void min_inplace(Image<I>& lhs, const Image<J>& rhs);
68 # ifndef MLN_INCLUDE_ONLY
75 template <
typename I,
typename J,
typename O>
77 mln_concrete(I) min_(trait::image::kind::logic,
78 const I& lhs, const J& rhs)
83 template <
typename I,
typename J>
85 void min_inplace_(trait::image::kind::logic,
93 template <
typename I,
typename J>
95 mln_concrete(I) min_(trait::image::kind::any,
96 const I& lhs, const J& rhs)
101 template <
typename I,
typename J>
103 void min_inplace_(trait::image::kind::any,
104 I& lhs,
const J& rhs)
114 template <
typename I,
typename J>
117 min(const Image<I>& lhs, const Image<J>& rhs)
119 mln_trace(
"morpho::min");
122 mln_concrete(I) output = impl::min_(mln_trait_image_kind(I)(),
exact(lhs),
exact(rhs));
127 template <typename I, typename J>
129 void min_inplace(Image<I>& lhs, const Image<J>& rhs)
131 mln_trace(
"morpho::min_inplace");
134 impl::min_inplace_(mln_trait_image_kind(I)(),
exact(lhs),
exact(rhs));
138 # endif // ! MLN_INCLUDE_ONLY
145 #endif // ! MLN_MORPHO_MIN_HH