Esempio n. 1
0
        static void Main(string[] args)
        {
            //Run().Wait();
            mpf_t x = -1;

            Console.WriteLine(x.ToString());
            x *= x;
            Console.WriteLine(x.ToString());
        }
Esempio n. 2
0
        public void BasicSqrt()
        {
            string AsString;

            using mpf_t a = new mpf_t("22250983250345029834502983.5740293845720");
            AsString      = a.ToString();
            Assert.AreEqual("2.22509832503450298345E+25", AsString);

            using mpf_t b = a.Sqrt();

            AsString = b.ToString();
            Assert.AreEqual("4.71709478920500704353E+12", AsString);
        }
Esempio n. 3
0
        public void AddUint()
        {
            string AsString;

            using mpf_t a = new mpf_t("22250983250345029834502983.5740293845720");
            AsString      = a.ToString();
            Assert.AreEqual("2.22509832503450298345E+25", AsString);

            uint b = 98873014;

            using mpf_t c = a + b;

            AsString = c.ToString();
            Assert.AreEqual("2.22509832503450299334E+25", AsString);
        }
Esempio n. 4
0
        public void MulIntNegative()
        {
            string AsString;

            using mpf_t a = new mpf_t("22250983250345029834502983.5740293845720");
            AsString      = a.ToString();
            Assert.AreEqual("2.22509832503450298345E+25", AsString);

            int b = -98873014;

            using mpf_t c = a * b;

            AsString = c.ToString();
            Assert.AreEqual("-2.20002177842512963966E+33", AsString);
        }
Esempio n. 5
0
        public void AddIntNegative()
        {
            string AsString;

            using mpf_t a = new mpf_t("22250983250345029834502983.5740293845720");
            AsString      = a.ToString();
            Assert.AreEqual("2.22509832503450298345E+25", AsString);

            int b = -98873014;

            using mpf_t c = a + b;

            AsString = c.ToString();
            Assert.AreEqual("2.22509832503450297356E+25", AsString);
        }
Esempio n. 6
0
        public void DivIntNegative()
        {
            string AsString;

            using mpf_t a = new mpf_t("22250983250345029834502983.5740293845720");
            AsString      = a.ToString();
            Assert.AreEqual("2.22509832503450298345E+25", AsString);

            int b = -98873014;

            using mpf_t c = a / b;

            AsString = c.ToString();
            Assert.AreEqual("-2.25046070208247417587E+17", AsString);
        }
Esempio n. 7
0
        public void UintDiv()
        {
            string AsString;

            using mpf_t a = new mpf_t("22250983250345029834502983.5740293845720");
            AsString      = a.ToString();
            Assert.AreEqual("2.22509832503450298345E+25", AsString);

            uint b = 98873014;

            using mpf_t c = b / a;

            AsString = c.ToString();
            Assert.AreEqual("4.44353460193570762729E-18", AsString);
        }
Esempio n. 8
0
        public void UintSub()
        {
            string AsString;

            using mpf_t a = new mpf_t("22250983250345029834502983.5740293845720");
            AsString      = a.ToString();
            Assert.AreEqual("2.22509832503450298345E+25", AsString);

            uint b = 98873014;

            using mpf_t c = b - a;

            AsString = c.ToString();
            Assert.AreEqual("-2.22509832503450297356E+25", AsString);
        }
Esempio n. 9
0
        public void BasicPow()
        {
            string AsString;

            using mpf_t a = new mpf_t("22250983250345029834502983.5740293845720");
            AsString      = a.ToString();
            Assert.AreEqual("2.22509832503450298345E+25", AsString);

            uint b = 89;

            using mpf_t c = a.Pow(b);

            AsString = c.ToString();
            Assert.AreEqual("8.20501550859436020769E+2255", AsString);
        }
Esempio n. 10
0
        public void LeftShift()
        {
            string AsString;

            using mpf_t a = new mpf_t("22250983250345029834502983.5740293845720");
            AsString      = a.ToString();
            Assert.AreEqual("2.22509832503450298345E+25", AsString);

            int b = 50;

            using mpf_t c = a << b;

            AsString = c.ToString();
            Assert.AreEqual("2.50523799687202560686E+40", AsString);
        }
