namespace Just.PreciseMath.Tests.SanityChecks; public class DoubleDoubleMultiplicationChecks { public static IEnumerable> ReferenceCases => [ (new DoubleDouble(1.0), new DoubleDouble(1.0), new DoubleDouble(1.0)), (new DoubleDouble(2.0), new DoubleDouble(3.0), new DoubleDouble(6.0)), (new DoubleDouble(1.25), new DoubleDouble(2.5), new DoubleDouble(3.125)), (new DoubleDouble(-1.25), new DoubleDouble(2.5), new DoubleDouble(-3.125)), (new DoubleDouble(65535.0), new DoubleDouble(65536.0), new DoubleDouble(4294901760.0)), (new DoubleDouble(65536.0), new DoubleDouble(65536.0), new DoubleDouble(4294967296.0)), (DoubleDouble.Parse("812563124576179134546", System.Globalization.CultureInfo.InvariantCulture), new DoubleDouble(2.0), DoubleDouble.Parse("1625126249152358269092", System.Globalization.CultureInfo.InvariantCulture)), (DoubleDouble.Parse("812563124576179134546", System.Globalization.CultureInfo.InvariantCulture), new DoubleDouble(0.5), DoubleDouble.Parse("406281562288089567273", System.Globalization.CultureInfo.InvariantCulture)), (DoubleDouble.Parse("812563124576179134546", System.Globalization.CultureInfo.InvariantCulture), new DoubleDouble(27.0), DoubleDouble.Parse("21939204363556836632742", System.Globalization.CultureInfo.InvariantCulture)), (DoubleDouble.Parse("812563124576179134546", System.Globalization.CultureInfo.InvariantCulture), new DoubleDouble(127.0), DoubleDouble.Parse("103195516821174750087342", System.Globalization.CultureInfo.InvariantCulture)), ]; [Theory] [MemberData(nameof(ReferenceCases))] public void MultiplicationShouldProduceExpectedResults(DoubleDouble left, DoubleDouble right, DoubleDouble expected) { DoubleDouble result = left * right; result.High.ShouldBe(expected.High); result.Low.ShouldBe(expected.Low); result.ShouldBe(expected); } }