namespace Just.PreciseMath.Tests.SanityChecks; public class DoubleDoubleSubtractionChecks { public static IEnumerable> ReferenceCases => [ (new DoubleDouble(2.0), new DoubleDouble(1.0), new DoubleDouble(1.0)), (new DoubleDouble(1.0), new DoubleDouble(2.0), new DoubleDouble(-1.0)), (new DoubleDouble(3.75), new DoubleDouble(2.5), new DoubleDouble(1.25)), (new DoubleDouble(2.5), new DoubleDouble(3.75), new DoubleDouble(-1.25)), (new DoubleDouble(65536.0), new DoubleDouble(1.0), new DoubleDouble(65535.0)), (new DoubleDouble(65536.0), new DoubleDouble(65535.0), new DoubleDouble(1.0)), (DoubleDouble.Parse("812563124576179134673", System.Globalization.CultureInfo.InvariantCulture), new DoubleDouble(127.0), DoubleDouble.Parse("812563124576179134546", System.Globalization.CultureInfo.InvariantCulture)), (DoubleDouble.Parse("812563124576179134546", System.Globalization.CultureInfo.InvariantCulture), new DoubleDouble(127.0), DoubleDouble.Parse("812563124576179134419", System.Globalization.CultureInfo.InvariantCulture)), (DoubleDouble.Parse("812563124576179134546", System.Globalization.CultureInfo.InvariantCulture), DoubleDouble.Parse("812563124576179134504", System.Globalization.CultureInfo.InvariantCulture), new DoubleDouble(42.0)), (DoubleDouble.Parse("812563124576179134546", System.Globalization.CultureInfo.InvariantCulture), new DoubleDouble(0.5), DoubleDouble.Parse("812563124576179134545.5", System.Globalization.CultureInfo.InvariantCulture)), (DoubleDouble.Parse("812563124576179134546", System.Globalization.CultureInfo.InvariantCulture), DoubleDouble.Parse("812563124576179134546", System.Globalization.CultureInfo.InvariantCulture), new DoubleDouble(0.0)), ]; [Theory] [MemberData(nameof(ReferenceCases))] public void SubtractionShouldProduceExpectedResults(DoubleDouble left, DoubleDouble right, DoubleDouble expected) { DoubleDouble result = left - right; result.High.ShouldBe(expected.High); result.Low.ShouldBe(expected.Low); result.ShouldBe(expected); } }