Esempio n. 11
0
        public void RightShift()
        {
            string AsString;

            using mpf_t a = new mpf_t("22250983250345029834502983.5740293845720");
            AsString      = a.ToString();
            Assert.AreEqual("2.22509832503450298345E+25", AsString);

            int b = 50;

            using mpf_t c = a >> b;

            AsString = c.ToString();
            Assert.AreEqual("1.97628431400654046208E+10", AsString);
        }
Esempio n. 12
0
        public void DivOperator()
        {
            string AsString;

            using mpf_t a = new mpf_t("22250983250345029834502983.5740293845720");
            AsString      = a.ToString();
            Assert.AreEqual("2.22509832503450298345E+25", AsString);

            using mpf_t b = new mpf_t("2229874359879827.30594288574029879874539");
            AsString      = b.ToString();
            Assert.AreEqual("2.22987435987982730594E+15", AsString);

            using mpf_t c = a / b;

            AsString = c.ToString();
            Assert.AreEqual("9.97858159665290867233E+9", AsString);
        }
Esempio n. 13
0
        public void AddOperator()
        {
            string AsString;

            using mpf_t a = new mpf_t("22250983250345029834502983.5740293845720");
            AsString      = a.ToString();
            Assert.AreEqual("2.22509832503450298345E+25", AsString);

            using mpf_t b = new mpf_t("2229874359879827.30594288574029879874539");
            AsString      = b.ToString();
            Assert.AreEqual("2.22987435987982730594E+15", AsString);

            using mpf_t c = a + b;

            AsString = c.ToString();
            Assert.AreEqual("2.22509832525749041944E+25", AsString);
        }
Esempio n. 14
0
        public void MulOperator()
        {
            string AsString;

            using mpf_t a = new mpf_t("22250983250345029834502983.5740293845720");
            AsString      = a.ToString();
            Assert.AreEqual("2.22509832503450298345E+25", AsString);

            using mpf_t b = new mpf_t("2229874359879827.30594288574029879874539");
            AsString      = b.ToString();
            Assert.AreEqual("2.22987435987982730594E+15", AsString);

            using mpf_t c = a * b;

            AsString = c.ToString();
            Assert.AreEqual("4.96168970320598825788E+40", AsString);
        }
Esempio n. 15
0
        public void BasicSub()
        {
            string AsString;

            using mpf_t a = new mpf_t("22250983250345029834502983.5740293845720");
            AsString      = a.ToString();
            Assert.AreEqual("2.22509832503450298345E+25", AsString);

            using mpf_t b = new mpf_t("2229874359879827.30594288574029879874539");
            AsString      = b.ToString();
            Assert.AreEqual("2.22987435987982730594E+15", AsString);

            using mpf_t c = new();
            mpf.sub(c, a, b);

            AsString = c.ToString();
            Assert.AreEqual("2.22509832481151554746E+25", AsString);
        }
Esempio n. 16
0
        public void Rounding()
        {
            string AsString;

            using mpf_t a = new mpf_t("2983.5740293845720");
            AsString      = a.ToString();
            Assert.AreEqual("2.983574029384572E+3", AsString);

            using mpf_t b = a.Ceil();
            AsString      = b.ToString();
            Assert.AreEqual("2.984E+3", AsString);

            using mpf_t c = a.Floor();
            AsString      = c.ToString();
            Assert.AreEqual("2.983E+3", AsString);

            using mpf_t d = a.Trunc();
            AsString      = d.ToString();
            Assert.AreEqual("2.983E+3", AsString);
        }
Esempio n. 17
0
        public void IsEqual()
        {
            string AsString;
            bool   IsEqualTo;
            bool   IsDifferentThan;

            using mpf_t a = new mpf_t("22250983250345029834502983.5740293845720");
            AsString      = a.ToString();
            Assert.AreEqual("2.22509832503450298345E+25", AsString);

            using mpf_t b = new mpf_t("2229874359879827.30594288574029879874539");
            AsString      = b.ToString();
            Assert.AreEqual("2.22987435987982730594E+15", AsString);

            using mpf_t c = a;

            IsEqualTo = a == c;
            Assert.IsTrue(IsEqualTo);

            IsDifferentThan = a != b;
            Assert.IsTrue(IsDifferentThan);
        }
