| ... | @@ -85,7 +85,7 @@ test "strncpy" { | ... | @@ -85,7 +85,7 @@ test "strncpy" { |
| 85 | var s1: [9:0]u8 = undefined; | 85 | var s1: [9:0]u8 = undefined; |
| 86 | | 86 | |
| 87 | s1[0] = 0; | 87 | s1[0] = 0; |
| 88 | _ = strncpy(&s1, "foobarbaz", 9); | 88 | _ = strncpy(&s1, "foobarbaz", @sizeOf(@TypeOf(s1))); |
| 89 | std.testing.expectEqualSlices(u8, "foobarbaz", std.mem.spanZ(&s1)); | 89 | std.testing.expectEqualSlices(u8, "foobarbaz", std.mem.spanZ(&s1)); |
| 90 | } | 90 | } |
| 91 | | 91 | |
| ... | @@ -993,17 +993,24 @@ export fn sqrt(x: f64) f64 { | ... | @@ -993,17 +993,24 @@ export fn sqrt(x: f64) f64 { |
| 993 | } | 993 | } |
| 994 | | 994 | |
| 995 | test "sqrt" { | 995 | test "sqrt" { |
| 996 | const epsilon = 0.000001; | 996 | const V = [_]f64{ |
| 997 | | 997 | 0.0, |
| 998 | std.testing.expect(sqrt(0.0) == 0.0); | 998 | 4.089288054930154, |
| 999 | std.testing.expect(std.math.approxEqAbs(f64, sqrt(2.0), 1.414214, epsilon)); | 999 | 7.538757127071935, |
| 1000 | std.testing.expect(std.math.approxEqAbs(f64, sqrt(3.6), 1.897367, epsilon)); | 1000 | 8.97780793672623, |
| 1001 | std.testing.expect(sqrt(4.0) == 2.0); | 1001 | 5.304443821913729, |
| 1002 | std.testing.expect(std.math.approxEqAbs(f64, sqrt(7.539840), 2.745877, epsilon)); | 1002 | 5.682408965311888, |
| 1003 | std.testing.expect(std.math.approxEqAbs(f64, sqrt(19.230934), 4.385309, epsilon)); | 1003 | 0.5846878579110049, |
| 1004 | std.testing.expect(sqrt(64.0) == 8.0); | 1004 | 3.650338664297043, |
| 1005 | std.testing.expect(std.math.approxEqAbs(f64, sqrt(64.1), 8.006248, epsilon)); | 1005 | 0.3178091951800732, |
| 1006 | std.testing.expect(std.math.approxEqAbs(f64, sqrt(8942.230469), 94.563367, epsilon)); | 1006 | 7.1505232436382835, |
| | 1007 | 3.6589165881946464, |
| | 1008 | }; |
| | 1009 | |
| | 1010 | // Note that @sqrt will either generate the sqrt opcode (if supported by the |
| | 1011 | // target ISA) or a call to `sqrtf` otherwise. |
| | 1012 | for (V) |val| |
| | 1013 | std.testing.expectEqual(@sqrt(val), sqrt(val)); |
| 1007 | } | 1014 | } |
| 1008 | | 1015 | |
| 1009 | test "sqrt special" { | 1016 | test "sqrt special" { |
| ... | @@ -1091,17 +1098,24 @@ export fn sqrtf(x: f32) f32 { | ... | @@ -1091,17 +1098,24 @@ export fn sqrtf(x: f32) f32 { |
| 1091 | } | 1098 | } |
| 1092 | | 1099 | |
| 1093 | test "sqrtf" { | 1100 | test "sqrtf" { |
| 1094 | const epsilon = 0.000001; | 1101 | const V = [_]f32{ |
| 1095 | | 1102 | 0.0, |
| 1096 | std.testing.expect(sqrtf(0.0) == 0.0); | 1103 | 4.089288054930154, |
| 1097 | std.testing.expect(std.math.approxEqAbs(f32, sqrtf(2.0), 1.414214, epsilon)); | 1104 | 7.538757127071935, |
| 1098 | std.testing.expect(std.math.approxEqAbs(f32, sqrtf(3.6), 1.897367, epsilon)); | 1105 | 8.97780793672623, |
| 1099 | std.testing.expect(sqrtf(4.0) == 2.0); | 1106 | 5.304443821913729, |
| 1100 | std.testing.expect(std.math.approxEqAbs(f32, sqrtf(7.539840), 2.745877, epsilon)); | 1107 | 5.682408965311888, |
| 1101 | std.testing.expect(std.math.approxEqAbs(f32, sqrtf(19.230934), 4.385309, epsilon)); | 1108 | 0.5846878579110049, |
| 1102 | std.testing.expect(sqrtf(64.0) == 8.0); | 1109 | 3.650338664297043, |
| 1103 | std.testing.expect(std.math.approxEqAbs(f32, sqrtf(64.1), 8.006248, epsilon)); | 1110 | 0.3178091951800732, |
| 1104 | std.testing.expect(std.math.approxEqAbs(f32, sqrtf(8942.230469), 94.563370, epsilon)); | 1111 | 7.1505232436382835, |
| | 1112 | 3.6589165881946464, |
| | 1113 | }; |
| | 1114 | |
| | 1115 | // Note that @sqrt will either generate the sqrt opcode (if supported by the |
| | 1116 | // target ISA) or a call to `sqrtf` otherwise. |
| | 1117 | for (V) |val| |
| | 1118 | std.testing.expectEqual(@sqrt(val), sqrtf(val)); |
| 1105 | } | 1119 | } |
| 1106 | | 1120 | |
| 1107 | test "sqrtf special" { | 1121 | test "sqrtf special" { |