Skip to content

Commit 917f9a0

Browse files
committed
Handle negative zero
1 parent 9668430 commit 917f9a0

File tree

4 files changed

+5
-5
lines changed

4 files changed

+5
-5
lines changed

src/libraries/System.Runtime.InteropServices/tests/System.Runtime.InteropServices.UnitTests/System/Runtime/InteropServices/NFloatTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2505,7 +2505,7 @@ public static void TanPiTest64(double value, double expectedResult, double allow
25052505
public static void LerpTest32(float value1, float value2, float amount, float expectedResult)
25062506
{
25072507
AssertExtensions.Equal(+expectedResult, (float)NFloat.Lerp(+value1, +value2, amount), 0);
2508-
AssertExtensions.Equal(-expectedResult, (float)NFloat.Lerp(-value1, -value2, amount), 0);
2508+
AssertExtensions.Equal((expectedResult == 0.0f) ? expectedResult : -expectedResult, (float)NFloat.Lerp(-value1, -value2, amount), 0);
25092509
}
25102510

25112511
[ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.Is64BitProcess))]
@@ -2543,7 +2543,7 @@ public static void LerpTest32(float value1, float value2, float amount, float ex
25432543
public static void LerpTest64(double value1, double value2, double amount, double expectedResult)
25442544
{
25452545
AssertExtensions.Equal(+expectedResult, NFloat.Lerp((NFloat)(+value1), (NFloat)(+value2), (NFloat)(amount)), 0);
2546-
AssertExtensions.Equal(-expectedResult, NFloat.Lerp((NFloat)(-value1), (NFloat)(-value2), (NFloat)(amount)), 0);
2546+
AssertExtensions.Equal((expectedResult == 0.0) ? expectedResult : -expectedResult, NFloat.Lerp((NFloat)(-value1), (NFloat)(-value2), (NFloat)(amount)), 0);
25472547
}
25482548
}
25492549
}

src/libraries/System.Runtime/tests/System/DoubleTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1653,7 +1653,7 @@ public static void TanPiTest(double value, double expectedResult, double allowed
16531653
public static void LerpTest(double value1, double value2, double amount, double expectedResult)
16541654
{
16551655
AssertExtensions.Equal(+expectedResult, double.Lerp(+value1, +value2, amount), 0);
1656-
AssertExtensions.Equal(-expectedResult, double.Lerp(-value1, -value2, amount), 0);
1656+
AssertExtensions.Equal((expectedResult == 0.0) ? expectedResult : -expectedResult, double.Lerp(-value1, -value2, amount), 0);
16571657
}
16581658
}
16591659
}

src/libraries/System.Runtime/tests/System/HalfTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2116,7 +2116,7 @@ public static IEnumerable<object[]> Lerp_TestData()
21162116
public static void LerpTest(Half value1, Half value2, Half amount, Half expectedResult)
21172117
{
21182118
AssertExtensions.Equal(+expectedResult, Half.Lerp(+value1, +value2, amount), Half.Zero);
2119-
AssertExtensions.Equal(-expectedResult, Half.Lerp(-value1, -value2, amount), Half.Zero);
2119+
AssertExtensions.Equal((expectedResult == Half.Zero) ? expectedResult : -expectedResult, Half.Lerp(-value1, -value2, amount), Half.Zero);
21202120
}
21212121
}
21222122
}

src/libraries/System.Runtime/tests/System/SingleTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1566,7 +1566,7 @@ public static void TanPiTest(float value, float expectedResult, float allowedVar
15661566
public static void LerpTest(float value1, float value2, float amount, float expectedResult)
15671567
{
15681568
AssertExtensions.Equal(+expectedResult, float.Lerp(+value1, +value2, amount), 0);
1569-
AssertExtensions.Equal(-expectedResult, float.Lerp(-value1, -value2, amount), 0);
1569+
AssertExtensions.Equal((expectedResult == 0.0f) ? expectedResult : -expectedResult, float.Lerp(-value1, -value2, amount), 0);
15701570
}
15711571
}
15721572
}

0 commit comments

Comments
 (0)