Esempio n. 18
0
        public void LesserThan()
        {
            string AsString;
            bool   IsLesserThan;

            using mpf_t a = new mpf_t("-22250983250345029834502983.5740293845720");
            AsString      = a.ToString();
            Assert.AreEqual("-2.22509832503450298345E+25", AsString);

            using mpf_t b = new mpf_t("2229874359879827.30594288574029879874539");
            AsString      = b.ToString();
            Assert.AreEqual("2.22987435987982730594E+15", AsString);

            IsLesserThan = a < b;
            Assert.IsTrue(IsLesserThan);

            IsLesserThan = mpf.cmp_si(a, -1922215141) < 0;
            Assert.IsTrue(IsLesserThan);

            double d = 2e5;

            IsLesserThan = d < b;
            Assert.IsTrue(IsLesserThan);

            int e = -10;

            IsLesserThan = e < b;
            Assert.IsTrue(IsLesserThan);

            int f = -10;

            IsLesserThan = f < b;
            Assert.IsTrue(IsLesserThan);

            float g = 2e5F;

            IsLesserThan = g < b;
            Assert.IsTrue(IsLesserThan);
        }
Esempio n. 19
0
        public void GreaterThan()
        {
            string AsString;
            bool   IsGreaterThan;

            using mpf_t a = new mpf_t("22250983250345029834502983.5740293845720");
            AsString      = a.ToString();
            Assert.AreEqual("2.22509832503450298345E+25", AsString);

            using mpf_t b = new mpf_t("2229874359879827.30594288574029879874539");
            AsString      = b.ToString();
            Assert.AreEqual("2.22987435987982730594E+15", AsString);

            IsGreaterThan = a > b;
            Assert.IsTrue(IsGreaterThan);

            IsGreaterThan = mpf.cmp_ui(a, 1922215141) > 0;
            Assert.IsTrue(IsGreaterThan);

            double d = 2e25;

            IsGreaterThan = a > d;
            Assert.IsTrue(IsGreaterThan);

            int e = -10;

            IsGreaterThan = a > e;
            Assert.IsTrue(IsGreaterThan);

            uint f = 10;

            IsGreaterThan = a > f;
            Assert.IsTrue(IsGreaterThan);

            float g = 2e25F;

            IsGreaterThan = a > g;
            Assert.IsTrue(IsGreaterThan);
        }
Esempio n. 20
0
        public void GreaterEqual()
        {
            string AsString;
            bool   IsGreaterThan;

            Assert.IsTrue(mpfr_t.LiveObjectCount() == 0);

            using mpfr_t a = new mpfr_t("22250983250345029834502983.5740293845720");
            AsString       = a.ToString();
            Assert.AreEqual("2.225098325034502799228928E+25", AsString);

            using mpfr_t b = new mpfr_t("2229874359879827.30594288574029879874539");
            AsString       = b.ToString();
            Assert.AreEqual("2.22987435987982725E+15", AsString);

            IsGreaterThan = a >= b;
            Assert.IsTrue(IsGreaterThan);

            IsGreaterThan = b >= a;
            Assert.IsFalse(IsGreaterThan);

            IsGreaterThan = a >= 1UL;
            Assert.IsTrue(IsGreaterThan);

            IsGreaterThan = 1UL >= a;
            Assert.IsFalse(IsGreaterThan);

            IsGreaterThan = a >= 1L;
            Assert.IsTrue(IsGreaterThan);

            IsGreaterThan = 1L >= a;
            Assert.IsFalse(IsGreaterThan);

            IsGreaterThan = a >= 1.0;
            Assert.IsTrue(IsGreaterThan);

            IsGreaterThan = 1.0 >= a;
            Assert.IsFalse(IsGreaterThan);

            using mpz_t c = new mpz_t("222509832503450298345029");
            AsString      = c.ToString();
            Assert.AreEqual("222509832503450298345029", AsString);

            IsGreaterThan = a >= c;
            Assert.IsTrue(IsGreaterThan);

            IsGreaterThan = c >= a;
            Assert.IsFalse(IsGreaterThan);

            using mpq_t d = new mpq_t("222509832503450298345029835740293845720/115756986668303657898962467957");
            AsString      = d.ToString();
            Assert.AreEqual("222509832503450298345029835740293845720/115756986668303657898962467957", AsString);

            IsGreaterThan = a >= d;
            Assert.IsTrue(IsGreaterThan);

            IsGreaterThan = d >= a;
            Assert.IsFalse(IsGreaterThan);

            using mpf_t e = new mpf_t("222583250345029834502983.5");
            AsString      = e.ToString();
            Assert.AreEqual("2.22583250345029834503E+23", AsString);

            IsGreaterThan = a >= e;
            Assert.IsTrue(IsGreaterThan);

            IsGreaterThan = e >= a;
            Assert.IsFalse(IsGreaterThan);
        }
