| ... | ... | @@ -14,6 +14,7 @@ pub fn signbit(x: anytype) bool { |
| 14 | 14 | f16 => signbit16(x), |
| 15 | 15 | f32 => signbit32(x), |
| 16 | 16 | f64 => signbit64(x), |
| 17 | f128 => signbit128(x), |
| 17 | 18 | else => @compileError("signbit not implemented for " ++ @typeName(T)), |
| 18 | 19 | }; |
| 19 | 20 | } |
| ... | ... | @@ -33,10 +34,16 @@ fn signbit64(x: f64) bool { |
| 33 | 34 | return bits >> 63 != 0; |
| 34 | 35 | } |
| 35 | 36 | |
| 37 | fn signbit128(x: f128) bool { |
| 38 | const bits = @bitCast(u128, x); |
| 39 | return bits >> 127 != 0; |
| 40 | } |
| 41 | |
| 36 | 42 | test "math.signbit" { |
| 37 | 43 | expect(signbit(@as(f16, 4.0)) == signbit16(4.0)); |
| 38 | 44 | expect(signbit(@as(f32, 4.0)) == signbit32(4.0)); |
| 39 | 45 | expect(signbit(@as(f64, 4.0)) == signbit64(4.0)); |
| 46 | expect(signbit(@as(f128, 4.0)) == signbit128(4.0)); |
| 40 | 47 | } |
| 41 | 48 | |
| 42 | 49 | test "math.signbit16" { |
| ... | ... | @@ -53,3 +60,8 @@ test "math.signbit64" { |
| 53 | 60 | expect(!signbit64(4.0)); |
| 54 | 61 | expect(signbit64(-3.0)); |
| 55 | 62 | } |
| 63 | |
| 64 | test "math.signbit128" { |
| 65 | expect(!signbit128(4.0)); |
| 66 | expect(signbit128(-3.0)); |
| 67 | } |