@ -68,6 +68,13 @@ namespace MathNet.Numerics.UnitTests
Assert . AreEqual ( 1 1 , 1e11 . Magnitude ( ) ) ;
Assert . AreEqual ( 1 2 , 1e12 . Magnitude ( ) ) ;
Assert . AreEqual ( - 7 , 1e-7 . Magnitude ( ) ) ;
Assert . AreEqual ( - 8 , 1e-8 . Magnitude ( ) ) ;
Assert . AreEqual ( - 9 , 1e-9 . Magnitude ( ) ) ;
Assert . AreEqual ( - 1 0 , 1e-10 . Magnitude ( ) ) ;
Assert . AreEqual ( - 1 1 , 1e-11 . Magnitude ( ) ) ;
Assert . AreEqual ( - 1 2 , 1e-12 . Magnitude ( ) ) ;
Assert . AreEqual ( 5 , 1.1e5 . Magnitude ( ) ) ;
Assert . AreEqual ( - 5 , 2.2e-5 . Magnitude ( ) ) ;
Assert . AreEqual ( 9 , 3.3e9 . Magnitude ( ) ) ;
@ -95,6 +102,13 @@ namespace MathNet.Numerics.UnitTests
Assert . AreEqual ( 1 1 , ( - 1e11 ) . Magnitude ( ) ) ;
Assert . AreEqual ( 1 2 , ( - 1e12 ) . Magnitude ( ) ) ;
Assert . AreEqual ( - 7 , ( - 1e-7 ) . Magnitude ( ) ) ;
Assert . AreEqual ( - 8 , ( - 1e-8 ) . Magnitude ( ) ) ;
Assert . AreEqual ( - 9 , ( - 1e-9 ) . Magnitude ( ) ) ;
Assert . AreEqual ( - 1 0 , ( - 1e-10 ) . Magnitude ( ) ) ;
Assert . AreEqual ( - 1 1 , ( - 1e-11 ) . Magnitude ( ) ) ;
Assert . AreEqual ( - 1 2 , ( - 1e-12 ) . Magnitude ( ) ) ;
Assert . AreEqual ( 5 , ( - 1.1e5 ) . Magnitude ( ) ) ;
Assert . AreEqual ( - 5 , ( - 2.2e-5 ) . Magnitude ( ) ) ;
Assert . AreEqual ( 9 , ( - 3.3e9 ) . Magnitude ( ) ) ;
@ -686,50 +700,141 @@ namespace MathNet.Numerics.UnitTests
}
/// <summary>
/// <c>AlmostEqual</c> within decimal places with decimal places less than one throws <c>ArgumentOutOfRangeException</c> .
/// <c>AlmostEqual</c> within absolute decimal places .
/// </summary>
[Test]
public void AlmostEqualWithinDecimalPlacesWithDecimalPlacesLessThanOneThrowsArgumentOutOfRangeException ( )
public void AlmostEqualInAbsoluteDecimalPlaces ( )
{
Assert . Throws < ArgumentOutOfRangeException > ( ( ) = > Precision . AlmostEqualInDecimalPlaces ( 1 , 2 , 0 ) ) ;
Assert . IsFalse ( 1d . AlmostEqualInAbsoluteDecimalPlaces ( double . NaN , 2 ) ) ;
Assert . IsFalse ( double . NaN . AlmostEqualInAbsoluteDecimalPlaces ( 2d , 2 ) ) ;
Assert . IsFalse ( double . NaN . AlmostEqualInAbsoluteDecimalPlaces ( double . NaN , 2 ) ) ;
Assert . IsFalse ( double . NegativeInfinity . AlmostEqualInAbsoluteDecimalPlaces ( 2 , 2 ) ) ;
Assert . IsFalse ( 1d . AlmostEqualInAbsoluteDecimalPlaces ( double . NegativeInfinity , 2 ) ) ;
Assert . IsFalse ( double . PositiveInfinity . AlmostEqualInAbsoluteDecimalPlaces ( 2 , 2 ) ) ;
Assert . IsFalse ( 1d . AlmostEqualInAbsoluteDecimalPlaces ( double . PositiveInfinity , 2 ) ) ;
Assert . IsFalse ( double . NegativeInfinity . AlmostEqualInAbsoluteDecimalPlaces ( double . PositiveInfinity , 2 ) ) ;
Assert . IsFalse ( double . PositiveInfinity . AlmostEqualInAbsoluteDecimalPlaces ( double . NegativeInfinity , 2 ) ) ;
Assert . IsTrue ( double . PositiveInfinity . AlmostEqualInAbsoluteDecimalPlaces ( double . PositiveInfinity , 2 ) ) ;
Assert . IsTrue ( double . NegativeInfinity . AlmostEqualInAbsoluteDecimalPlaces ( double . NegativeInfinity , 2 ) ) ;
// 1 -> +/- 0.05 (0.5e-1)
Assert . IsFalse ( 1d . AlmostEqualInAbsoluteDecimalPlaces ( 1.06 , 1 ) ) ;
Assert . IsTrue ( 1d . AlmostEqualInAbsoluteDecimalPlaces ( 1.04 , 1 ) ) ;
Assert . IsTrue ( 1d . AlmostEqualInAbsoluteDecimalPlaces ( 1.00 , 1 ) ) ;
Assert . IsTrue ( 1d . AlmostEqualInAbsoluteDecimalPlaces ( 0.96 , 1 ) ) ;
Assert . IsFalse ( 1d . AlmostEqualInAbsoluteDecimalPlaces ( 0.94 , 1 ) ) ;
Assert . IsFalse ( 1d . AlmostEqualInAbsoluteDecimalPlaces ( 0.0 , 1 ) ) ;
// -1 -> +/- 5 (0.5e+1)
Assert . IsFalse ( 1 0 0d . AlmostEqualInAbsoluteDecimalPlaces ( 1 0 6.0 , - 1 ) ) ;
Assert . IsTrue ( 1 0 0d . AlmostEqualInAbsoluteDecimalPlaces ( 1 0 4.0 , - 1 ) ) ;
Assert . IsTrue ( 1 0 0d . AlmostEqualInAbsoluteDecimalPlaces ( 1 0 0.0 , - 1 ) ) ;
Assert . IsTrue ( 1 0 0d . AlmostEqualInAbsoluteDecimalPlaces ( 9 6.0 , - 1 ) ) ;
Assert . IsFalse ( 1 0 0d . AlmostEqualInAbsoluteDecimalPlaces ( 9 4.0 , - 1 ) ) ;
Assert . IsFalse ( 1 0 0d . AlmostEqualInAbsoluteDecimalPlaces ( 0.0 , - 1 ) ) ;
// 3 -> +/- 0.0005 (0.5e-3)
Assert . IsFalse ( 0.01 . AlmostEqualInAbsoluteDecimalPlaces ( 0.0106 , 3 ) ) ;
Assert . IsTrue ( 0.01 . AlmostEqualInAbsoluteDecimalPlaces ( 0.0104 , 3 ) ) ;
Assert . IsTrue ( 0.01 . AlmostEqualInAbsoluteDecimalPlaces ( 0.0100 , 3 ) ) ;
Assert . IsTrue ( 0.01 . AlmostEqualInAbsoluteDecimalPlaces ( 0.0096 , 3 ) ) ;
Assert . IsFalse ( 0.01 . AlmostEqualInAbsoluteDecimalPlaces ( 0.0094 , 3 ) ) ;
Assert . IsFalse ( 0.01 . AlmostEqualInAbsoluteDecimalPlaces ( 0.0 , 3 ) ) ;
// 12 -> +/- 0.5e-12
Assert . IsTrue ( 0d . AlmostEqualInAbsoluteDecimalPlaces ( 4 * _d oublePrecision , 1 2 ) ) ;
Assert . IsTrue ( 0d . AlmostEqualInAbsoluteDecimalPlaces ( - 4 * _d oublePrecision , 1 2 ) ) ;
}
/// <summary>
/// <c>AlmostEqual</c> within relative decimal places.
/// </summary>
[Test]
public void AlmostEqualInRelativeDecimalPlaces ( )
{
Assert . IsFalse ( 1d . AlmostEqualInRelativeDecimalPlaces ( double . NaN , 2 ) ) ;
Assert . IsFalse ( double . NaN . AlmostEqualInRelativeDecimalPlaces ( 2d , 2 ) ) ;
Assert . IsFalse ( double . NaN . AlmostEqualInRelativeDecimalPlaces ( double . NaN , 2 ) ) ;
Assert . IsFalse ( double . NegativeInfinity . AlmostEqualInRelativeDecimalPlaces ( 2 , 2 ) ) ;
Assert . IsFalse ( 1d . AlmostEqualInRelativeDecimalPlaces ( double . NegativeInfinity , 2 ) ) ;
Assert . IsFalse ( double . PositiveInfinity . AlmostEqualInRelativeDecimalPlaces ( 2 , 2 ) ) ;
Assert . IsFalse ( 1d . AlmostEqualInRelativeDecimalPlaces ( double . PositiveInfinity , 2 ) ) ;
Assert . IsFalse ( double . NegativeInfinity . AlmostEqualInRelativeDecimalPlaces ( double . PositiveInfinity , 2 ) ) ;
Assert . IsFalse ( double . PositiveInfinity . AlmostEqualInRelativeDecimalPlaces ( double . NegativeInfinity , 2 ) ) ;
Assert . IsTrue ( double . PositiveInfinity . AlmostEqualInRelativeDecimalPlaces ( double . PositiveInfinity , 2 ) ) ;
Assert . IsTrue ( double . NegativeInfinity . AlmostEqualInRelativeDecimalPlaces ( double . NegativeInfinity , 2 ) ) ;
// 1 -> +/- max * 0.05 (0.5e-1)
Assert . IsTrue ( 1d . AlmostEqualInRelativeDecimalPlaces ( 1.04 , 1 ) ) ;
Assert . IsFalse ( 1d . AlmostEqualInRelativeDecimalPlaces ( 1.06 , 1 ) ) ;
Assert . IsTrue ( 1d . AlmostEqualInRelativeDecimalPlaces ( 0.96 , 1 ) ) ;
Assert . IsFalse ( 1d . AlmostEqualInRelativeDecimalPlaces ( 0.94 , 1 ) ) ;
// 1 -> +/- max * 0.05 (0.5e-1)
Assert . IsTrue ( 1 0 0d . AlmostEqualInRelativeDecimalPlaces ( 1 0 4.00 , 1 ) ) ;
Assert . IsFalse ( 1 0 0d . AlmostEqualInRelativeDecimalPlaces ( 1 0 6.00 , 1 ) ) ;
Assert . IsTrue ( 1 0 0d . AlmostEqualInRelativeDecimalPlaces ( 9 6.000 , 1 ) ) ;
Assert . IsFalse ( 1 0 0d . AlmostEqualInRelativeDecimalPlaces ( 9 4.000 , 1 ) ) ;
// 0 -> +/- max * 0.5 (0.5e-0)
Assert . IsTrue ( 0.01 . AlmostEqualInRelativeDecimalPlaces ( 0.014 , 0 ) ) ;
Assert . IsFalse ( 0.01 . AlmostEqualInRelativeDecimalPlaces ( 0.016 , 0 ) ) ;
Assert . IsTrue ( 0.01 . AlmostEqualInRelativeDecimalPlaces ( 0.006 , 0 ) ) ;
Assert . IsFalse ( 0.01 . AlmostEqualInRelativeDecimalPlaces ( 0.004 , 0 ) ) ;
}
/// <summary>
/// <c>AlmostEqual</c> within decimal places with negative decimal places throws <c>ArgumentOutOfRangeException</c>.
/// </summary>
[Test]
public void AlmostEqualInRelativeDecimalPlacesWithNegativeDecimalPlacesThrowsArgumentOutOfRangeException ( )
{
Assert . Throws < ArgumentOutOfRangeException > ( ( ) = > Precision . AlmostEqualInDecimalPlaces ( 1 , 2 , - 1 ) ) ;
Assert . Throws < ArgumentOutOfRangeException > ( ( ) = > Precision . AlmostEqualInRelativeDecimalPlaces ( 1 , 2 , - 1 ) ) ;
Assert . DoesNotThrow ( ( ) = > Precision . AlmostEqualInAbsoluteDecimalPlaces ( 1 , 2 , - 1 ) ) ;
}
/// <summary>
/// <c>AlmostEqual</c> within decimal places.
/// </summary>
[Test]
public void AlmostEqualWithinDecimalPlaces ( )
public void AlmostEqualI nDecimalPlaces ( )
{
Assert . IsFalse ( Precision . AlmostEqualInDecimalPlaces ( 1 , double . NaN , 2 ) ) ;
Assert . IsFalse ( 1d . AlmostEqualInDecimalPlaces ( double . NaN , 2 ) ) ;
Assert . IsFalse ( double . NaN . AlmostEqualInDecimalPlaces ( 2 , 2 ) ) ;
Assert . IsFalse ( double . NaN . AlmostEqualInDecimalPlaces ( double . NaN , 2 ) ) ;
Assert . IsFalse ( double . NegativeInfinity . AlmostEqualInDecimalPlaces ( 2 , 2 ) ) ;
Assert . IsFalse ( Precision . AlmostEqualInDecimalPlaces ( 1 , double . NegativeInfinity , 2 ) ) ;
Assert . IsFalse ( 1d . AlmostEqualInDecimalPlaces ( double . NegativeInfinity , 2 ) ) ;
Assert . IsFalse ( double . PositiveInfinity . AlmostEqualInDecimalPlaces ( 2 , 2 ) ) ;
Assert . IsFalse ( Precision . AlmostEqualInDecimalPlaces ( 1 , double . PositiveInfinity , 2 ) ) ;
Assert . IsFalse ( 1d . AlmostEqualInDecimalPlaces ( double . PositiveInfinity , 2 ) ) ;
Assert . IsFalse ( double . NegativeInfinity . AlmostEqualInDecimalPlaces ( double . PositiveInfinity , 2 ) ) ;
Assert . IsFalse ( double . PositiveInfinity . AlmostEqualInDecimalPlaces ( double . NegativeInfinity , 2 ) ) ;
Assert . IsTrue ( double . PositiveInfinity . AlmostEqualInDecimalPlaces ( double . PositiveInfinity , 2 ) ) ;
Assert . IsTrue ( double . NegativeInfinity . AlmostEqualInDecimalPlaces ( double . NegativeInfinity , 2 ) ) ;
Assert . IsTrue ( 1.0 . AlmostEqualInDecimalPlaces ( 1.04 , 2 ) ) ;
Assert . IsTrue ( 1.0 . AlmostEqualInDecimalPlaces ( 0.96 , 2 ) ) ;
Assert . IsFalse ( 1.0 . AlmostEqualInDecimalPlaces ( 1.06 , 2 ) ) ;
Assert . IsFalse ( 1.0 . AlmostEqualInDecimalPlaces ( 0.94 , 2 ) ) ;
Assert . IsTrue ( 1 0 0.0 . AlmostEqualInDecimalPlaces ( 1 0 4.00 , 2 ) ) ;
Assert . IsTrue ( 1 0 0.0 . AlmostEqualInDecimalPlaces ( 9 6.000 , 2 ) ) ;
Assert . IsFalse ( 1 0 0.0 . AlmostEqualInDecimalPlaces ( 1 0 6.00 , 2 ) ) ;
Assert . IsFalse ( 1 0 0.0 . AlmostEqualInDecimalPlaces ( 9 4.000 , 2 ) ) ;
Assert . IsTrue ( 0.0 . AlmostEqualInDecimalPlaces ( 4 * _d oublePrecision , 1 2 ) ) ;
Assert . IsTrue ( 0.0 . AlmostEqualInDecimalPlaces ( - 4 * _d oublePrecision , 1 2 ) ) ;
// 1 -> +/- max * 0.05 (0.5e-1)
Assert . IsTrue ( 1d . AlmostEqualInDecimalPlaces ( 1.04 , 1 ) ) ;
Assert . IsFalse ( 1d . AlmostEqualInDecimalPlaces ( 1.06 , 1 ) ) ;
Assert . IsTrue ( 1d . AlmostEqualInDecimalPlaces ( 0.96 , 1 ) ) ;
Assert . IsFalse ( 1d . AlmostEqualInDecimalPlaces ( 0.94 , 1 ) ) ;
// 1 -> +/- max * 0.05 (0.5e-1)
Assert . IsTrue ( 1 0 0d . AlmostEqualInDecimalPlaces ( 1 0 4.00 , 1 ) ) ;
Assert . IsFalse ( 1 0 0d . AlmostEqualInDecimalPlaces ( 1 0 6.00 , 1 ) ) ;
Assert . IsTrue ( 1 0 0d . AlmostEqualInDecimalPlaces ( 9 6.000 , 1 ) ) ;
Assert . IsFalse ( 1 0 0d . AlmostEqualInDecimalPlaces ( 9 4.000 , 1 ) ) ;
// 0 -> +/- max * 0.5 (0.5e-0)
Assert . IsTrue ( 0.01 . AlmostEqualInDecimalPlaces ( 0.014 , 0 ) ) ;
Assert . IsFalse ( 0.01 . AlmostEqualInDecimalPlaces ( 0.016 , 0 ) ) ;
Assert . IsTrue ( 0.01 . AlmostEqualInDecimalPlaces ( 0.006 , 0 ) ) ;
Assert . IsFalse ( 0.01 . AlmostEqualInDecimalPlaces ( 0.004 , 0 ) ) ;
Assert . IsTrue ( 0d . AlmostEqualInDecimalPlaces ( 4 * _d oublePrecision , 1 2 ) ) ;
Assert . IsTrue ( 0d . AlmostEqualInDecimalPlaces ( - 4 * _d oublePrecision , 1 2 ) ) ;
}
/// <summary>
@ -835,23 +940,21 @@ namespace MathNet.Numerics.UnitTests
Assert . IsFalse ( double . PositiveInfinity . IsLargerWithDecimalPlaces ( double . PositiveInfinity , 2 ) ) ;
Assert . IsFalse ( double . NegativeInfinity . IsLargerWithDecimalPlaces ( double . NegativeInfinity , 2 ) ) ;
Assert . IsFalse ( 1.0 . IsLargerWithDecimalPlaces ( 1.04 , 2 ) ) ;
Assert . IsFalse ( 1.0 . IsLargerWithDecimalPlaces ( 0.96 , 2 ) ) ;
Assert . IsFalse ( 1.0 . IsLargerWithDecimalPlaces ( 1.06 , 2 ) ) ;
Assert . IsTrue ( 1.0 . IsLargerWithDecimalPlaces ( 0.94 , 2 ) ) ;
Assert . IsFalse ( 1.0 . IsLargerWithDecimalPlaces ( 1.006 , 2 ) ) ;
Assert . IsFalse ( 1.0 . IsLargerWithDecimalPlaces ( 1.004 , 2 ) ) ;
Assert . IsFalse ( 1.0 . IsLargerWithDecimalPlaces ( 0.996 , 2 ) ) ;
Assert . IsTrue ( 1.0 . IsLargerWithDecimalPlaces ( 0.994 , 2 ) ) ;
Assert . IsFalse ( 1 0 0.0 . IsLargerWithDecimalPlaces ( 1 0 4.00 , 2 ) ) ;
Assert . IsFalse ( 1 0 0.0 . IsLargerWithDecimalPlaces ( 9 6.000 , 2 ) ) ;
Assert . IsFalse ( 1 0 0.0 . IsLargerWithDecimalPlaces ( 1 0 0.6 , 2 ) ) ;
Assert . IsFalse ( 1 0 0.0 . IsLargerWithDecimalPlaces ( 1 0 0.4 , 2 ) ) ;
Assert . IsFalse ( 1 0 0.0 . IsLargerWithDecimalPlaces ( 9 9.6 , 2 ) ) ;
Assert . IsTrue ( 1 0 0.0 . IsLargerWithDecimalPlaces ( 9 9.4 , 2 ) ) ;
Assert . IsFalse ( 1 0 0.0 . IsLargerWithDecimalPlaces ( 1 0 6.00 , 2 ) ) ;
Assert . IsTrue ( 1 0 0.0 . IsLargerWithDecimalPlaces ( 9 4.000 , 2 ) ) ;
var max = 4 * Math . Pow ( 1 0 , _d oublePrecision . Magnitude ( ) ) ;
var max = 0.4 * Math . Pow ( 1 0 , _d oublePrecision . Magnitude ( ) ) ;
Assert . IsFalse ( 0.0 . IsLargerWithDecimalPlaces ( max , - _d oublePrecision . Magnitude ( ) ) ) ;
Assert . IsFalse ( 0.0 . IsLargerWithDecimalPlaces ( - max , - _d oublePrecision . Magnitude ( ) ) ) ;
max = 6 * Math . Pow ( 1 0 , _d oublePrecision . Magnitude ( ) ) ;
max = 0. 6 * Math . Pow ( 1 0 , _d oublePrecision . Magnitude ( ) ) ;
Assert . IsFalse ( 0.0 . IsLargerWithDecimalPlaces ( max , - _d oublePrecision . Magnitude ( ) ) ) ;
Assert . IsTrue ( 0.0 . IsLargerWithDecimalPlaces ( - max , - _d oublePrecision . Magnitude ( ) ) ) ;
}
@ -934,23 +1037,21 @@ namespace MathNet.Numerics.UnitTests
Assert . IsFalse ( double . PositiveInfinity . IsSmallerWithDecimalPlaces ( double . PositiveInfinity , 2 ) ) ;
Assert . IsFalse ( double . NegativeInfinity . IsSmallerWithDecimalPlaces ( double . NegativeInfinity , 2 ) ) ;
Assert . IsFalse ( 1.0 . IsSmallerWithDecimalPlaces ( 1.04 , 2 ) ) ;
Assert . IsFalse ( 1.0 . IsSmallerWithDecimalPlaces ( 0.96 , 2 ) ) ;
Assert . IsTrue ( 1.0 . IsSmallerWithDecimalPlaces ( 1.06 , 2 ) ) ;
Assert . IsFalse ( 1.0 . IsSmallerWithDecimalPlaces ( 0.94 , 2 ) ) ;
Assert . IsFalse ( 1 0 0.0 . IsSmallerWithDecimalPlaces ( 1 0 4.00 , 2 ) ) ;
Assert . IsFalse ( 1 0 0.0 . IsSmallerWithDecimalPlaces ( 9 6.000 , 2 ) ) ;
Assert . IsTrue ( 1.0 . IsSmallerWithDecimalPlaces ( 1.006 , 2 ) ) ;
Assert . IsFalse ( 1.0 . IsSmallerWithDecimalPlaces ( 1.004 , 2 ) ) ;
Assert . IsFalse ( 1.0 . IsSmallerWithDecimalPlaces ( 0.996 , 2 ) ) ;
Assert . IsFalse ( 1.0 . IsSmallerWithDecimalPlaces ( 0.994 , 2 ) ) ;
Assert . IsTrue ( 1 0 0.0 . IsSmallerWithDecimalPlaces ( 1 0 6.00 , 2 ) ) ;
Assert . IsFalse ( 1 0 0.0 . IsSmallerWithDecimalPlaces ( 9 4.000 , 2 ) ) ;
Assert . IsTrue ( 1 0 0.0 . IsSmallerWithDecimalPlaces ( 1 0 0.6 , 2 ) ) ;
Assert . IsFalse ( 1 0 0.0 . IsSmallerWithDecimalPlaces ( 1 0 0.4 , 2 ) ) ;
Assert . IsFalse ( 1 0 0.0 . IsSmallerWithDecimalPlaces ( 9 9.6 , 2 ) ) ;
Assert . IsFalse ( 1 0 0.0 . IsSmallerWithDecimalPlaces ( 9 9.4 , 2 ) ) ;
var max = 4 * Math . Pow ( 1 0 , _d oublePrecision . Magnitude ( ) ) ;
var max = 0. 4 * Math . Pow ( 1 0 , _d oublePrecision . Magnitude ( ) ) ;
Assert . IsFalse ( 0.0 . IsSmallerWithDecimalPlaces ( max , - _d oublePrecision . Magnitude ( ) ) ) ;
Assert . IsFalse ( 0.0 . IsSmallerWithDecimalPlaces ( - max , - _d oublePrecision . Magnitude ( ) ) ) ;
max = 6 * Math . Pow ( 1 0 , _d oublePrecision . Magnitude ( ) ) ;
max = 0. 6 * Math . Pow ( 1 0 , _d oublePrecision . Magnitude ( ) ) ;
Assert . IsTrue ( 0.0 . IsSmallerWithDecimalPlaces ( max , - _d oublePrecision . Magnitude ( ) ) ) ;
Assert . IsFalse ( 0.0 . IsSmallerWithDecimalPlaces ( - max , - _d oublePrecision . Magnitude ( ) ) ) ;
}
@ -1084,22 +1185,22 @@ namespace MathNet.Numerics.UnitTests
Assert . AreEqual ( 0 , Precision . CompareToInDecimalPlaces ( 0 , - 0 , Precision . NumberOfDecimalPlacesForFloats ) ) ;
// compare two nearby numbers
Assert . AreEqual ( - 1 , 1.0 . CompareToInDecimalPlaces ( 1.0 + ( 1 0 * _d oublePrecision ) , Precision . NumberOfDecimalPlacesForDoubles ) ) ;
Assert . AreEqual ( - 1 , 1.0 . CompareToInDecimalPlaces ( 1.0 + 1 0 * _d oublePrecision , Precision . NumberOfDecimalPlacesForDoubles ) ) ;
Assert . AreEqual ( 0 , 1.0 . CompareToInDecimalPlaces ( 1.0 + _d oublePrecision , Precision . NumberOfDecimalPlacesForDoubles ) ) ;
Assert . AreEqual ( 0 , 1.0 . CompareToInDecimalPlaces ( 1.0 - _d oublePrecision , Precision . NumberOfDecimalPlacesForDoubles ) ) ;
Assert . AreEqual ( 1 , 1.0 . CompareToInDecimalPlaces ( 1.0 - ( 1 0 * _d oublePrecision ) , Precision . NumberOfDecimalPlacesForDoubles ) ) ;
Assert . AreEqual ( 1 , 1.0 . CompareToInDecimalPlaces ( 1.0 - 1 0 * _d oublePrecision , Precision . NumberOfDecimalPlacesForDoubles ) ) ;
// compare with the two numbers reversed in compare order
Assert . AreEqual ( 1 , ( 1.0 + ( 1 0 * _d oublePrecision ) ) . CompareToInDecimalPlaces ( 1.0 , Precision . NumberOfDecimalPlacesForDoubles ) ) ;
Assert . AreEqual ( 1 , ( 1.0 + 1 0 * _d oublePrecision ) . CompareToInDecimalPlaces ( 1.0 , Precision . NumberOfDecimalPlacesForDoubles ) ) ;
Assert . AreEqual ( 0 , ( 1.0 + _d oublePrecision ) . CompareToInDecimalPlaces ( 1.0 , Precision . NumberOfDecimalPlacesForDoubles ) ) ;
Assert . AreEqual ( 0 , ( 1.0 - _d oublePrecision ) . CompareToInDecimalPlaces ( 1.0 , Precision . NumberOfDecimalPlacesForDoubles ) ) ;
Assert . AreEqual ( - 1 , ( 1.0 - ( 1 0 * _d oublePrecision ) ) . CompareToInDecimalPlaces ( 1.0 , Precision . NumberOfDecimalPlacesForDoubles ) ) ;
Assert . AreEqual ( - 1 , ( 1.0 - 1 0 * _d oublePrecision ) . CompareToInDecimalPlaces ( 1.0 , Precision . NumberOfDecimalPlacesForDoubles ) ) ;
// compare two slightly more different numbers
Assert . AreEqual ( - 1 , 1.0 . CompareToInDecimalPlaces ( 1.0 + ( 5 0 * _d oublePrecision ) , Precision . NumberOfDecimalPlacesForDoubles ) ) ;
Assert . AreEqual ( 0 , 1.0 . CompareToInDecimalPlaces ( 1.0 + ( 5 0 * _d oublePrecision ) , Precision . NumberOfDecimalPlacesForDoubles - 2 ) ) ;
Assert . AreEqual ( 0 , 1.0 . CompareToInDecimalPlaces ( 1.0 - ( 5 0 * _d oublePrecision ) , Precision . NumberOfDecimalPlacesForDoubles - 2 ) ) ;
Assert . AreEqual ( 1 , 1.0 . CompareToInDecimalPlaces ( 1.0 - ( 5 0 * _d oublePrecision ) , Precision . NumberOfDecimalPlacesForDoubles ) ) ;
Assert . AreEqual ( - 1 , 1.0 . CompareToInDecimalPlaces ( 1.0 + ( 5 0 * _d oublePrecision ) , Precision . NumberOfDecimalPlacesForDoubles ) ) ;
Assert . AreEqual ( 0 , 1.0 . CompareToInDecimalPlaces ( 1.0 + ( 5 0 * _d oublePrecision ) , Precision . NumberOfDecimalPlacesForDoubles - 2 ) ) ;
Assert . AreEqual ( 0 , 1.0 . CompareToInDecimalPlaces ( 1.0 - ( 5 0 * _d oublePrecision ) , Precision . NumberOfDecimalPlacesForDoubles - 2 ) ) ;
Assert . AreEqual ( 1 , 1.0 . CompareToInDecimalPlaces ( 1.0 - ( 5 0 * _d oublePrecision ) , Precision . NumberOfDecimalPlacesForDoubles ) ) ;
// compare different numbers
Assert . AreEqual ( 1 , 2.0 . CompareToInDecimalPlaces ( 1.0 , Precision . NumberOfDecimalPlacesForDoubles ) ) ;