Esempio n. 21
0
        public void Different()
        {
            string AsString;
            bool   IsEqualTo;

            Assert.IsTrue(mpfr_t.LiveObjectCount() == 0);

            using mpfr_t a = new mpfr_t("22250983250345029834502983.5740293845720");
            AsString       = a.ToString();
            Assert.AreEqual("2.225098325034502799228928E+25", AsString);

            using mpfr_t b = new mpfr_t("2229874359879827.30594288574029879874539");
            AsString       = b.ToString();
            Assert.AreEqual("2.22987435987982725E+15", AsString);

            IsEqualTo = a != b;
            Assert.IsTrue(IsEqualTo);

            IsEqualTo = b != a;
            Assert.IsTrue(IsEqualTo);

            IsEqualTo = a != 1UL;
            Assert.IsTrue(IsEqualTo);

            IsEqualTo = 1UL != a;
            Assert.IsTrue(IsEqualTo);

            IsEqualTo = a != 1L;
            Assert.IsTrue(IsEqualTo);

            IsEqualTo = 1L != a;
            Assert.IsTrue(IsEqualTo);

            IsEqualTo = a != 1.0;
            Assert.IsTrue(IsEqualTo);

            IsEqualTo = 1.0 != a;
            Assert.IsTrue(IsEqualTo);

            using mpz_t c = new mpz_t("222509832503450298345029");
            AsString      = c.ToString();
            Assert.AreEqual("222509832503450298345029", AsString);

            IsEqualTo = a != c;
            Assert.IsTrue(IsEqualTo);

            IsEqualTo = c != a;
            Assert.IsTrue(IsEqualTo);

            using mpq_t d = new mpq_t("222509832503450298345029835740293845720/115756986668303657898962467957");
            AsString      = d.ToString();
            Assert.AreEqual("222509832503450298345029835740293845720/115756986668303657898962467957", AsString);

            IsEqualTo = a != d;
            Assert.IsTrue(IsEqualTo);

            IsEqualTo = d != a;
            Assert.IsTrue(IsEqualTo);

            using mpf_t e = new mpf_t("222583250345029834502983.5");
            AsString      = e.ToString();
            Assert.AreEqual("2.22583250345029834503E+23", AsString);

            IsEqualTo = a != e;
            Assert.IsTrue(IsEqualTo);

            IsEqualTo = e != a;
            Assert.IsTrue(IsEqualTo);
        }
