27 #ifndef MLN_VALUE_INTERNAL_GRAY_F_HH
28 # define MLN_VALUE_INTERNAL_GRAY_F_HH
36 # include <mln/value/ops.hh>
38 # include <mln/core/contract.hh>
39 # include <mln/metal/math/pow.hh>
40 # include <mln/metal/bexpr.hh>
41 # include <mln/literal/ops.hh>
43 # include <mln/value/float01_f.hh>
44 # include <mln/trait/value_.hh>
52 # ifdef MLN_INCLUDE_ONLY
53 # include <mln/value/graylevel_f.hh>
55 # define MLN_INCLUDE_ONLY
56 # include <mln/value/graylevel_f.hh>
57 # undef MLN_INCLUDE_ONLY
79 template <
unsigned n>
class gray_;
83 template <
unsigned n>
struct graylevel;
95 template <
template <
class,
class>
class Name>
124 template <
typename T>
struct value_;
128 struct value_<mln::value::internal::gray_f>
132 typedef float equiv_;
137 nbits = mln_nbits(equiv_),
141 typedef trait::value::nature::floating
nature;
142 typedef trait::value::kind::gray
kind;
143 typedef mln_trait_value_quant_(equiv_) quant;
145 static equiv_
min() {
return 0; }
146 static equiv_
max() {
return 1; }
147 static equiv_ epsilon() {
return mln_epsilon(equiv_); }
181 template <
unsigned n>
183 template <
unsigned n>
198 template <
unsigned m>
202 template <
unsigned m>
224 # ifndef MLN_INCLUDE_ONLY
225 # include <mln/value/internal/gray_f.hxx>
226 # include <mln/value/graylevel_f.hxx>
227 # endif // ! MLN_INCLUDE_ONLY
230 #endif // ! MLN_VALUE_INTERNAL_GRAY_F_HH