27 #ifndef MLN_VALUE_BUILTIN_FLOATINGS_HH
28 # define MLN_VALUE_BUILTIN_FLOATINGS_HH
34 # include <mln/value/internal/limits.hh>
36 # include <mln/value/concept/built_in.hh>
37 # include <mln/value/concept/floating.hh>
38 # include <mln/trait/value_.hh>
46 struct category< float >
48 typedef value::Built_In< value::Floating<void> > ret;
52 struct category< double >
54 typedef value::Built_In< value::Floating<void> > ret;
65 struct value_< float >
69 nbits = 8 *
sizeof(float),
73 typedef value::nature::floating nature;
74 typedef value::kind::data kind;
75 typedef value::quant::high quant;
84 static const float min_ = - mln::value::internal::limits<float>::max();
89 static const float max_ = mln::value::internal::limits<float>::max();
92 static float epsilon()
94 static const float epsilon_ = mln::value::internal::limits<float>::epsilon();
100 static const char* name()
109 struct value_< double >
113 nbits = 8 *
sizeof(double),
117 typedef value::nature::floating nature;
118 typedef value::kind::data kind;
119 typedef value::quant::high quant;
128 static const double min_ = - mln::value::internal::limits<double>::max();
133 static const double max_ = mln::value::internal::limits<double>::max();
136 static double epsilon()
138 static const double epsilon_ = mln::value::internal::limits<double>::epsilon();
144 static const char* name()
154 #endif // ! MLN_VALUE_BUILTIN_FLOATINGS_HH