Esempio n. 22
0
        public void GreaterThan()
        {
            string AsString;
            bool   IsGreaterThan;

            Assert.IsTrue(mpfr_t.LiveObjectCount() == 0);

            ulong DefaultPrecision = mpfr_t.DefaultPrecision;

            mpfr_t.DefaultPrecision = 128;

            using mpfr_t a = new mpfr_t("8720124937520142.5");
            AsString       = a.ToString();
            Assert.AreEqual("8.7201249375201425E+15", AsString);

            using mpfr_t b = new mpfr_t("22298.125");
            AsString       = b.ToString();
            Assert.AreEqual("2.2298125E+4", AsString);

            IsGreaterThan = a > b;
            Assert.IsTrue(IsGreaterThan);

            IsGreaterThan = b > a;
            Assert.IsFalse(IsGreaterThan);

            IsGreaterThan = a > 8720124937520142UL;
            Assert.IsTrue(IsGreaterThan);

            IsGreaterThan = a > 8720124937520143UL;
            Assert.IsFalse(IsGreaterThan);

            IsGreaterThan = 8720124937520142UL > a;
            Assert.IsFalse(IsGreaterThan);

            IsGreaterThan = 8720124937520143UL > a;
            Assert.IsTrue(IsGreaterThan);

            IsGreaterThan = a > 8720124937520142L;
            Assert.IsTrue(IsGreaterThan);

            IsGreaterThan = a > 8720124937520143L;
            Assert.IsFalse(IsGreaterThan);

            IsGreaterThan = 8720124937520142L > a;
            Assert.IsFalse(IsGreaterThan);

            IsGreaterThan = 8720124937520143L > a;
            Assert.IsTrue(IsGreaterThan);

            IsGreaterThan = a > 8720124937520142.1;
            Assert.IsTrue(IsGreaterThan);

            IsGreaterThan = 8720124937520142.9 > a;
            Assert.IsTrue(IsGreaterThan);

            using mpz_t c = new mpz_t("1720124937520142");
            AsString      = c.ToString();
            Assert.AreEqual("1720124937520142", AsString);

            IsGreaterThan = a > c;
            Assert.IsTrue(IsGreaterThan);

            IsGreaterThan = c > a;
            Assert.IsFalse(IsGreaterThan);

            using mpq_t d = new mpq_t("222509832503450298345029835740293845720/115756986668303657898962467957");
            AsString      = d.ToString();
            Assert.AreEqual("222509832503450298345029835740293845720/115756986668303657898962467957", AsString);

            IsGreaterThan = a > d;
            Assert.IsTrue(IsGreaterThan);

            IsGreaterThan = d > a;
            Assert.IsFalse(IsGreaterThan);

            using mpf_t e = new mpf_t("8720124937520142.1");
            AsString      = e.ToString();
            Assert.AreEqual("8.7201249375201421E+15", AsString);

            IsGreaterThan = a > e;
            Assert.IsTrue(IsGreaterThan);

            IsGreaterThan = e > a;
            Assert.IsFalse(IsGreaterThan);

            mpfr_t.DefaultPrecision = DefaultPrecision;
        }
Esempio n. 23
0
        public void Create()
        {
            string AsString;

            using mpf_t a = new mpf_t();
            AsString      = a.ToString();
            Assert.AreEqual("0", AsString);

            Assert.IsTrue(a.IsInteger);
            Assert.IsTrue(a.Sign == 0);

            ulong DefaultPrecision = mpf.get_default_prec();

            Assert.AreEqual(DefaultPrecision, 64UL);
            Assert.AreEqual(a.Precision, DefaultPrecision);

            using mpf_t b = new mpf_t(10U);
            AsString      = b.ToString();
            Assert.AreEqual("1E+1", AsString);

            Assert.AreEqual((uint)b, 10U);

            using mpf_t c = new mpf_t(-10);
            AsString      = c.ToString();
            Assert.AreEqual("-1E+1", AsString);

            Assert.AreEqual((int)c, -10);

            using mpf_t d = new mpf_t(10U, DefaultPrecision);
            AsString      = d.ToString();
            Assert.AreEqual("1E+1", AsString);

            using mpf_t e = new mpf_t(-10, DefaultPrecision);
            AsString      = e.ToString();
            Assert.AreEqual("-1E+1", AsString);

            using mpf_t f = new mpf_t(50.2);
            AsString      = f.ToString();
            Assert.AreEqual("5.02000000000000028422E+1", AsString);

            Assert.AreEqual((double)f, 50.2);

            using mpf_t g = new mpf_t(50.2, DefaultPrecision + 64);
            AsString      = g.ToString();
            Assert.AreEqual("5.02000000000000028421709430404007434845E+1", AsString);

            Assert.AreEqual(g.Precision, DefaultPrecision + 64);

            using mpf_t h = new mpf_t("2225098325034502983450298.3574029384572");
            AsString      = h.ToString();
            Assert.AreEqual("2.22509832503450298345E+24", AsString);

            using mpf_t i = new mpf_t("2225098325034502983450298.3574029384572", 10, 200);
            AsString      = i.ToString();
            Assert.AreEqual("2.2250983250345029834502983574029384572E+24", AsString);

            using mpf_t j = new mpf_t(i);
            AsString      = j.ToString();
            Assert.AreEqual("2.2250983250345029834502983574029384572E+24", AsString);

            using mpf_t k = new mpf_t(i, true);
            AsString      = k.ToString();
            Assert.AreEqual("2.22509832503450298345E+24", AsString);

            using mpf_t l = -k;
            AsString      = l.ToString();
            Assert.AreEqual("-2.22509832503450298345E+24", AsString);

            using mpf_t m = l.Abs();
            AsString      = m.ToString();
            Assert.AreEqual("2.22509832503450298345E+24", AsString);

            using mpf_t p = new mpf_t("68719476735");
            AsString      = p.ToString();
            Assert.AreEqual("6.8719476735E+10", AsString);
            ulong UlongCast = (ulong)p;

            Assert.AreEqual(UlongCast, 68719476735UL);

            using mpf_t q = new mpf_t("2147483647");
            AsString      = q.ToString();
            Assert.AreEqual("2.147483647E+9", AsString);
            uint UintCast = (uint)q;

            Assert.AreEqual(UintCast, 2147483647U);
        }
