tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
numeric_limits.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSL-1.0
2// SPDX-FileCopyrightText: Copyright (C) 2020 Tobias Hienzsch
3
4#ifndef TETL_LIMITS_NUMERIC_LIMITS_HPP
5#define TETL_LIMITS_NUMERIC_LIMITS_HPP
6
7#include <etl/_config/all.hpp>
8
9#include <etl/_cfloat/defines.hpp>
10#include <etl/_climits/defines.hpp>
11#include <etl/_cmath/typedefs.hpp>
12#include <etl/_limits/float_denorm_style.hpp>
13#include <etl/_limits/float_round_style.hpp>
14
15namespace etl {
16
17template <typename T>
19 static constexpr bool is_specialized = false;
20
21 static constexpr auto min() noexcept
22 {
23 return T();
24 }
25 static constexpr auto max() noexcept
26 {
27 return T();
28 }
29 static constexpr auto lowest() noexcept
30 {
31 return T();
32 }
33
34 static constexpr int digits = 0;
35 static constexpr int digits10 = 0;
36 static constexpr int max_digits10 = 0;
37
38 static constexpr bool is_signed = false;
39 static constexpr bool is_integer = false;
40 static constexpr bool is_exact = false;
41 static constexpr int radix = 0;
42 static constexpr auto epsilon() noexcept -> T
43 {
44 return T();
45 }
46 static constexpr auto round_error() noexcept -> T
47 {
48 return T();
49 }
50
51 static constexpr int min_exponent = 0;
52 static constexpr int min_exponent10 = 0;
53 static constexpr int max_exponent = 0;
54 static constexpr int max_exponent10 = 0;
55
56 static constexpr bool has_infinity = false;
57 static constexpr bool has_quiet_NaN = false;
58 static constexpr bool has_signaling_NaN = false;
59 static constexpr bool has_denorm_loss = false;
61
62 static constexpr auto infinity() noexcept -> T
63 {
64 return T();
65 }
66 static constexpr auto quiet_NaN() noexcept -> T
67 {
68 return T();
69 }
70 static constexpr auto signaling_NaN() noexcept -> T
71 {
72 return T();
73 }
74 static constexpr auto denorm_min() noexcept -> T
75 {
76 return T();
77 }
78
79 static constexpr bool is_iec559 = false;
80 static constexpr bool is_bounded = false;
81 static constexpr bool is_modulo = false;
82
83 static constexpr bool traps = false;
84 static constexpr bool tinyness_before = false;
86};
87
88template <>
89struct numeric_limits<bool> {
90 static constexpr bool is_specialized = true;
91
92 static constexpr auto min() noexcept -> bool
93 {
94 return false;
95 }
96 static constexpr auto max() noexcept -> bool
97 {
98 return true;
99 }
100 static constexpr auto lowest() noexcept -> bool
101 {
102 return false;
103 }
104
105 static constexpr int digits = 1;
106 static constexpr int digits10 = 0;
107 static constexpr int max_digits10 = 0;
108
109 static constexpr bool is_signed = false;
110 static constexpr bool is_integer = true;
111 static constexpr bool is_exact = true;
112 static constexpr int radix = 2;
113 static constexpr auto epsilon() noexcept -> bool
114 {
115 return false;
116 }
117 static constexpr auto round_error() noexcept -> bool
118 {
119 return false;
120 }
121
122 static constexpr int min_exponent = 0;
123 static constexpr int min_exponent10 = 0;
124 static constexpr int max_exponent = 0;
125 static constexpr int max_exponent10 = 0;
126
127 static constexpr bool has_infinity = false;
128 static constexpr bool has_quiet_NaN = false;
129 static constexpr bool has_signaling_NaN = false;
130 static constexpr bool has_denorm_loss = false;
132
133 static constexpr auto infinity() noexcept -> bool
134 {
135 return false;
136 }
137 static constexpr auto quiet_NaN() noexcept -> bool
138 {
139 return false;
140 }
141 static constexpr auto signaling_NaN() noexcept -> bool
142 {
143 return false;
144 }
145 static constexpr auto denorm_min() noexcept -> bool
146 {
147 return false;
148 }
149
150 static constexpr bool is_iec559 = false;
151 static constexpr bool is_bounded = true;
152 static constexpr bool is_modulo = false;
153
154 static constexpr bool traps = false;
155 static constexpr bool tinyness_before = false;
157};
158
159template <>
160struct numeric_limits<char> {
161 static constexpr bool is_specialized = true;
162
163 static constexpr auto min() noexcept -> char
164 {
165 return CHAR_MIN;
166 }
167 static constexpr auto max() noexcept -> char
168 {
169 return CHAR_MAX;
170 }
171 static constexpr auto lowest() noexcept -> char
172 {
173 return CHAR_MIN;
174 }
175
176 static constexpr bool is_signed = CHAR_MIN < 0;
177 static constexpr bool is_integer = true;
178 static constexpr bool is_exact = true;
179 static constexpr int radix = 2;
180 static constexpr auto epsilon() noexcept -> char
181 {
182 return char{};
183 }
184 static constexpr auto round_error() noexcept -> char
185 {
186 return char{};
187 }
188
189 static constexpr int digits = static_cast<int>(CHAR_BIT * sizeof(char) - static_cast<unsigned>(is_signed));
190 static constexpr int digits10 = digits * 3 / 10;
191 static constexpr int max_digits10 = 0;
192
193 static constexpr int min_exponent = 0;
194 static constexpr int min_exponent10 = 0;
195 static constexpr int max_exponent = 0;
196 static constexpr int max_exponent10 = 0;
197
198 static constexpr bool has_infinity = false;
199 static constexpr bool has_quiet_NaN = false;
200 static constexpr bool has_signaling_NaN = false;
201 static constexpr bool has_denorm_loss = false;
203
204 static constexpr auto infinity() noexcept -> char
205 {
206 return char{};
207 }
208 static constexpr auto quiet_NaN() noexcept -> char
209 {
210 return char{};
211 }
212 static constexpr auto signaling_NaN() noexcept -> char
213 {
214 return char{};
215 }
216 static constexpr auto denorm_min() noexcept -> char
217 {
218 return char{};
219 }
220
221 static constexpr bool is_iec559 = false;
222 static constexpr bool is_bounded = true;
223 static constexpr bool is_modulo = is_signed;
224
225 static constexpr bool traps = true;
226 static constexpr bool tinyness_before = false;
228};
229
230template <>
231struct numeric_limits<signed char> {
232 static constexpr bool is_specialized = true;
233
234 static constexpr auto min() noexcept -> signed char
235 {
236 return SCHAR_MIN;
237 }
238 static constexpr auto max() noexcept -> signed char
239 {
240 return SCHAR_MAX;
241 }
242 static constexpr auto lowest() noexcept -> signed char
243 {
244 return SCHAR_MIN;
245 }
246
247 static constexpr bool is_signed = SCHAR_MIN < 0;
248 static constexpr bool is_integer = true;
249 static constexpr bool is_exact = true;
250 static constexpr int radix = 2;
251 static constexpr auto epsilon() noexcept -> signed char
252 {
253 return {};
254 }
255 static constexpr auto round_error() noexcept -> signed char
256 {
257 return {};
258 }
259
260 static constexpr int digits = static_cast<int>(CHAR_BIT * sizeof(signed char) - static_cast<unsigned>(is_signed));
261 static constexpr int digits10 = digits * 3 / 10;
262 static constexpr int max_digits10 = 0;
263
264 static constexpr int min_exponent = 0;
265 static constexpr int min_exponent10 = 0;
266 static constexpr int max_exponent = 0;
267 static constexpr int max_exponent10 = 0;
268
269 static constexpr bool has_infinity = false;
270 static constexpr bool has_quiet_NaN = false;
271 static constexpr bool has_signaling_NaN = false;
272 static constexpr bool has_denorm_loss = false;
274
275 static constexpr auto infinity() noexcept -> signed char
276 {
277 return {};
278 }
279 static constexpr auto quiet_NaN() noexcept -> signed char
280 {
281 return {};
282 }
283 static constexpr auto signaling_NaN() noexcept -> signed char
284 {
285 return {};
286 }
287 static constexpr auto denorm_min() noexcept -> signed char
288 {
289 return {};
290 }
291
292 static constexpr bool is_iec559 = false;
293 static constexpr bool is_bounded = true;
294 static constexpr bool is_modulo = false;
295
296 static constexpr bool traps = true;
297 static constexpr bool tinyness_before = false;
299};
300
301template <>
302struct numeric_limits<unsigned char> {
303 static constexpr bool is_specialized = true;
304
305 static constexpr auto lowest() noexcept -> unsigned char
306 {
307 return 0;
308 }
309 static constexpr auto min() noexcept -> unsigned char
310 {
311 return 0;
312 }
313 static constexpr auto max() noexcept -> unsigned char
314 {
315 return UCHAR_MAX;
316 }
317
318 static constexpr bool is_signed = false;
319 static constexpr bool is_integer = true;
320 static constexpr bool is_exact = true;
321 static constexpr int radix = 2;
322 static constexpr auto epsilon() noexcept -> unsigned char
323 {
324 return {};
325 }
326 static constexpr auto round_error() noexcept -> unsigned char
327 {
328 return {};
329 }
330
331 static constexpr int digits = static_cast<int>(CHAR_BIT * sizeof(unsigned char) - static_cast<unsigned>(is_signed));
332 static constexpr int digits10 = digits * 3 / 10;
333 static constexpr int max_digits10 = 0;
334
335 static constexpr int min_exponent = 0;
336 static constexpr int min_exponent10 = 0;
337 static constexpr int max_exponent = 0;
338 static constexpr int max_exponent10 = 0;
339
340 static constexpr bool has_infinity = false;
341 static constexpr bool has_quiet_NaN = false;
342 static constexpr bool has_signaling_NaN = false;
343 static constexpr bool has_denorm_loss = false;
345
346 static constexpr auto infinity() noexcept -> unsigned char
347 {
348 return 0;
349 }
350 static constexpr auto quiet_NaN() noexcept -> unsigned char
351 {
352 return 0;
353 }
354 static constexpr auto signaling_NaN() noexcept -> unsigned char
355 {
356 return 0;
357 }
358 static constexpr auto denorm_min() noexcept -> unsigned char
359 {
360 return 0;
361 }
362
363 static constexpr bool is_iec559 = false;
364 static constexpr bool is_bounded = true;
365 static constexpr bool is_modulo = true;
366
367 static constexpr bool traps = true;
368 static constexpr bool tinyness_before = false;
370};
371
372template <>
373struct numeric_limits<char8_t> {
374 static constexpr bool is_specialized = true;
375
376 static constexpr auto min() noexcept -> char8_t
377 {
378 return 0;
379 }
380 static constexpr auto max() noexcept -> char8_t
381 {
382 return UCHAR_MAX;
383 }
384 static constexpr auto lowest() noexcept -> char8_t
385 {
386 return min();
387 }
388
389 static constexpr bool is_signed = CHAR_MIN < 0;
390 static constexpr bool is_integer = true;
391 static constexpr bool is_exact = true;
392 static constexpr int radix = 2;
393 static constexpr auto epsilon() noexcept -> char8_t
394 {
395 return char8_t{};
396 }
397 static constexpr auto round_error() noexcept -> char8_t
398 {
399 return char8_t{};
400 }
401
402 static constexpr int digits = 8;
403 static constexpr int digits10 = 2;
404 static constexpr int max_digits10 = 0;
405
406 static constexpr int min_exponent = 0;
407 static constexpr int min_exponent10 = 0;
408 static constexpr int max_exponent = 0;
409 static constexpr int max_exponent10 = 0;
410
411 static constexpr bool has_infinity = false;
412 static constexpr bool has_quiet_NaN = false;
413 static constexpr bool has_signaling_NaN = false;
414 static constexpr bool has_denorm_loss = false;
416
417 static constexpr auto infinity() noexcept -> char8_t
418 {
419 return char8_t{};
420 }
421 static constexpr auto quiet_NaN() noexcept -> char8_t
422 {
423 return char8_t{};
424 }
425 static constexpr auto signaling_NaN() noexcept -> char8_t
426 {
427 return char8_t{};
428 }
429 static constexpr auto denorm_min() noexcept -> char8_t
430 {
431 return char8_t{};
432 }
433
434 static constexpr bool is_iec559 = false;
435 static constexpr bool is_bounded = true;
436 static constexpr bool is_modulo = true;
437
438 static constexpr bool traps = true;
439 static constexpr bool tinyness_before = false;
441};
442
443template <>
444struct numeric_limits<short> {
445 static constexpr bool is_specialized = true;
446
447 static constexpr auto lowest() noexcept -> short
448 {
449 return SHRT_MIN;
450 }
451 static constexpr auto min() noexcept -> short
452 {
453 return SHRT_MIN;
454 }
455 static constexpr auto max() noexcept -> short
456 {
457 return SHRT_MAX;
458 }
459
460 static constexpr bool is_signed = true;
461 static constexpr bool is_integer = true;
462 static constexpr bool is_exact = true;
463 static constexpr int radix = 2;
464 static constexpr auto epsilon() noexcept -> short
465 {
466 return short{};
467 }
468 static constexpr auto round_error() noexcept -> short
469 {
470 return short{};
471 }
472
473 static constexpr int digits = static_cast<int>(CHAR_BIT * sizeof(short) - static_cast<unsigned>(is_signed));
474 static constexpr int digits10 = digits * 3 / 10;
475 static constexpr int max_digits10 = 0;
476
477 static constexpr int min_exponent = 0;
478 static constexpr int min_exponent10 = 0;
479 static constexpr int max_exponent = 0;
480 static constexpr int max_exponent10 = 0;
481
482 static constexpr bool has_infinity = false;
483 static constexpr bool has_quiet_NaN = false;
484 static constexpr bool has_signaling_NaN = false;
485 static constexpr bool has_denorm_loss = false;
487
488 static constexpr auto infinity() noexcept -> short
489 {
490 return short{};
491 }
492 static constexpr auto quiet_NaN() noexcept -> short
493 {
494 return short{};
495 }
496 static constexpr auto signaling_NaN() noexcept -> short
497 {
498 return short{};
499 }
500 static constexpr auto denorm_min() noexcept -> short
501 {
502 return short{};
503 }
504
505 static constexpr bool is_iec559 = false;
506 static constexpr bool is_bounded = true;
507 static constexpr bool is_modulo = false;
508
509 static constexpr bool traps = true;
510 static constexpr bool tinyness_before = false;
512};
513
514template <>
515struct numeric_limits<unsigned short> {
516 static constexpr bool is_specialized = true;
517
518 static constexpr auto lowest() noexcept -> unsigned short
519 {
520 return 0;
521 }
522 static constexpr auto min() noexcept -> unsigned short
523 {
524 return 0;
525 }
526 static constexpr auto max() noexcept -> unsigned short
527 {
528 return USHRT_MAX;
529 }
530
531 static constexpr bool is_signed = false;
532 static constexpr bool is_integer = true;
533 static constexpr bool is_exact = true;
534 static constexpr int radix = 2;
535 static constexpr auto epsilon() noexcept -> unsigned short
536 {
537 return {};
538 }
539 static constexpr auto round_error() noexcept -> unsigned short
540 {
541 return {};
542 }
543
544 static constexpr int digits
545 = static_cast<int>(CHAR_BIT * sizeof(unsigned short) - static_cast<unsigned>(is_signed));
546 static constexpr int digits10 = digits * 3 / 10;
547 static constexpr int max_digits10 = 0;
548
549 static constexpr int min_exponent = 0;
550 static constexpr int min_exponent10 = 0;
551 static constexpr int max_exponent = 0;
552 static constexpr int max_exponent10 = 0;
553
554 static constexpr bool has_infinity = false;
555 static constexpr bool has_quiet_NaN = false;
556 static constexpr bool has_signaling_NaN = false;
557 static constexpr bool has_denorm_loss = false;
559
560 static constexpr auto infinity() noexcept -> unsigned short
561 {
562 return 0;
563 }
564 static constexpr auto quiet_NaN() noexcept -> unsigned short
565 {
566 return 0;
567 }
568 static constexpr auto signaling_NaN() noexcept -> unsigned short
569 {
570 return 0;
571 }
572 static constexpr auto denorm_min() noexcept -> unsigned short
573 {
574 return 0;
575 }
576
577 static constexpr bool is_iec559 = false;
578 static constexpr bool is_bounded = true;
579 static constexpr bool is_modulo = true;
580
581 static constexpr bool traps = true;
582 static constexpr bool tinyness_before = false;
584};
585
586template <>
587struct numeric_limits<int> {
588 static constexpr bool is_specialized = true;
589
590 static constexpr auto lowest() noexcept -> int
591 {
592 return INT_MIN;
593 }
594 static constexpr auto min() noexcept -> int
595 {
596 return INT_MIN;
597 }
598 static constexpr auto max() noexcept -> int
599 {
600 return INT_MAX;
601 }
602
603 static constexpr bool is_signed = true;
604 static constexpr bool is_integer = true;
605 static constexpr bool is_exact = true;
606 static constexpr int radix = 2;
607 static constexpr auto epsilon() noexcept -> int
608 {
609 return int{};
610 }
611 static constexpr auto round_error() noexcept -> int
612 {
613 return int{};
614 }
615
616 static constexpr int digits = static_cast<int>(CHAR_BIT * sizeof(int) - static_cast<unsigned>(is_signed));
617 static constexpr int digits10 = digits * 3 / 10;
618 static constexpr int max_digits10 = 0;
619
620 static constexpr int min_exponent = 0;
621 static constexpr int min_exponent10 = 0;
622 static constexpr int max_exponent = 0;
623 static constexpr int max_exponent10 = 0;
624
625 static constexpr bool has_infinity = false;
626 static constexpr bool has_quiet_NaN = false;
627 static constexpr bool has_signaling_NaN = false;
628 static constexpr bool has_denorm_loss = false;
630
631 static constexpr auto infinity() noexcept -> int
632 {
633 return int{};
634 }
635 static constexpr auto quiet_NaN() noexcept -> int
636 {
637 return int{};
638 }
639 static constexpr auto signaling_NaN() noexcept -> int
640 {
641 return int{};
642 }
643 static constexpr auto denorm_min() noexcept -> int
644 {
645 return int{};
646 }
647
648 static constexpr bool is_iec559 = false;
649 static constexpr bool is_bounded = true;
650 static constexpr bool is_modulo = false;
651
652 static constexpr bool traps = true;
653 static constexpr bool tinyness_before = false;
655};
656
657template <>
658struct numeric_limits<unsigned int> {
659 static constexpr bool is_specialized = true;
660
661 static constexpr auto lowest() noexcept -> unsigned int
662 {
663 return 0;
664 }
665 static constexpr auto min() noexcept -> unsigned int
666 {
667 return 0;
668 }
669 static constexpr auto max() noexcept -> unsigned int
670 {
671 return UINT_MAX;
672 }
673
674 static constexpr bool is_signed = false;
675 static constexpr bool is_integer = true;
676 static constexpr bool is_exact = true;
677 static constexpr int radix = 2;
678 static constexpr auto epsilon() noexcept -> unsigned int
679 {
680 return {};
681 }
682 static constexpr auto round_error() noexcept -> unsigned int
683 {
684 return {};
685 }
686
687 static constexpr int digits = static_cast<int>(CHAR_BIT * sizeof(unsigned int) - static_cast<unsigned>(is_signed));
688 static constexpr int digits10 = digits * 3 / 10;
689 static constexpr int max_digits10 = 0;
690
691 static constexpr int min_exponent = 0;
692 static constexpr int min_exponent10 = 0;
693 static constexpr int max_exponent = 0;
694 static constexpr int max_exponent10 = 0;
695
696 static constexpr bool has_infinity = false;
697 static constexpr bool has_quiet_NaN = false;
698 static constexpr bool has_signaling_NaN = false;
700 static constexpr bool has_denorm_loss = false;
701
702 static constexpr auto infinity() noexcept -> unsigned int
703 {
704 return 0;
705 }
706 static constexpr auto quiet_NaN() noexcept -> unsigned int
707 {
708 return 0;
709 }
710 static constexpr auto signaling_NaN() noexcept -> unsigned int
711 {
712 return 0;
713 }
714 static constexpr auto denorm_min() noexcept -> unsigned int
715 {
716 return 0;
717 }
718
719 static constexpr bool is_iec559 = false;
720 static constexpr bool is_bounded = true;
721 static constexpr bool is_modulo = true;
722
723 static constexpr bool traps = true;
724 static constexpr bool tinyness_before = false;
726};
727
728template <>
729struct numeric_limits<long> {
730 static constexpr bool is_specialized = true;
731
732 static constexpr auto lowest() noexcept -> long
733 {
734 return LONG_MIN;
735 }
736 static constexpr auto min() noexcept -> long
737 {
738 return LONG_MIN;
739 }
740 static constexpr auto max() noexcept -> long
741 {
742 return LONG_MAX;
743 }
744
745 static constexpr bool is_signed = true;
746 static constexpr bool is_integer = true;
747 static constexpr bool is_exact = true;
748 static constexpr int radix = 2;
749 static constexpr auto epsilon() noexcept -> long
750 {
751 return long{};
752 }
753 static constexpr auto round_error() noexcept -> long
754 {
755 return long{};
756 }
757
758 static constexpr int digits = static_cast<int>(CHAR_BIT * sizeof(long) - static_cast<unsigned>(is_signed));
759 static constexpr int digits10 = digits * 3 / 10;
760 static constexpr int max_digits10 = 0;
761
762 static constexpr int min_exponent = 0;
763 static constexpr int min_exponent10 = 0;
764 static constexpr int max_exponent = 0;
765 static constexpr int max_exponent10 = 0;
766
767 static constexpr bool has_infinity = false;
768 static constexpr bool has_quiet_NaN = false;
769 static constexpr bool has_signaling_NaN = false;
771 static constexpr bool has_denorm_loss = false;
772
773 static constexpr auto infinity() noexcept -> long
774 {
775 return long{};
776 }
777 static constexpr auto quiet_NaN() noexcept -> long
778 {
779 return long{};
780 }
781 static constexpr auto signaling_NaN() noexcept -> long
782 {
783 return long{};
784 }
785 static constexpr auto denorm_min() noexcept -> long
786 {
787 return long{};
788 }
789
790 static constexpr bool is_iec559 = false;
791 static constexpr bool is_bounded = true;
792 static constexpr bool is_modulo = false;
793
794 static constexpr bool traps = true;
795 static constexpr bool tinyness_before = false;
797};
798
799template <>
800struct numeric_limits<unsigned long> {
801 static constexpr bool is_specialized = true;
802
803 static constexpr auto lowest() noexcept -> unsigned long
804 {
805 return 0;
806 }
807 static constexpr auto min() noexcept -> unsigned long
808 {
809 return 0;
810 }
811 static constexpr auto max() noexcept -> unsigned long
812 {
813 return ULONG_MAX;
814 }
815
816 static constexpr bool is_signed = false;
817 static constexpr bool is_integer = true;
818 static constexpr bool is_exact = true;
819 static constexpr int radix = 2;
820 static constexpr auto epsilon() noexcept -> unsigned long
821 {
822 return {};
823 }
824 static constexpr auto round_error() noexcept -> unsigned long
825 {
826 return {};
827 }
828
829 static constexpr int digits = static_cast<int>(CHAR_BIT * sizeof(unsigned long) - static_cast<unsigned>(is_signed));
830 static constexpr int digits10 = digits * 3 / 10;
831 static constexpr int max_digits10 = 0;
832
833 static constexpr int min_exponent = 0;
834 static constexpr int min_exponent10 = 0;
835 static constexpr int max_exponent = 0;
836 static constexpr int max_exponent10 = 0;
837
838 static constexpr bool has_infinity = false;
839 static constexpr bool has_quiet_NaN = false;
840 static constexpr bool has_signaling_NaN = false;
842 static constexpr bool has_denorm_loss = false;
843
844 static constexpr auto infinity() noexcept -> unsigned long
845 {
846 return 0;
847 }
848 static constexpr auto quiet_NaN() noexcept -> unsigned long
849 {
850 return 0;
851 }
852 static constexpr auto signaling_NaN() noexcept -> unsigned long
853 {
854 return 0;
855 }
856 static constexpr auto denorm_min() noexcept -> unsigned long
857 {
858 return 0;
859 }
860
861 static constexpr bool is_iec559 = false;
862 static constexpr bool is_bounded = true;
863 static constexpr bool is_modulo = true;
864
865 static constexpr bool traps = true;
866 static constexpr bool tinyness_before = false;
868};
869
870template <>
871struct numeric_limits<long long> {
872 static constexpr bool is_specialized = true;
873
874 static constexpr auto lowest() noexcept -> long long
875 {
876#if defined(LLONG_MIN)
877 return LLONG_MIN;
878#else
879 return -__LONG_LONG_MAX__ - 1;
880#endif
881 }
882
883 static constexpr auto min() noexcept -> long long
884 {
885 return lowest();
886 }
887
888 static constexpr auto max() noexcept -> long long
889 {
890#if defined(LLONG_MAX)
891 return LLONG_MAX;
892#else
893 return __LONG_LONG_MAX__;
894#endif
895 }
896
897 static constexpr bool is_signed = true;
898 static constexpr bool is_integer = true;
899 static constexpr bool is_exact = true;
900 static constexpr int radix = 2;
901 static constexpr auto epsilon() noexcept -> long long
902 {
903 return 0;
904 }
905 static constexpr auto round_error() noexcept -> long long
906 {
907 return 0;
908 }
909
910 static constexpr int digits = static_cast<int>(CHAR_BIT * sizeof(long long) - static_cast<unsigned>(is_signed));
911 static constexpr int digits10 = digits * 3 / 10;
912 static constexpr int max_digits10 = 0;
913
914 static constexpr int min_exponent = 0;
915 static constexpr int min_exponent10 = 0;
916 static constexpr int max_exponent = 0;
917 static constexpr int max_exponent10 = 0;
918
919 static constexpr bool has_infinity = false;
920 static constexpr bool has_quiet_NaN = false;
921 static constexpr bool has_signaling_NaN = false;
923 static constexpr bool has_denorm_loss = false;
924
925 static constexpr auto infinity() noexcept -> long long
926 {
927 return 0;
928 }
929 static constexpr auto quiet_NaN() noexcept -> long long
930 {
931 return 0;
932 }
933 static constexpr auto signaling_NaN() noexcept -> long long
934 {
935 return 0;
936 }
937 static constexpr auto denorm_min() noexcept -> long long
938 {
939 return 0;
940 }
941
942 static constexpr bool is_iec559 = false;
943 static constexpr bool is_bounded = true;
944 static constexpr bool is_modulo = false;
945
946 static constexpr bool traps = true;
947 static constexpr bool tinyness_before = false;
949};
950
951template <>
952struct numeric_limits<unsigned long long> {
953 static constexpr bool is_specialized = true;
954
955 static constexpr auto lowest() noexcept -> unsigned long long
956 {
957 return 0;
958 }
959 static constexpr auto min() noexcept -> unsigned long long
960 {
961 return 0;
962 }
963 static constexpr auto max() noexcept -> unsigned long long
964 {
965 return static_cast<unsigned long long>(-1);
966 }
967
968 static constexpr bool is_signed = false;
969 static constexpr bool is_integer = true;
970 static constexpr bool is_exact = true;
971 static constexpr int radix = 2;
972 static constexpr auto epsilon() noexcept -> unsigned long long
973 {
974 return {};
975 }
976 static constexpr auto round_error() noexcept -> unsigned long long
977 {
978 return {};
979 }
980
981 static constexpr int digits
982 = static_cast<int>(CHAR_BIT * sizeof(unsigned long long) - static_cast<unsigned>(is_signed));
983 static constexpr int digits10 = digits * 3 / 10;
984 static constexpr int max_digits10 = 0;
985
986 static constexpr int min_exponent = 0;
987 static constexpr int min_exponent10 = 0;
988 static constexpr int max_exponent = 0;
989 static constexpr int max_exponent10 = 0;
990
991 static constexpr bool has_infinity = false;
992 static constexpr bool has_quiet_NaN = false;
993 static constexpr bool has_signaling_NaN = false;
995 static constexpr bool has_denorm_loss = false;
996
997 static constexpr auto infinity() noexcept -> unsigned long long
998 {
999 return 0;
1000 }
1001 static constexpr auto quiet_NaN() noexcept -> unsigned long long
1002 {
1003 return 0;
1004 }
1005 static constexpr auto signaling_NaN() noexcept -> unsigned long long
1006 {
1007 return 0;
1008 }
1009 static constexpr auto denorm_min() noexcept -> unsigned long long
1010 {
1011 return 0;
1012 }
1013
1014 static constexpr bool is_iec559 = false;
1015 static constexpr bool is_bounded = true;
1016 static constexpr bool is_modulo = true;
1017
1018 static constexpr bool traps = true;
1019 static constexpr bool tinyness_before = false;
1021};
1022
1023template <>
1024struct numeric_limits<float> {
1025 static constexpr bool is_specialized = true;
1026
1027 static constexpr auto min() noexcept
1028 {
1029 return FLT_MIN;
1030 }
1031 static constexpr auto max() noexcept
1032 {
1033 return FLT_MAX;
1034 }
1035 static constexpr auto lowest() noexcept
1036 {
1037 return -FLT_MAX;
1038 }
1039
1040 static constexpr int digits = FLT_MANT_DIG;
1041 static constexpr int digits10 = FLT_DIG;
1042 static constexpr int max_digits10 = DECIMAL_DIG;
1043
1044 static constexpr bool is_signed = true;
1045 static constexpr bool is_integer = false;
1046 static constexpr bool is_exact = false;
1047 static constexpr int radix = FLT_RADIX;
1048 static constexpr auto epsilon() noexcept -> float
1049 {
1050 return FLT_EPSILON;
1051 }
1052 static constexpr auto round_error() noexcept -> float
1053 {
1054 return 0.5F;
1055 }
1056
1057 static constexpr int min_exponent = FLT_MIN_EXP;
1058 static constexpr int min_exponent10 = FLT_MIN_10_EXP;
1059 static constexpr int max_exponent = FLT_MAX_EXP;
1060 static constexpr int max_exponent10 = FLT_MAX_10_EXP;
1061
1062 static constexpr bool has_infinity = true;
1063 static constexpr bool has_quiet_NaN = true;
1064 static constexpr bool has_signaling_NaN = true;
1066 static constexpr bool has_denorm_loss = false;
1067
1068 static constexpr auto infinity() noexcept -> float
1069 {
1070 return TETL_BUILTIN_HUGE_VALF;
1071 }
1072 static constexpr auto quiet_NaN() noexcept -> float
1073 {
1074 return TETL_BUILTIN_NANF("");
1075 }
1076 static constexpr auto signaling_NaN() noexcept -> float
1077 {
1078 return TETL_BUILTIN_NANSF("");
1079 }
1080 static constexpr auto denorm_min() noexcept -> float
1081 {
1082 return 0.0F;
1083 }
1084
1085 static constexpr bool is_iec559 = true;
1086 static constexpr bool is_bounded = true;
1087 static constexpr bool is_modulo = false;
1088
1089 static constexpr bool traps = false;
1090 static constexpr bool tinyness_before = false;
1092};
1093
1094template <>
1095struct numeric_limits<double> {
1096 static constexpr bool is_specialized = true;
1097
1098 static constexpr auto min() noexcept
1099 {
1100 return DBL_MIN;
1101 }
1102 static constexpr auto max() noexcept
1103 {
1104 return DBL_MAX;
1105 }
1106 static constexpr auto lowest() noexcept
1107 {
1108 return -DBL_MAX;
1109 }
1110
1111 static constexpr int digits = DBL_MANT_DIG;
1112 static constexpr int digits10 = DBL_DIG;
1113 static constexpr int max_digits10 = DECIMAL_DIG;
1114
1115 static constexpr bool is_signed = true;
1116 static constexpr bool is_integer = false;
1117 static constexpr bool is_exact = false;
1118 static constexpr int radix = FLT_RADIX;
1119 static constexpr auto epsilon() noexcept -> double
1120 {
1121 return DBL_EPSILON;
1122 }
1123 static constexpr auto round_error() noexcept -> double
1124 {
1125 return 0.5;
1126 }
1127
1128 static constexpr int min_exponent = DBL_MIN_EXP;
1129 static constexpr int min_exponent10 = DBL_MIN_10_EXP;
1130 static constexpr int max_exponent = DBL_MAX_EXP;
1131 static constexpr int max_exponent10 = DBL_MAX_10_EXP;
1132
1133 static constexpr bool has_infinity = true;
1134 static constexpr bool has_quiet_NaN = true;
1135 static constexpr bool has_signaling_NaN = true;
1136 static constexpr bool has_denorm_loss = false;
1138
1139 static constexpr auto infinity() noexcept -> double
1140 {
1141 return TETL_BUILTIN_HUGE_VAL;
1142 }
1143 static constexpr auto quiet_NaN() noexcept -> double
1144 {
1145 return TETL_BUILTIN_NAN("");
1146 }
1147 static constexpr auto signaling_NaN() noexcept -> double
1148 {
1149 return TETL_BUILTIN_NANS("");
1150 }
1151 static constexpr auto denorm_min() noexcept -> double
1152 {
1153 return 0.0;
1154 }
1155
1156 static constexpr bool is_iec559 = true;
1157 static constexpr bool is_bounded = true;
1158 static constexpr bool is_modulo = false;
1159
1160 static constexpr bool traps = false;
1161 static constexpr bool tinyness_before = false;
1163};
1164
1165template <>
1166struct numeric_limits<long double> {
1167 static constexpr bool is_specialized = true;
1168
1169 static constexpr auto min() noexcept
1170 {
1171 return LDBL_MIN;
1172 }
1173 static constexpr auto max() noexcept
1174 {
1175 return LDBL_MAX;
1176 }
1177 static constexpr auto lowest() noexcept
1178 {
1179 return -LDBL_MAX;
1180 }
1181
1182 static constexpr int digits = LDBL_MANT_DIG;
1183 static constexpr int digits10 = LDBL_DIG;
1184 static constexpr int max_digits10 = 2 + LDBL_MANT_DIG * 301L / 1000;
1185
1186 static constexpr bool is_signed = true;
1187 static constexpr bool is_integer = false;
1188 static constexpr bool is_exact = false;
1189 static constexpr int radix = FLT_RADIX;
1190 static constexpr auto epsilon() noexcept -> long double
1191 {
1192 return LDBL_EPSILON;
1193 }
1194 static constexpr auto round_error() noexcept -> long double
1195 {
1196 return 0.5L;
1197 }
1198
1199 static constexpr int min_exponent = LDBL_MIN_EXP;
1200 static constexpr int min_exponent10 = LDBL_MIN_10_EXP;
1201 static constexpr int max_exponent = LDBL_MAX_EXP;
1202 static constexpr int max_exponent10 = LDBL_MAX_10_EXP;
1203
1204 static constexpr bool has_infinity = true;
1205 static constexpr bool has_quiet_NaN = true;
1206 static constexpr bool has_signaling_NaN = true;
1207 static constexpr bool has_denorm_loss = false;
1209
1210 static constexpr auto infinity() noexcept -> long double
1211 {
1212 return TETL_BUILTIN_HUGE_VALL;
1213 }
1214 static constexpr auto quiet_NaN() noexcept -> long double
1215 {
1216 return TETL_BUILTIN_NANL("");
1217 }
1218 static constexpr auto signaling_NaN() noexcept -> long double
1219 {
1220 return TETL_BUILTIN_NANSL("");
1221 }
1222 static constexpr auto denorm_min() noexcept -> long double
1223 {
1224 return 0.0L;
1225 }
1226
1227 static constexpr bool is_iec559 = true;
1228 static constexpr bool is_bounded = true;
1229 static constexpr bool is_modulo = false;
1230
1231 static constexpr bool traps = false;
1232 static constexpr bool tinyness_before = false;
1234};
1235
1236template <typename T>
1237struct numeric_limits<T const> : numeric_limits<T> { };
1238template <typename T>
1239struct numeric_limits<T volatile> : numeric_limits<T> { };
1240template <typename T>
1241struct numeric_limits<T const volatile> : numeric_limits<T> { };
1242
1243} // namespace etl
1244
1245#endif // TETL_LIMITS_NUMERIC_LIMITS_HPP
Definition adjacent_find.hpp:9
float_round_style
Definition float_round_style.hpp:9
@ round_toward_zero
Definition float_round_style.hpp:11
float_denorm_style
Definition float_denorm_style.hpp:9
@ denorm_present
Definition float_denorm_style.hpp:12
@ denorm_absent
Definition float_denorm_style.hpp:11
static constexpr auto round_error() noexcept -> bool
Definition numeric_limits.hpp:117
static constexpr int max_digits10
Definition numeric_limits.hpp:107
static constexpr auto signaling_NaN() noexcept -> bool
Definition numeric_limits.hpp:141
static constexpr bool traps
Definition numeric_limits.hpp:154
static constexpr auto denorm_min() noexcept -> bool
Definition numeric_limits.hpp:145
static constexpr auto quiet_NaN() noexcept -> bool
Definition numeric_limits.hpp:137
static constexpr auto epsilon() noexcept -> bool
Definition numeric_limits.hpp:113
static constexpr int radix
Definition numeric_limits.hpp:112
static constexpr bool is_iec559
Definition numeric_limits.hpp:150
static constexpr bool is_specialized
Definition numeric_limits.hpp:90
static constexpr float_denorm_style has_denorm
Definition numeric_limits.hpp:131
static constexpr auto lowest() noexcept -> bool
Definition numeric_limits.hpp:100
static constexpr int max_exponent
Definition numeric_limits.hpp:124
static constexpr int digits
Definition numeric_limits.hpp:105
static constexpr auto infinity() noexcept -> bool
Definition numeric_limits.hpp:133
static constexpr bool is_modulo
Definition numeric_limits.hpp:152
static constexpr bool has_denorm_loss
Definition numeric_limits.hpp:130
static constexpr bool has_infinity
Definition numeric_limits.hpp:127
static constexpr int digits10
Definition numeric_limits.hpp:106
static constexpr auto min() noexcept -> bool
Definition numeric_limits.hpp:92
static constexpr int max_exponent10
Definition numeric_limits.hpp:125
static constexpr int min_exponent
Definition numeric_limits.hpp:122
static constexpr bool is_integer
Definition numeric_limits.hpp:110
static constexpr bool is_exact
Definition numeric_limits.hpp:111
static constexpr bool is_signed
Definition numeric_limits.hpp:109
static constexpr bool is_bounded
Definition numeric_limits.hpp:151
static constexpr int min_exponent10
Definition numeric_limits.hpp:123
static constexpr bool tinyness_before
Definition numeric_limits.hpp:155
static constexpr bool has_signaling_NaN
Definition numeric_limits.hpp:129
static constexpr bool has_quiet_NaN
Definition numeric_limits.hpp:128
static constexpr float_round_style round_style
Definition numeric_limits.hpp:156
static constexpr auto max() noexcept -> bool
Definition numeric_limits.hpp:96
static constexpr int max_digits10
Definition numeric_limits.hpp:404
static constexpr bool traps
Definition numeric_limits.hpp:438
static constexpr auto round_error() noexcept -> char8_t
Definition numeric_limits.hpp:397
static constexpr auto quiet_NaN() noexcept -> char8_t
Definition numeric_limits.hpp:421
static constexpr int radix
Definition numeric_limits.hpp:392
static constexpr auto denorm_min() noexcept -> char8_t
Definition numeric_limits.hpp:429
static constexpr bool is_iec559
Definition numeric_limits.hpp:434
static constexpr bool is_specialized
Definition numeric_limits.hpp:374
static constexpr float_denorm_style has_denorm
Definition numeric_limits.hpp:415
static constexpr auto epsilon() noexcept -> char8_t
Definition numeric_limits.hpp:393
static constexpr int max_exponent
Definition numeric_limits.hpp:408
static constexpr int digits
Definition numeric_limits.hpp:402
static constexpr auto max() noexcept -> char8_t
Definition numeric_limits.hpp:380
static constexpr bool is_modulo
Definition numeric_limits.hpp:436
static constexpr bool has_denorm_loss
Definition numeric_limits.hpp:414
static constexpr bool has_infinity
Definition numeric_limits.hpp:411
static constexpr int digits10
Definition numeric_limits.hpp:403
static constexpr int max_exponent10
Definition numeric_limits.hpp:409
static constexpr auto signaling_NaN() noexcept -> char8_t
Definition numeric_limits.hpp:425
static constexpr int min_exponent
Definition numeric_limits.hpp:406
static constexpr auto lowest() noexcept -> char8_t
Definition numeric_limits.hpp:384
static constexpr auto min() noexcept -> char8_t
Definition numeric_limits.hpp:376
static constexpr bool is_integer
Definition numeric_limits.hpp:390
static constexpr bool is_exact
Definition numeric_limits.hpp:391
static constexpr bool is_signed
Definition numeric_limits.hpp:389
static constexpr bool is_bounded
Definition numeric_limits.hpp:435
static constexpr int min_exponent10
Definition numeric_limits.hpp:407
static constexpr bool tinyness_before
Definition numeric_limits.hpp:439
static constexpr bool has_signaling_NaN
Definition numeric_limits.hpp:413
static constexpr bool has_quiet_NaN
Definition numeric_limits.hpp:412
static constexpr float_round_style round_style
Definition numeric_limits.hpp:440
static constexpr auto infinity() noexcept -> char8_t
Definition numeric_limits.hpp:417
static constexpr int max_digits10
Definition numeric_limits.hpp:191
static constexpr bool traps
Definition numeric_limits.hpp:225
static constexpr auto round_error() noexcept -> char
Definition numeric_limits.hpp:184
static constexpr int radix
Definition numeric_limits.hpp:179
static constexpr bool is_iec559
Definition numeric_limits.hpp:221
static constexpr bool is_specialized
Definition numeric_limits.hpp:161
static constexpr float_denorm_style has_denorm
Definition numeric_limits.hpp:202
static constexpr int max_exponent
Definition numeric_limits.hpp:195
static constexpr auto min() noexcept -> char
Definition numeric_limits.hpp:163
static constexpr int digits
Definition numeric_limits.hpp:189
static constexpr bool is_modulo
Definition numeric_limits.hpp:223
static constexpr auto quiet_NaN() noexcept -> char
Definition numeric_limits.hpp:208
static constexpr auto lowest() noexcept -> char
Definition numeric_limits.hpp:171
static constexpr bool has_denorm_loss
Definition numeric_limits.hpp:201
static constexpr bool has_infinity
Definition numeric_limits.hpp:198
static constexpr int digits10
Definition numeric_limits.hpp:190
static constexpr auto denorm_min() noexcept -> char
Definition numeric_limits.hpp:216
static constexpr auto signaling_NaN() noexcept -> char
Definition numeric_limits.hpp:212
static constexpr int max_exponent10
Definition numeric_limits.hpp:196
static constexpr int min_exponent
Definition numeric_limits.hpp:193
static constexpr auto epsilon() noexcept -> char
Definition numeric_limits.hpp:180
static constexpr auto infinity() noexcept -> char
Definition numeric_limits.hpp:204
static constexpr bool is_integer
Definition numeric_limits.hpp:177
static constexpr bool is_exact
Definition numeric_limits.hpp:178
static constexpr bool is_signed
Definition numeric_limits.hpp:176
static constexpr auto max() noexcept -> char
Definition numeric_limits.hpp:167
static constexpr bool is_bounded
Definition numeric_limits.hpp:222
static constexpr int min_exponent10
Definition numeric_limits.hpp:194
static constexpr bool tinyness_before
Definition numeric_limits.hpp:226
static constexpr bool has_signaling_NaN
Definition numeric_limits.hpp:200
static constexpr bool has_quiet_NaN
Definition numeric_limits.hpp:199
static constexpr float_round_style round_style
Definition numeric_limits.hpp:227
static constexpr auto round_error() noexcept -> double
Definition numeric_limits.hpp:1123
static constexpr int max_digits10
Definition numeric_limits.hpp:1113
static constexpr bool traps
Definition numeric_limits.hpp:1160
static constexpr int radix
Definition numeric_limits.hpp:1118
static constexpr bool is_iec559
Definition numeric_limits.hpp:1156
static constexpr bool is_specialized
Definition numeric_limits.hpp:1096
static constexpr float_denorm_style has_denorm
Definition numeric_limits.hpp:1137
static constexpr int max_exponent
Definition numeric_limits.hpp:1130
static constexpr int digits
Definition numeric_limits.hpp:1111
static constexpr bool is_modulo
Definition numeric_limits.hpp:1158
static constexpr auto denorm_min() noexcept -> double
Definition numeric_limits.hpp:1151
static constexpr auto signaling_NaN() noexcept -> double
Definition numeric_limits.hpp:1147
static constexpr auto infinity() noexcept -> double
Definition numeric_limits.hpp:1139
static constexpr bool has_denorm_loss
Definition numeric_limits.hpp:1136
static constexpr bool has_infinity
Definition numeric_limits.hpp:1133
static constexpr auto max() noexcept
Definition numeric_limits.hpp:1102
static constexpr int digits10
Definition numeric_limits.hpp:1112
static constexpr int max_exponent10
Definition numeric_limits.hpp:1131
static constexpr int min_exponent
Definition numeric_limits.hpp:1128
static constexpr auto lowest() noexcept
Definition numeric_limits.hpp:1106
static constexpr auto quiet_NaN() noexcept -> double
Definition numeric_limits.hpp:1143
static constexpr auto epsilon() noexcept -> double
Definition numeric_limits.hpp:1119
static constexpr bool is_integer
Definition numeric_limits.hpp:1116
static constexpr bool is_exact
Definition numeric_limits.hpp:1117
static constexpr bool is_signed
Definition numeric_limits.hpp:1115
static constexpr bool is_bounded
Definition numeric_limits.hpp:1157
static constexpr int min_exponent10
Definition numeric_limits.hpp:1129
static constexpr bool tinyness_before
Definition numeric_limits.hpp:1161
static constexpr bool has_signaling_NaN
Definition numeric_limits.hpp:1135
static constexpr bool has_quiet_NaN
Definition numeric_limits.hpp:1134
static constexpr float_round_style round_style
Definition numeric_limits.hpp:1162
static constexpr auto min() noexcept
Definition numeric_limits.hpp:1098
static constexpr int max_digits10
Definition numeric_limits.hpp:1042
static constexpr auto infinity() noexcept -> float
Definition numeric_limits.hpp:1068
static constexpr bool traps
Definition numeric_limits.hpp:1089
static constexpr int radix
Definition numeric_limits.hpp:1047
static constexpr bool is_iec559
Definition numeric_limits.hpp:1085
static constexpr bool is_specialized
Definition numeric_limits.hpp:1025
static constexpr float_denorm_style has_denorm
Definition numeric_limits.hpp:1065
static constexpr auto quiet_NaN() noexcept -> float
Definition numeric_limits.hpp:1072
static constexpr int max_exponent
Definition numeric_limits.hpp:1059
static constexpr int digits
Definition numeric_limits.hpp:1040
static constexpr bool is_modulo
Definition numeric_limits.hpp:1087
static constexpr bool has_denorm_loss
Definition numeric_limits.hpp:1066
static constexpr bool has_infinity
Definition numeric_limits.hpp:1062
static constexpr auto max() noexcept
Definition numeric_limits.hpp:1031
static constexpr int digits10
Definition numeric_limits.hpp:1041
static constexpr auto denorm_min() noexcept -> float
Definition numeric_limits.hpp:1080
static constexpr int max_exponent10
Definition numeric_limits.hpp:1060
static constexpr int min_exponent
Definition numeric_limits.hpp:1057
static constexpr auto lowest() noexcept
Definition numeric_limits.hpp:1035
static constexpr auto epsilon() noexcept -> float
Definition numeric_limits.hpp:1048
static constexpr auto round_error() noexcept -> float
Definition numeric_limits.hpp:1052
static constexpr bool is_integer
Definition numeric_limits.hpp:1045
static constexpr bool is_exact
Definition numeric_limits.hpp:1046
static constexpr bool is_signed
Definition numeric_limits.hpp:1044
static constexpr bool is_bounded
Definition numeric_limits.hpp:1086
static constexpr int min_exponent10
Definition numeric_limits.hpp:1058
static constexpr bool tinyness_before
Definition numeric_limits.hpp:1090
static constexpr bool has_signaling_NaN
Definition numeric_limits.hpp:1064
static constexpr bool has_quiet_NaN
Definition numeric_limits.hpp:1063
static constexpr float_round_style round_style
Definition numeric_limits.hpp:1091
static constexpr auto signaling_NaN() noexcept -> float
Definition numeric_limits.hpp:1076
static constexpr auto min() noexcept
Definition numeric_limits.hpp:1027
static constexpr auto min() noexcept -> int
Definition numeric_limits.hpp:594
static constexpr int max_digits10
Definition numeric_limits.hpp:618
static constexpr bool traps
Definition numeric_limits.hpp:652
static constexpr auto epsilon() noexcept -> int
Definition numeric_limits.hpp:607
static constexpr auto infinity() noexcept -> int
Definition numeric_limits.hpp:631
static constexpr int radix
Definition numeric_limits.hpp:606
static constexpr bool is_iec559
Definition numeric_limits.hpp:648
static constexpr auto lowest() noexcept -> int
Definition numeric_limits.hpp:590
static constexpr bool is_specialized
Definition numeric_limits.hpp:588
static constexpr float_denorm_style has_denorm
Definition numeric_limits.hpp:629
static constexpr int max_exponent
Definition numeric_limits.hpp:622
static constexpr int digits
Definition numeric_limits.hpp:616
static constexpr bool is_modulo
Definition numeric_limits.hpp:650
static constexpr bool has_denorm_loss
Definition numeric_limits.hpp:628
static constexpr bool has_infinity
Definition numeric_limits.hpp:625
static constexpr int digits10
Definition numeric_limits.hpp:617
static constexpr auto denorm_min() noexcept -> int
Definition numeric_limits.hpp:643
static constexpr int max_exponent10
Definition numeric_limits.hpp:623
static constexpr int min_exponent
Definition numeric_limits.hpp:620
static constexpr auto round_error() noexcept -> int
Definition numeric_limits.hpp:611
static constexpr auto max() noexcept -> int
Definition numeric_limits.hpp:598
static constexpr bool is_integer
Definition numeric_limits.hpp:604
static constexpr bool is_exact
Definition numeric_limits.hpp:605
static constexpr auto signaling_NaN() noexcept -> int
Definition numeric_limits.hpp:639
static constexpr bool is_signed
Definition numeric_limits.hpp:603
static constexpr bool is_bounded
Definition numeric_limits.hpp:649
static constexpr int min_exponent10
Definition numeric_limits.hpp:621
static constexpr bool tinyness_before
Definition numeric_limits.hpp:653
static constexpr bool has_signaling_NaN
Definition numeric_limits.hpp:627
static constexpr bool has_quiet_NaN
Definition numeric_limits.hpp:626
static constexpr float_round_style round_style
Definition numeric_limits.hpp:654
static constexpr auto quiet_NaN() noexcept -> int
Definition numeric_limits.hpp:635
static constexpr auto max() noexcept -> long
Definition numeric_limits.hpp:740
static constexpr int max_digits10
Definition numeric_limits.hpp:760
static constexpr bool traps
Definition numeric_limits.hpp:794
static constexpr int radix
Definition numeric_limits.hpp:748
static constexpr auto signaling_NaN() noexcept -> long
Definition numeric_limits.hpp:781
static constexpr bool is_iec559
Definition numeric_limits.hpp:790
static constexpr bool is_specialized
Definition numeric_limits.hpp:730
static constexpr float_denorm_style has_denorm
Definition numeric_limits.hpp:770
static constexpr int max_exponent
Definition numeric_limits.hpp:764
static constexpr int digits
Definition numeric_limits.hpp:758
static constexpr bool is_modulo
Definition numeric_limits.hpp:792
static constexpr bool has_denorm_loss
Definition numeric_limits.hpp:771
static constexpr bool has_infinity
Definition numeric_limits.hpp:767
static constexpr int digits10
Definition numeric_limits.hpp:759
static constexpr auto lowest() noexcept -> long
Definition numeric_limits.hpp:732
static constexpr int max_exponent10
Definition numeric_limits.hpp:765
static constexpr int min_exponent
Definition numeric_limits.hpp:762
static constexpr auto min() noexcept -> long
Definition numeric_limits.hpp:736
static constexpr auto infinity() noexcept -> long
Definition numeric_limits.hpp:773
static constexpr auto denorm_min() noexcept -> long
Definition numeric_limits.hpp:785
static constexpr bool is_integer
Definition numeric_limits.hpp:746
static constexpr bool is_exact
Definition numeric_limits.hpp:747
static constexpr auto epsilon() noexcept -> long
Definition numeric_limits.hpp:749
static constexpr bool is_signed
Definition numeric_limits.hpp:745
static constexpr auto quiet_NaN() noexcept -> long
Definition numeric_limits.hpp:777
static constexpr bool is_bounded
Definition numeric_limits.hpp:791
static constexpr int min_exponent10
Definition numeric_limits.hpp:763
static constexpr bool tinyness_before
Definition numeric_limits.hpp:795
static constexpr bool has_signaling_NaN
Definition numeric_limits.hpp:769
static constexpr bool has_quiet_NaN
Definition numeric_limits.hpp:768
static constexpr float_round_style round_style
Definition numeric_limits.hpp:796
static constexpr auto round_error() noexcept -> long
Definition numeric_limits.hpp:753
static constexpr int max_digits10
Definition numeric_limits.hpp:1184
static constexpr bool traps
Definition numeric_limits.hpp:1231
static constexpr auto round_error() noexcept -> long double
Definition numeric_limits.hpp:1194
static constexpr int radix
Definition numeric_limits.hpp:1189
static constexpr bool is_iec559
Definition numeric_limits.hpp:1227
static constexpr bool is_specialized
Definition numeric_limits.hpp:1167
static constexpr float_denorm_style has_denorm
Definition numeric_limits.hpp:1208
static constexpr int max_exponent
Definition numeric_limits.hpp:1201
static constexpr int digits
Definition numeric_limits.hpp:1182
static constexpr bool is_modulo
Definition numeric_limits.hpp:1229
static constexpr bool has_denorm_loss
Definition numeric_limits.hpp:1207
static constexpr bool has_infinity
Definition numeric_limits.hpp:1204
static constexpr auto max() noexcept
Definition numeric_limits.hpp:1173
static constexpr int digits10
Definition numeric_limits.hpp:1183
static constexpr int max_exponent10
Definition numeric_limits.hpp:1202
static constexpr int min_exponent
Definition numeric_limits.hpp:1199
static constexpr auto quiet_NaN() noexcept -> long double
Definition numeric_limits.hpp:1214
static constexpr auto lowest() noexcept
Definition numeric_limits.hpp:1177
static constexpr auto denorm_min() noexcept -> long double
Definition numeric_limits.hpp:1222
static constexpr auto signaling_NaN() noexcept -> long double
Definition numeric_limits.hpp:1218
static constexpr bool is_integer
Definition numeric_limits.hpp:1187
static constexpr bool is_exact
Definition numeric_limits.hpp:1188
static constexpr bool is_signed
Definition numeric_limits.hpp:1186
static constexpr bool is_bounded
Definition numeric_limits.hpp:1228
static constexpr int min_exponent10
Definition numeric_limits.hpp:1200
static constexpr bool tinyness_before
Definition numeric_limits.hpp:1232
static constexpr bool has_signaling_NaN
Definition numeric_limits.hpp:1206
static constexpr bool has_quiet_NaN
Definition numeric_limits.hpp:1205
static constexpr float_round_style round_style
Definition numeric_limits.hpp:1233
static constexpr auto epsilon() noexcept -> long double
Definition numeric_limits.hpp:1190
static constexpr auto infinity() noexcept -> long double
Definition numeric_limits.hpp:1210
static constexpr auto min() noexcept
Definition numeric_limits.hpp:1169
static constexpr int max_digits10
Definition numeric_limits.hpp:912
static constexpr auto signaling_NaN() noexcept -> long long
Definition numeric_limits.hpp:933
static constexpr bool traps
Definition numeric_limits.hpp:946
static constexpr auto lowest() noexcept -> long long
Definition numeric_limits.hpp:874
static constexpr int radix
Definition numeric_limits.hpp:900
static constexpr bool is_iec559
Definition numeric_limits.hpp:942
static constexpr bool is_specialized
Definition numeric_limits.hpp:872
static constexpr float_denorm_style has_denorm
Definition numeric_limits.hpp:922
static constexpr auto max() noexcept -> long long
Definition numeric_limits.hpp:888
static constexpr int max_exponent
Definition numeric_limits.hpp:916
static constexpr int digits
Definition numeric_limits.hpp:910
static constexpr bool is_modulo
Definition numeric_limits.hpp:944
static constexpr bool has_denorm_loss
Definition numeric_limits.hpp:923
static constexpr bool has_infinity
Definition numeric_limits.hpp:919
static constexpr int digits10
Definition numeric_limits.hpp:911
static constexpr int max_exponent10
Definition numeric_limits.hpp:917
static constexpr int min_exponent
Definition numeric_limits.hpp:914
static constexpr auto denorm_min() noexcept -> long long
Definition numeric_limits.hpp:937
static constexpr auto infinity() noexcept -> long long
Definition numeric_limits.hpp:925
static constexpr auto quiet_NaN() noexcept -> long long
Definition numeric_limits.hpp:929
static constexpr auto round_error() noexcept -> long long
Definition numeric_limits.hpp:905
static constexpr bool is_integer
Definition numeric_limits.hpp:898
static constexpr bool is_exact
Definition numeric_limits.hpp:899
static constexpr auto min() noexcept -> long long
Definition numeric_limits.hpp:883
static constexpr auto epsilon() noexcept -> long long
Definition numeric_limits.hpp:901
static constexpr bool is_signed
Definition numeric_limits.hpp:897
static constexpr bool is_bounded
Definition numeric_limits.hpp:943
static constexpr int min_exponent10
Definition numeric_limits.hpp:915
static constexpr bool tinyness_before
Definition numeric_limits.hpp:947
static constexpr bool has_signaling_NaN
Definition numeric_limits.hpp:921
static constexpr bool has_quiet_NaN
Definition numeric_limits.hpp:920
static constexpr float_round_style round_style
Definition numeric_limits.hpp:948
static constexpr auto min() noexcept -> short
Definition numeric_limits.hpp:451
static constexpr int max_digits10
Definition numeric_limits.hpp:475
static constexpr bool traps
Definition numeric_limits.hpp:509
static constexpr int radix
Definition numeric_limits.hpp:463
static constexpr bool is_iec559
Definition numeric_limits.hpp:505
static constexpr bool is_specialized
Definition numeric_limits.hpp:445
static constexpr float_denorm_style has_denorm
Definition numeric_limits.hpp:486
static constexpr auto infinity() noexcept -> short
Definition numeric_limits.hpp:488
static constexpr int max_exponent
Definition numeric_limits.hpp:479
static constexpr int digits
Definition numeric_limits.hpp:473
static constexpr bool is_modulo
Definition numeric_limits.hpp:507
static constexpr bool has_denorm_loss
Definition numeric_limits.hpp:485
static constexpr bool has_infinity
Definition numeric_limits.hpp:482
static constexpr int digits10
Definition numeric_limits.hpp:474
static constexpr int max_exponent10
Definition numeric_limits.hpp:480
static constexpr auto epsilon() noexcept -> short
Definition numeric_limits.hpp:464
static constexpr int min_exponent
Definition numeric_limits.hpp:477
static constexpr auto signaling_NaN() noexcept -> short
Definition numeric_limits.hpp:496
static constexpr auto quiet_NaN() noexcept -> short
Definition numeric_limits.hpp:492
static constexpr auto lowest() noexcept -> short
Definition numeric_limits.hpp:447
static constexpr bool is_integer
Definition numeric_limits.hpp:461
static constexpr bool is_exact
Definition numeric_limits.hpp:462
static constexpr auto max() noexcept -> short
Definition numeric_limits.hpp:455
static constexpr auto denorm_min() noexcept -> short
Definition numeric_limits.hpp:500
static constexpr bool is_signed
Definition numeric_limits.hpp:460
static constexpr bool is_bounded
Definition numeric_limits.hpp:506
static constexpr auto round_error() noexcept -> short
Definition numeric_limits.hpp:468
static constexpr int min_exponent10
Definition numeric_limits.hpp:478
static constexpr bool tinyness_before
Definition numeric_limits.hpp:510
static constexpr bool has_signaling_NaN
Definition numeric_limits.hpp:484
static constexpr bool has_quiet_NaN
Definition numeric_limits.hpp:483
static constexpr float_round_style round_style
Definition numeric_limits.hpp:511
static constexpr auto signaling_NaN() noexcept -> signed char
Definition numeric_limits.hpp:283
static constexpr auto max() noexcept -> signed char
Definition numeric_limits.hpp:238
static constexpr auto epsilon() noexcept -> signed char
Definition numeric_limits.hpp:251
static constexpr int max_digits10
Definition numeric_limits.hpp:262
static constexpr bool traps
Definition numeric_limits.hpp:296
static constexpr int radix
Definition numeric_limits.hpp:250
static constexpr bool is_iec559
Definition numeric_limits.hpp:292
static constexpr auto denorm_min() noexcept -> signed char
Definition numeric_limits.hpp:287
static constexpr bool is_specialized
Definition numeric_limits.hpp:232
static constexpr auto quiet_NaN() noexcept -> signed char
Definition numeric_limits.hpp:279
static constexpr float_denorm_style has_denorm
Definition numeric_limits.hpp:273
static constexpr auto lowest() noexcept -> signed char
Definition numeric_limits.hpp:242
static constexpr int max_exponent
Definition numeric_limits.hpp:266
static constexpr int digits
Definition numeric_limits.hpp:260
static constexpr auto min() noexcept -> signed char
Definition numeric_limits.hpp:234
static constexpr bool is_modulo
Definition numeric_limits.hpp:294
static constexpr bool has_denorm_loss
Definition numeric_limits.hpp:272
static constexpr bool has_infinity
Definition numeric_limits.hpp:269
static constexpr int digits10
Definition numeric_limits.hpp:261
static constexpr auto round_error() noexcept -> signed char
Definition numeric_limits.hpp:255
static constexpr int max_exponent10
Definition numeric_limits.hpp:267
static constexpr int min_exponent
Definition numeric_limits.hpp:264
static constexpr bool is_integer
Definition numeric_limits.hpp:248
static constexpr bool is_exact
Definition numeric_limits.hpp:249
static constexpr bool is_signed
Definition numeric_limits.hpp:247
static constexpr bool is_bounded
Definition numeric_limits.hpp:293
static constexpr int min_exponent10
Definition numeric_limits.hpp:265
static constexpr bool tinyness_before
Definition numeric_limits.hpp:297
static constexpr bool has_signaling_NaN
Definition numeric_limits.hpp:271
static constexpr bool has_quiet_NaN
Definition numeric_limits.hpp:270
static constexpr float_round_style round_style
Definition numeric_limits.hpp:298
static constexpr auto infinity() noexcept -> signed char
Definition numeric_limits.hpp:275
static constexpr auto max() noexcept -> unsigned char
Definition numeric_limits.hpp:313
static constexpr int max_digits10
Definition numeric_limits.hpp:333
static constexpr auto lowest() noexcept -> unsigned char
Definition numeric_limits.hpp:305
static constexpr bool traps
Definition numeric_limits.hpp:367
static constexpr auto denorm_min() noexcept -> unsigned char
Definition numeric_limits.hpp:358
static constexpr int radix
Definition numeric_limits.hpp:321
static constexpr bool is_iec559
Definition numeric_limits.hpp:363
static constexpr bool is_specialized
Definition numeric_limits.hpp:303
static constexpr float_denorm_style has_denorm
Definition numeric_limits.hpp:344
static constexpr auto min() noexcept -> unsigned char
Definition numeric_limits.hpp:309
static constexpr int max_exponent
Definition numeric_limits.hpp:337
static constexpr int digits
Definition numeric_limits.hpp:331
static constexpr bool is_modulo
Definition numeric_limits.hpp:365
static constexpr bool has_denorm_loss
Definition numeric_limits.hpp:343
static constexpr bool has_infinity
Definition numeric_limits.hpp:340
static constexpr int digits10
Definition numeric_limits.hpp:332
static constexpr auto epsilon() noexcept -> unsigned char
Definition numeric_limits.hpp:322
static constexpr int max_exponent10
Definition numeric_limits.hpp:338
static constexpr int min_exponent
Definition numeric_limits.hpp:335
static constexpr auto signaling_NaN() noexcept -> unsigned char
Definition numeric_limits.hpp:354
static constexpr auto quiet_NaN() noexcept -> unsigned char
Definition numeric_limits.hpp:350
static constexpr auto round_error() noexcept -> unsigned char
Definition numeric_limits.hpp:326
static constexpr auto infinity() noexcept -> unsigned char
Definition numeric_limits.hpp:346
static constexpr bool is_integer
Definition numeric_limits.hpp:319
static constexpr bool is_exact
Definition numeric_limits.hpp:320
static constexpr bool is_signed
Definition numeric_limits.hpp:318
static constexpr bool is_bounded
Definition numeric_limits.hpp:364
static constexpr int min_exponent10
Definition numeric_limits.hpp:336
static constexpr bool tinyness_before
Definition numeric_limits.hpp:368
static constexpr bool has_signaling_NaN
Definition numeric_limits.hpp:342
static constexpr bool has_quiet_NaN
Definition numeric_limits.hpp:341
static constexpr float_round_style round_style
Definition numeric_limits.hpp:369
static constexpr int max_digits10
Definition numeric_limits.hpp:689
static constexpr bool traps
Definition numeric_limits.hpp:723
static constexpr auto denorm_min() noexcept -> unsigned int
Definition numeric_limits.hpp:714
static constexpr int radix
Definition numeric_limits.hpp:677
static constexpr bool is_iec559
Definition numeric_limits.hpp:719
static constexpr auto infinity() noexcept -> unsigned int
Definition numeric_limits.hpp:702
static constexpr auto round_error() noexcept -> unsigned int
Definition numeric_limits.hpp:682
static constexpr bool is_specialized
Definition numeric_limits.hpp:659
static constexpr float_denorm_style has_denorm
Definition numeric_limits.hpp:699
static constexpr int max_exponent
Definition numeric_limits.hpp:693
static constexpr int digits
Definition numeric_limits.hpp:687
static constexpr bool is_modulo
Definition numeric_limits.hpp:721
static constexpr bool has_denorm_loss
Definition numeric_limits.hpp:700
static constexpr bool has_infinity
Definition numeric_limits.hpp:696
static constexpr int digits10
Definition numeric_limits.hpp:688
static constexpr auto lowest() noexcept -> unsigned int
Definition numeric_limits.hpp:661
static constexpr int max_exponent10
Definition numeric_limits.hpp:694
static constexpr int min_exponent
Definition numeric_limits.hpp:691
static constexpr auto min() noexcept -> unsigned int
Definition numeric_limits.hpp:665
static constexpr auto epsilon() noexcept -> unsigned int
Definition numeric_limits.hpp:678
static constexpr auto quiet_NaN() noexcept -> unsigned int
Definition numeric_limits.hpp:706
static constexpr bool is_integer
Definition numeric_limits.hpp:675
static constexpr bool is_exact
Definition numeric_limits.hpp:676
static constexpr bool is_signed
Definition numeric_limits.hpp:674
static constexpr bool is_bounded
Definition numeric_limits.hpp:720
static constexpr int min_exponent10
Definition numeric_limits.hpp:692
static constexpr bool tinyness_before
Definition numeric_limits.hpp:724
static constexpr bool has_signaling_NaN
Definition numeric_limits.hpp:698
static constexpr bool has_quiet_NaN
Definition numeric_limits.hpp:697
static constexpr float_round_style round_style
Definition numeric_limits.hpp:725
static constexpr auto signaling_NaN() noexcept -> unsigned int
Definition numeric_limits.hpp:710
static constexpr auto max() noexcept -> unsigned int
Definition numeric_limits.hpp:669
static constexpr auto epsilon() noexcept -> unsigned long
Definition numeric_limits.hpp:820
static constexpr int max_digits10
Definition numeric_limits.hpp:831
static constexpr bool traps
Definition numeric_limits.hpp:865
static constexpr auto infinity() noexcept -> unsigned long
Definition numeric_limits.hpp:844
static constexpr int radix
Definition numeric_limits.hpp:819
static constexpr auto lowest() noexcept -> unsigned long
Definition numeric_limits.hpp:803
static constexpr bool is_iec559
Definition numeric_limits.hpp:861
static constexpr bool is_specialized
Definition numeric_limits.hpp:801
static constexpr float_denorm_style has_denorm
Definition numeric_limits.hpp:841
static constexpr int max_exponent
Definition numeric_limits.hpp:835
static constexpr int digits
Definition numeric_limits.hpp:829
static constexpr bool is_modulo
Definition numeric_limits.hpp:863
static constexpr bool has_denorm_loss
Definition numeric_limits.hpp:842
static constexpr bool has_infinity
Definition numeric_limits.hpp:838
static constexpr int digits10
Definition numeric_limits.hpp:830
static constexpr auto quiet_NaN() noexcept -> unsigned long
Definition numeric_limits.hpp:848
static constexpr int max_exponent10
Definition numeric_limits.hpp:836
static constexpr int min_exponent
Definition numeric_limits.hpp:833
static constexpr auto round_error() noexcept -> unsigned long
Definition numeric_limits.hpp:824
static constexpr bool is_integer
Definition numeric_limits.hpp:817
static constexpr bool is_exact
Definition numeric_limits.hpp:818
static constexpr auto max() noexcept -> unsigned long
Definition numeric_limits.hpp:811
static constexpr bool is_signed
Definition numeric_limits.hpp:816
static constexpr bool is_bounded
Definition numeric_limits.hpp:862
static constexpr int min_exponent10
Definition numeric_limits.hpp:834
static constexpr auto denorm_min() noexcept -> unsigned long
Definition numeric_limits.hpp:856
static constexpr bool tinyness_before
Definition numeric_limits.hpp:866
static constexpr bool has_signaling_NaN
Definition numeric_limits.hpp:840
static constexpr bool has_quiet_NaN
Definition numeric_limits.hpp:839
static constexpr float_round_style round_style
Definition numeric_limits.hpp:867
static constexpr auto signaling_NaN() noexcept -> unsigned long
Definition numeric_limits.hpp:852
static constexpr auto min() noexcept -> unsigned long
Definition numeric_limits.hpp:807
static constexpr int max_digits10
Definition numeric_limits.hpp:984
static constexpr auto max() noexcept -> unsigned long long
Definition numeric_limits.hpp:963
static constexpr bool traps
Definition numeric_limits.hpp:1018
static constexpr int radix
Definition numeric_limits.hpp:971
static constexpr bool is_iec559
Definition numeric_limits.hpp:1014
static constexpr bool is_specialized
Definition numeric_limits.hpp:953
static constexpr float_denorm_style has_denorm
Definition numeric_limits.hpp:994
static constexpr int max_exponent
Definition numeric_limits.hpp:988
static constexpr int digits
Definition numeric_limits.hpp:982
static constexpr auto epsilon() noexcept -> unsigned long long
Definition numeric_limits.hpp:972
static constexpr bool is_modulo
Definition numeric_limits.hpp:1016
static constexpr auto infinity() noexcept -> unsigned long long
Definition numeric_limits.hpp:997
static constexpr bool has_denorm_loss
Definition numeric_limits.hpp:995
static constexpr bool has_infinity
Definition numeric_limits.hpp:991
static constexpr int digits10
Definition numeric_limits.hpp:983
static constexpr auto quiet_NaN() noexcept -> unsigned long long
Definition numeric_limits.hpp:1001
static constexpr int max_exponent10
Definition numeric_limits.hpp:989
static constexpr int min_exponent
Definition numeric_limits.hpp:986
static constexpr auto denorm_min() noexcept -> unsigned long long
Definition numeric_limits.hpp:1009
static constexpr auto min() noexcept -> unsigned long long
Definition numeric_limits.hpp:959
static constexpr bool is_integer
Definition numeric_limits.hpp:969
static constexpr bool is_exact
Definition numeric_limits.hpp:970
static constexpr bool is_signed
Definition numeric_limits.hpp:968
static constexpr bool is_bounded
Definition numeric_limits.hpp:1015
static constexpr auto lowest() noexcept -> unsigned long long
Definition numeric_limits.hpp:955
static constexpr auto round_error() noexcept -> unsigned long long
Definition numeric_limits.hpp:976
static constexpr int min_exponent10
Definition numeric_limits.hpp:987
static constexpr bool tinyness_before
Definition numeric_limits.hpp:1019
static constexpr bool has_signaling_NaN
Definition numeric_limits.hpp:993
static constexpr bool has_quiet_NaN
Definition numeric_limits.hpp:992
static constexpr float_round_style round_style
Definition numeric_limits.hpp:1020
static constexpr auto signaling_NaN() noexcept -> unsigned long long
Definition numeric_limits.hpp:1005
static constexpr auto round_error() noexcept -> unsigned short
Definition numeric_limits.hpp:539
static constexpr int max_digits10
Definition numeric_limits.hpp:547
static constexpr bool traps
Definition numeric_limits.hpp:581
static constexpr auto denorm_min() noexcept -> unsigned short
Definition numeric_limits.hpp:572
static constexpr auto epsilon() noexcept -> unsigned short
Definition numeric_limits.hpp:535
static constexpr auto min() noexcept -> unsigned short
Definition numeric_limits.hpp:522
static constexpr int radix
Definition numeric_limits.hpp:534
static constexpr bool is_iec559
Definition numeric_limits.hpp:577
static constexpr bool is_specialized
Definition numeric_limits.hpp:516
static constexpr float_denorm_style has_denorm
Definition numeric_limits.hpp:558
static constexpr int max_exponent
Definition numeric_limits.hpp:551
static constexpr int digits
Definition numeric_limits.hpp:545
static constexpr bool is_modulo
Definition numeric_limits.hpp:579
static constexpr auto max() noexcept -> unsigned short
Definition numeric_limits.hpp:526
static constexpr bool has_denorm_loss
Definition numeric_limits.hpp:557
static constexpr bool has_infinity
Definition numeric_limits.hpp:554
static constexpr int digits10
Definition numeric_limits.hpp:546
static constexpr int max_exponent10
Definition numeric_limits.hpp:552
static constexpr int min_exponent
Definition numeric_limits.hpp:549
static constexpr auto lowest() noexcept -> unsigned short
Definition numeric_limits.hpp:518
static constexpr auto infinity() noexcept -> unsigned short
Definition numeric_limits.hpp:560
static constexpr bool is_integer
Definition numeric_limits.hpp:532
static constexpr bool is_exact
Definition numeric_limits.hpp:533
static constexpr bool is_signed
Definition numeric_limits.hpp:531
static constexpr bool is_bounded
Definition numeric_limits.hpp:578
static constexpr auto signaling_NaN() noexcept -> unsigned short
Definition numeric_limits.hpp:568
static constexpr int min_exponent10
Definition numeric_limits.hpp:550
static constexpr auto quiet_NaN() noexcept -> unsigned short
Definition numeric_limits.hpp:564
static constexpr bool tinyness_before
Definition numeric_limits.hpp:582
static constexpr bool has_signaling_NaN
Definition numeric_limits.hpp:556
static constexpr bool has_quiet_NaN
Definition numeric_limits.hpp:555
static constexpr float_round_style round_style
Definition numeric_limits.hpp:583
Definition numeric_limits.hpp:18
static constexpr int max_digits10
Definition numeric_limits.hpp:36
static constexpr auto signaling_NaN() noexcept -> T
Definition numeric_limits.hpp:70
static constexpr auto infinity() noexcept -> T
Definition numeric_limits.hpp:62
static constexpr bool traps
Definition numeric_limits.hpp:83
static constexpr int radix
Definition numeric_limits.hpp:41
static constexpr bool is_iec559
Definition numeric_limits.hpp:79
static constexpr bool is_specialized
Definition numeric_limits.hpp:19
static constexpr float_denorm_style has_denorm
Definition numeric_limits.hpp:60
static constexpr int max_exponent
Definition numeric_limits.hpp:53
static constexpr int digits
Definition numeric_limits.hpp:34
static constexpr bool is_modulo
Definition numeric_limits.hpp:81
static constexpr bool has_denorm_loss
Definition numeric_limits.hpp:59
static constexpr bool has_infinity
Definition numeric_limits.hpp:56
static constexpr auto max() noexcept
Definition numeric_limits.hpp:25
static constexpr int digits10
Definition numeric_limits.hpp:35
static constexpr auto quiet_NaN() noexcept -> T
Definition numeric_limits.hpp:66
static constexpr int max_exponent10
Definition numeric_limits.hpp:54
static constexpr int min_exponent
Definition numeric_limits.hpp:51
static constexpr auto lowest() noexcept
Definition numeric_limits.hpp:29
static constexpr auto denorm_min() noexcept -> T
Definition numeric_limits.hpp:74
static constexpr bool is_integer
Definition numeric_limits.hpp:39
static constexpr bool is_exact
Definition numeric_limits.hpp:40
static constexpr auto round_error() noexcept -> T
Definition numeric_limits.hpp:46
static constexpr auto epsilon() noexcept -> T
Definition numeric_limits.hpp:42
static constexpr bool is_signed
Definition numeric_limits.hpp:38
static constexpr bool is_bounded
Definition numeric_limits.hpp:80
static constexpr int min_exponent10
Definition numeric_limits.hpp:52
static constexpr bool tinyness_before
Definition numeric_limits.hpp:84
static constexpr bool has_signaling_NaN
Definition numeric_limits.hpp:58
static constexpr bool has_quiet_NaN
Definition numeric_limits.hpp:57
static constexpr float_round_style round_style
Definition numeric_limits.hpp:85
static constexpr auto min() noexcept
Definition numeric_limits.hpp:21