public void RationalCompareToHugeInt() { using (var a = new HugeRational("-222509832503450298345029835740293845721/115756986668303657898962467957")) using (var b = new HugeInt("115756986668303657898962467957")) using (var c = new HugeRational("115756986668303657898962467957/1")) using (var d = new HugeInt(1922215141)) { Assert.AreEqual(-1, System.Math.Sign(a.CompareTo(d))); Assert.AreEqual(1, System.Math.Sign((-a).CompareTo(d))); Assert.AreEqual(-1, System.Math.Sign((-a).CompareTo(d + 1))); Assert.AreEqual(1, System.Math.Sign(d.CompareTo(a))); Assert.AreEqual(-1, System.Math.Sign(d.CompareTo(-a))); Assert.AreEqual(1, System.Math.Sign((d + 1).CompareTo(-a))); Assert.AreEqual(0, System.Math.Sign(b.CompareTo(c))); Assert.AreEqual(0, System.Math.Sign(c.CompareTo(b))); Assert.AreEqual(0, System.Math.Sign((-b).CompareTo(-c))); Assert.AreEqual(0, System.Math.Sign((-c).CompareTo(-b))); Assert.AreEqual(1, System.Math.Sign(b.CompareTo(c - 1))); Assert.AreEqual(1, System.Math.Sign(c.CompareTo(b - 1))); Assert.AreEqual(-1, System.Math.Sign((-b).CompareTo(1 - c))); Assert.AreEqual(-1, System.Math.Sign((-c).CompareTo(1 - b))); } }
public void IntCompareToLimb() { using (var a = new HugeInt("-222509821")) { var b = Platform.Ui(222509820, 222509820); Assert.AreEqual(-1, System.Math.Sign(a.CompareTo(b))); Assert.AreEqual(-1, System.Math.Sign(a.CompareTo(b + 1))); Assert.AreEqual(0, System.Math.Sign((-(a + 1)).CompareTo(b))); Assert.AreEqual(1, System.Math.Sign((-a).CompareTo(b))); } }
public void IntCompareToHugeInt() { using (var a = new HugeInt("-222509832503450298345029835740293845721")) using (var b = new HugeInt("222509832503450298345029835740293845720")) { Assert.AreEqual(1, System.Math.Sign(b.CompareTo(a))); Assert.AreEqual(-1, System.Math.Sign(a.CompareTo(b + 1))); Assert.AreEqual(0, System.Math.Sign((a + 1).CompareTo(-b))); Assert.AreEqual(1, System.Math.Sign(a.CompareTo(null))); } }
public void IntCompareToSignedLimb() { using (var a = new HugeInt("-222509821")) { var b = Platform.Si(-222509820, -222509820); Assert.AreEqual(-1, System.Math.Sign(a.CompareTo(b))); Assert.AreEqual(-1, System.Math.Sign(a.CompareTo(b + 1))); Assert.AreEqual(0, System.Math.Sign((a + 1).CompareTo(b))); Assert.AreEqual(0, System.Math.Sign(a.CompareTo(b - 1))); Assert.AreEqual(1, System.Math.Sign(a.CompareTo(b - 2))); } }
public void IntCompareToSignedDouble() { using (var a = new HugeInt("-222509821")) { double b = -222509820; Assert.AreEqual(-1, System.Math.Sign(a.CompareTo(b))); Assert.AreEqual(-1, System.Math.Sign(a.CompareTo(b + 1))); Assert.AreEqual(0, System.Math.Sign((a + 1).CompareTo(b))); Assert.AreEqual(0, System.Math.Sign(a.CompareTo(b - 1))); Assert.AreEqual(1, System.Math.Sign(a.CompareTo(b - 1.1))); } }
public void IntCompareToNonExpression() { using (var a = new HugeInt("-222509832503450298345029835740293845721")) { a.CompareTo("abc"); } }
public void IntCompareToHugeFloatExpression() { var previousPrecision = HugeFloat.DefaultPrecision; HugeFloat.DefaultPrecision = 256; using (var a = new HugeInt("-222509832503450298345039835740293845721345345354")) using (var b = new HugeFloat("222509832503450298345039835740293845721345345353")) { Assert.AreEqual(-1, System.Math.Sign(a.CompareTo(b))); Assert.AreEqual(-1, System.Math.Sign(a.CompareTo(-b))); Assert.AreEqual(0, System.Math.Sign(a.CompareTo(-b - 1))); Assert.AreEqual(1, System.Math.Sign(a.CompareTo(-b - 2))); Assert.AreEqual(-1, System.Math.Sign((a + 1).CompareTo(b))); Assert.AreEqual(0, System.Math.Sign((a + 1).CompareTo(-b))); Assert.AreEqual(-1, System.Math.Sign((a + 1).CompareTo(1 - b))); Assert.AreEqual(1, System.Math.Sign((a + 1).CompareTo(-b - 1))); } HugeFloat.DefaultPrecision = previousPrecision; }