| ... | @@ -777,92 +777,3 @@ test "max value type" { | ... | @@ -777,92 +777,3 @@ test "max value type" { |
| 777 | const x: u32 = maxInt(i32); | 777 | const x: u32 = maxInt(i32); |
| 778 | assert(x == 2147483647); | 778 | assert(x == 2147483647); |
| 779 | } | 779 | } |
| 780 | | | |
| 781 | pub fn maxFloat(comptime T: type) T { | | |
| 782 | return switch (T) { | | |
| 783 | f16 => f16_max, | | |
| 784 | f32 => f32_max, | | |
| 785 | f64 => f64_max, | | |
| 786 | else => @compileError("Expecting type to be a float"), | | |
| 787 | }; | | |
| 788 | } | | |
| 789 | | | |
| 790 | test "math.maxFloat" { | | |
| 791 | assert(maxFloat(f16) == f16_max); | | |
| 792 | assert(maxFloat(f32) == f32_max); | | |
| 793 | assert(maxFloat(f64) == f64_max); | | |
| 794 | } | | |
| 795 | | | |
| 796 | pub fn minFloat(comptime T: type) T { | | |
| 797 | return switch (T) { | | |
| 798 | f16 => f16_min, | | |
| 799 | f32 => f32_min, | | |
| 800 | f64 => f64_min, | | |
| 801 | else => @compileError("Expecting type to be a float"), | | |
| 802 | }; | | |
| 803 | } | | |
| 804 | | | |
| 805 | test "math.minFloat" { | | |
| 806 | assert(minFloat(f16) == f16_min); | | |
| 807 | assert(minFloat(f32) == f32_min); | | |
| 808 | assert(minFloat(f64) == f64_min); | | |
| 809 | } | | |
| 810 | | | |
| 811 | pub fn maxValue(comptime T: type) T { | | |
| 812 | return switch (@typeId(T)) { | | |
| 813 | TypeId.Int => maxInt(T), | | |
| 814 | TypeId.Float => maxFloat(T), | | |
| 815 | else => @compileError("Expecting type to be a float or int"), | | |
| 816 | }; | | |
| 817 | } | | |
| 818 | | | |
| 819 | test "math.maxValue" { | | |
| 820 | assert(maxValue(u0) == 0); | | |
| 821 | assert(maxValue(u1) == 1); | | |
| 822 | assert(maxValue(u8) == 255); | | |
| 823 | assert(maxValue(u16) == 65535); | | |
| 824 | assert(maxValue(u32) == 4294967295); | | |
| 825 | assert(maxValue(u64) == 18446744073709551615); | | |
| 826 | | | |
| 827 | assert(maxValue(i0) == 0); | | |
| 828 | assert(maxValue(i1) == 0); | | |
| 829 | assert(maxValue(i8) == 127); | | |
| 830 | assert(maxValue(i16) == 32767); | | |
| 831 | assert(maxValue(i32) == 2147483647); | | |
| 832 | assert(maxValue(i63) == 4611686018427387903); | | |
| 833 | assert(maxValue(i64) == 9223372036854775807); | | |
| 834 | | | |
| 835 | assert(maxValue(f16) == f16_max); | | |
| 836 | assert(maxValue(f32) == f32_max); | | |
| 837 | assert(maxValue(f64) == f64_max); | | |
| 838 | } | | |
| 839 | | | |
| 840 | pub fn minValue(comptime T: type) T { | | |
| 841 | return switch (@typeId(T)) { | | |
| 842 | TypeId.Int => minInt(T), | | |
| 843 | TypeId.Float => minFloat(T), | | |
| 844 | else => @compileError("Expecting type to be a float or int"), | | |
| 845 | }; | | |
| 846 | } | | |
| 847 | | | |
| 848 | test "math.minValue" { | | |
| 849 | assert(minValue(u0) == 0); | | |
| 850 | assert(minValue(u1) == 0); | | |
| 851 | assert(minValue(u8) == 0); | | |
| 852 | assert(minValue(u16) == 0); | | |
| 853 | assert(minValue(u32) == 0); | | |
| 854 | assert(minValue(u63) == 0); | | |
| 855 | assert(minValue(u64) == 0); | | |
| 856 | | | |
| 857 | assert(minValue(i0) == 0); | | |
| 858 | assert(minValue(i1) == -1); | | |
| 859 | assert(minValue(i8) == -128); | | |
| 860 | assert(minValue(i16) == -32768); | | |
| 861 | assert(minValue(i32) == -2147483648); | | |
| 862 | assert(minValue(i63) == -4611686018427387904); | | |
| 863 | assert(minValue(i64) == -9223372036854775808); | | |
| 864 | | | |
| 865 | assert(minValue(f16) == f16_min); | | |
| 866 | assert(minValue(f32) == f32_min); | | |
| 867 | assert(minValue(f64) == f64_min); | | |
| 868 | } | | |