authorgravatar for thatlemon@gmail.comLemonBoy <thatlemon@gmail.com> 2020-03-24 11:09:25+01:00
committergravatar for thatlemon@gmail.comLemonBoy <thatlemon@gmail.com> 2020-03-24 18:08:53+01:00
log4e95662a4a75817d7c1a35d7eba11b708ea43a30
tree6a46877d8c932a19b5f48f401e9e763e185bd878
parent39589cffe0bfcfda8d4802cc14fc335f532a7a90

std: Add qNaN constants


1 files changed, 18 insertions(+), 7 deletions(-)

lib/std/math.zig+18-7
...@@ -61,24 +61,36 @@ pub const f16_toint = 1.0 / f16_epsilon;...@@ -61,24 +61,36 @@ pub const f16_toint = 1.0 / f16_epsilon;
61pub const nan_u16 = @as(u16, 0x7C01);61pub const nan_u16 = @as(u16, 0x7C01);
62pub const nan_f16 = @bitCast(f16, nan_u16);62pub const nan_f16 = @bitCast(f16, nan_u16);
6363
64pub const qnan_u16 = @as(u16, 0x7E00);
65pub const qnan_f16 = @bitCast(f16, qnan_u16);
66
64pub const inf_u16 = @as(u16, 0x7C00);67pub const inf_u16 = @as(u16, 0x7C00);
65pub const inf_f16 = @bitCast(f16, inf_u16);68pub const inf_f16 = @bitCast(f16, inf_u16);
6669
67pub const nan_u32 = @as(u32, 0x7F800001);70pub const nan_u32 = @as(u32, 0x7F800001);
68pub const nan_f32 = @bitCast(f32, nan_u32);71pub const nan_f32 = @bitCast(f32, nan_u32);
6972
73pub const qnan_u32 = @as(u32, 0x7FC00000);
74pub const qnan_f32 = @bitCast(f32, qnan_u32);
75
70pub const inf_u32 = @as(u32, 0x7F800000);76pub const inf_u32 = @as(u32, 0x7F800000);
71pub const inf_f32 = @bitCast(f32, inf_u32);77pub const inf_f32 = @bitCast(f32, inf_u32);
7278
73pub const nan_u64 = @as(u64, 0x7FF << 52) | 1;79pub const nan_u64 = @as(u64, 0x7FF << 52) | 1;
74pub const nan_f64 = @bitCast(f64, nan_u64);80pub const nan_f64 = @bitCast(f64, nan_u64);
7581
82pub const qnan_u64 = @as(u64, 0x7ff8000000000000);
83pub const qnan_f64 = @bitCast(f64, qnan_u64);
84
76pub const inf_u64 = @as(u64, 0x7FF << 52);85pub const inf_u64 = @as(u64, 0x7FF << 52);
77pub const inf_f64 = @bitCast(f64, inf_u64);86pub const inf_f64 = @bitCast(f64, inf_u64);
7887
79pub const nan_u128 = @as(u128, 0x7fff0000000000000000000000000001);88pub const nan_u128 = @as(u128, 0x7fff0000000000000000000000000001);
80pub const nan_f128 = @bitCast(f128, nan_u128);89pub const nan_f128 = @bitCast(f128, nan_u128);
8190
91pub const qnan_u128 = @as(u128, 0x7fff8000000000000000000000000000);
92pub const qnan_f128 = @bitCast(f128, qnan_u128);
93
82pub const inf_u128 = @as(u128, 0x7fff0000000000000000000000000000);94pub const inf_u128 = @as(u128, 0x7fff0000000000000000000000000000);
83pub const inf_f128 = @bitCast(f128, inf_u128);95pub const inf_f128 = @bitCast(f128, inf_u128);
8496
...@@ -670,13 +682,12 @@ fn testRem() void {...@@ -670,13 +682,12 @@ fn testRem() void {
670682
671/// Returns the absolute value of the integer parameter.683/// Returns the absolute value of the integer parameter.
672/// Result is an unsigned integer.684/// Result is an unsigned integer.
673pub fn absCast(x: var) switch(@typeInfo(@TypeOf(x))) {685pub fn absCast(x: var) switch (@typeInfo(@TypeOf(x))) {
674 .ComptimeInt => comptime_int,686 .ComptimeInt => comptime_int,
675 .Int => |intInfo| std.meta.IntType(false, intInfo.bits),687 .Int => |intInfo| std.meta.IntType(false, intInfo.bits),
676 else => @compileError("absCast only accepts integers"),688 else => @compileError("absCast only accepts integers"),
677 }689} {
678{690 switch (@typeInfo(@TypeOf(x))) {
679 switch(@typeInfo(@TypeOf(x))) {
680 .ComptimeInt => {691 .ComptimeInt => {
681 if (x < 0) {692 if (x < 0) {
682 return -x;693 return -x;