133
122
// neghuge() by Theodore Papadopoulo, to fix a problem with
134
123
// max() reductions.
136
125
inline T neghuge(T) BZ_THROW
138
127
return numeric_limits<T>::is_integer ? numeric_limits<T>::min()
139
128
: - numeric_limits<T>::max();
143
132
inline T huge(T) BZ_THROW
145
134
return numeric_limits<T>::max();
149
138
inline T tiny(T) BZ_THROW
151
140
return numeric_limits<T>::min();
155
144
inline int max_exponent(T)
157
146
return numeric_limits<T>::max_exponent;
161
150
inline int min_exponent(T)
163
152
return numeric_limits<T>::min_exponent;
167
156
inline int min_exponent10(T)
169
158
return numeric_limits<T>::min_exponent10;
173
162
inline int max_exponent10(T)
175
164
return numeric_limits<T>::max_exponent10;
179
168
inline int precision(T)
181
170
return numeric_limits<T>::digits10;
185
174
inline int radix(T)
187
176
return numeric_limits<T>::radix;
191
180
inline Range range(T)
193
182
return Range(numeric_limits<T>::min_exponent10,
194
183
numeric_limits<T>::max_exponent10);
198
inline bool is_signed(T)
187
inline bool is_signed(T) {
200
188
return numeric_limits<T>::is_signed;
204
inline bool is_integer(T)
192
inline bool is_integer(T) {
206
193
return numeric_limits<T>::is_integer;
210
inline bool is_exact(T)
197
inline bool is_exact(T) {
212
198
return numeric_limits<T>::is_exact;
216
202
inline T round_error(T) BZ_THROW
218
204
return numeric_limits<T>::round_error();
222
inline bool has_infinity(T)
208
inline bool has_infinity(T) {
224
209
return numeric_limits<T>::has_infinity;
228
inline bool has_quiet_NaN(T)
213
inline bool has_quiet_NaN(T) {
230
214
return numeric_limits<T>::has_quiet_NaN;
234
inline bool has_signaling_NaN(T)
218
inline bool has_signaling_NaN(T) {
236
219
return numeric_limits<T>::has_signaling_NaN;
239
222
// Provided for non-US english users
241
inline bool has_signalling_NaN(T)
224
inline bool has_signalling_NaN(T) {
243
225
return numeric_limits<T>::has_signaling_NaN;
247
inline bool has_denorm(T)
229
inline bool has_denorm(T) {
249
230
return numeric_limits<T>::has_denorm;
253
inline bool has_denorm_loss(T)
234
inline bool has_denorm_loss(T) {
255
235
return numeric_limits<T>::has_denorm_loss;
259
239
inline T infinity(T) BZ_THROW
261
241
return numeric_limits<T>::infinity();
265
245
inline T quiet_NaN(T) BZ_THROW
267
247
return numeric_limits<T>::quiet_NaN();
271
251
inline T signaling_NaN(T) BZ_THROW
273
253
return numeric_limits<T>::signaling_NaN();
277
257
inline T signalling_NaN(T) BZ_THROW
279
259
return numeric_limits<T>::signaling_NaN();
283
263
inline T denorm_min(T) BZ_THROW
285
265
return numeric_limits<T>::denorm_min();
289
inline bool is_iec559(T)
269
inline bool is_iec559(T) {
291
270
return numeric_limits<T>::is_iec559;
295
inline bool is_bounded(T)
274
inline bool is_bounded(T) {
297
275
return numeric_limits<T>::is_bounded;
301
inline bool is_modulo(T)
279
inline bool is_modulo(T) {
303
280
return numeric_limits<T>::is_modulo;
284
inline bool traps(T) {
309
285
return numeric_limits<T>::traps;
313
inline bool tinyness_before(T)
289
inline bool tinyness_before(T) {
315
290
return numeric_limits<T>::tinyness_before;
319
294
inline BZ_STD_SCOPE(float_round_style) round_style(T)
321
296
return numeric_limits<T>::round_style;