Skip to content

Commit d1e3b8a

Browse files
committed
Precision: fix Decrement with negative count
Fixes #904
1 parent 389a329 commit d1e3b8a

2 files changed

Lines changed: 27 additions & 1 deletion

File tree

src/Numerics.Tests/PrecisionTest.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,32 @@ public void DecrementAtZero()
190190
Assert.AreEqual(-2 * double.Epsilon, x);
191191
}
192192

193+
/// <summary>
194+
/// Increment at zero.
195+
/// </summary>
196+
[Test]
197+
public void IncrementDecrementWithCount()
198+
{
199+
var x = -2 * double.Epsilon;
200+
Assert.AreEqual(-2 * double.Epsilon, x);
201+
x = x.Increment(2);
202+
Assert.AreEqual(0.0, x);
203+
x = x.Increment(2);
204+
Assert.AreEqual(2 * double.Epsilon, x);
205+
x = x.Decrement(2);
206+
Assert.AreEqual(0.0, x);
207+
x = x.Decrement(2);
208+
Assert.AreEqual(-2 * double.Epsilon, x);
209+
x = x.Decrement(-2);
210+
Assert.AreEqual(0.0, x);
211+
x = x.Decrement(-2);
212+
Assert.AreEqual(2 * double.Epsilon, x);
213+
x = x.Increment(-2);
214+
Assert.AreEqual(0.0, x);
215+
x = x.Increment(-2);
216+
Assert.AreEqual(-2 * double.Epsilon, x);
217+
}
218+
193219
/// <summary>
194220
/// Increment at min/max.
195221
/// </summary>

src/Numerics/Precision.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ public static double Decrement(this double value, int count = 1)
319319

320320
if (count < 0)
321321
{
322-
return Decrement(value, -count);
322+
return Increment(value, -count);
323323
}
324324

325325
// Translate the bit pattern of the double to an integer.

0 commit comments

Comments
 (0)