Esempio n. 24
0
        public void CreateFrom()
        {
            string AsString;

            Assert.IsTrue(mpfr_t.LiveObjectCount() == 0);

            using mpfr_t NaN = new mpfr_t();
            AsString         = NaN.ToString();
            Assert.AreEqual("@NaN@", AsString);

            using mpfr_t PositiveInfinite = mpfr_t.Infinite();
            AsString = PositiveInfinite.ToString();
            Assert.AreEqual("@Inf@", AsString);

            using mpfr_t NegativeInfinite = mpfr_t.Infinite(-1);
            AsString = NegativeInfinite.ToString();
            Assert.AreEqual("-@Inf@", AsString);

            using mpfr_t Zero = mpfr_t.Zero();
            AsString          = Zero.ToString();
            Assert.AreEqual("0", AsString);

            using mpfr_t NegativeZero = mpfr_t.Zero(-1);
            AsString = NegativeZero.ToString();
            Assert.AreEqual("-0", AsString);

            using mpfr_t b = new mpfr_t(10);
            AsString       = b.ToString();
            Assert.AreEqual("1E+1", AsString);

            using mpfr_t c = new mpfr_t(b);
            AsString       = c.ToString();
            Assert.AreEqual("1E+1", AsString);

            using mpfr_t d = new mpfr_t(100UL);
            AsString       = d.ToString();
            Assert.AreEqual("1E+2", AsString);

            using mpfr_t e = new mpfr_t(-100L);
            AsString       = e.ToString();
            Assert.AreEqual("-1E+2", AsString);

            using mpfr_t f = new mpfr_t(100U);
            AsString       = f.ToString();
            Assert.AreEqual("1E+2", AsString);

            using mpfr_t g = new mpfr_t(200.1F);
            AsString       = g.ToString();
            Assert.AreEqual("2.00100006103515625E+2", AsString);

            using mpfr_t h = new mpfr_t(-200.1);
            AsString       = h.ToString();
            Assert.AreEqual("-2.00099999999999994315658113919198513031005859375E+2", AsString);

            using mpz_t iz = new mpz_t("10123456789ABCDEF0123456789ABCDEF0123456789ABCDEF", 16);
            AsString       = iz.ToString(16).ToUpper();
            Assert.AreEqual("10123456789ABCDEF0123456789ABCDEF0123456789ABCDEF", AsString);

            using mpfr_t i = new mpfr_t(iz);
            AsString       = i.ToString();
            Assert.AreEqual("6.3049999653217328579866181421408313514338742205512312E+57", AsString);

            using mpq_t jq = new mpq_t("222509832503450298345029835740293845720/115756986668303657898962467957");
            AsString       = jq.ToString();
            Assert.AreEqual("222509832503450298345029835740293845720/115756986668303657898962467957", AsString);

            using mpfr_t j = new mpfr_t(jq);
            AsString       = j.ToString();
            Assert.AreEqual("1.9222151414587357044219970703125E+9", AsString);

            using mpf_t kf = new mpf_t("22250983250345029834502983.5740293845720");
            AsString       = kf.ToString();
            Assert.AreEqual("2.22509832503450298345E+25", AsString);

            using mpfr_t k = new mpfr_t(kf);
            AsString       = k.ToString();
            Assert.AreEqual("2.225098325034502799228928E+25", AsString);

            using mpfr_t l = new mpfr_t("22250983250345029834502983.5740293845720");
            AsString       = l.ToString();
            Assert.AreEqual("2.225098325034502799228928E+25", AsString);
        }