public BigNumber Log(int places) { BigNumber dst = new BigNumber(); BigNumber.Log(this, dst, places); return(dst); }
public BigNumber Log() { BigNumber dst = new BigNumber(); BigNumber.Log(this, dst, numDefaultPlaces); return(dst); }
static void Log10(BigNumber src, BigNumber dst, int places) { BigNumber tmp8 = new BigNumber(); BigNumber tmp9 = new BigNumber(); int dplaces = places + 4; BigNumber.CheckLogPlaces(dplaces + 45); BigNumber.Log(src, tmp9, dplaces); BigNumber.Mul(tmp9, BN_lc_log10R, tmp8); BigNumber.Round(tmp8, dst, places); }
static public void Power(BigNumber xx, BigNumber yy, BigNumber rr, int places) { int iflag; BigNumber tmp8 = new BigNumber(); BigNumber tmp9 = new BigNumber(); int M_size_flag = BigNumber.GetSizeofInt(); if (yy.signum == 0) { BigNumber.Copy(BigNumber.One, rr); return; } if (xx.signum == 0) { BigNumber.SetZero(rr); return; } if (BigNumber.IsInteger(yy) > 0) { iflag = 0; if (M_size_flag == 2) /* 16 bit compilers */ { if (yy.exponent <= 4) { iflag = 1; } } else /* >= 32 bit compilers */ { if (yy.exponent <= 7) { iflag = 1; } } if (iflag > 0) { String sbuf = BigNumber.ToIntString(yy); int Exp = Convert.ToInt32(sbuf); BigNumber.IntPow(places, xx, Exp, rr); return; } } tmp8 = new BigNumber(); tmp9 = new BigNumber(); BigNumber.Log(xx, tmp9, (places + 8)); BigNumber.Mul(tmp9, yy, tmp8); BigNumber.Exp(tmp8, rr, places); }
public static void DoTest() { BigNumber A = 0, B = 0, C = 0; BigNumber PI = new BigNumber(); // assignment by string A = "12345"; Console.WriteLine("assigned value was: " + A.ToFullString() + "(" + A.ToString() + ")"); // assignment from hexadecimal string A = "0xff"; Console.WriteLine("assigned value was: " + A.ToFullString() + "(" + A.ToString() + ")"); A = "0x1ff"; Console.WriteLine("assigned value was: " + A.ToFullString() + "(" + A.ToString() + ")"); A = "0x123456789"; Console.WriteLine("assigned value was: " + A.ToFullString() + "(" + A.ToString() + ")"); A = "0xFeDcBafedcba"; Console.WriteLine("assigned value was: " + A.ToFullString() + "(" + A.ToString() + ")"); // assignment from binary string A = "%10001000"; Console.WriteLine("assigned value was: " + A.ToFullString() + "(" + A.ToString() + ")"); A = "%11011011100111000111000111100011010101010101"; Console.WriteLine("assigned value was: " + A.ToFullString() + "(" + A.ToString() + ")"); // assignment by double A = 123.45; B = 0.12345; Console.WriteLine("assigned value was: " + A.ToFullString() + "(" + A.ToString() + ")"); // assignment by string in exponential form x = a*10^y. 10E3 = 10*10^^3 = 10000 A = "10E3"; // 10E3 = 10*10^3 = 10000 B = "1E4"; // 1E4 = 1*10^4 = 10000 C = 10000; Console.WriteLine("assigned value was: " + A.ToFullString() + "(" + A.ToString() + ")"); Console.WriteLine("10000 = " + A.ToFullString() + " = " + B.ToFullString() + " = " + C.ToFullString()); A = 1; B = 2; C = 0; C = A + B; Console.WriteLine("the result of " + A.ToFullString() + "+" + B.ToFullString() + "=" + C.ToFullString()); // addition of BigNumber + double C = A + 3.2; // addition of double + BigNumber C = 3.1 + B; A = "5.141592"; B = "2.91827"; C = A - B; Console.WriteLine("the result of " + A.ToFullString() + "-" + B.ToFullString() + "=" + C.ToFullString()); C = A * B; Console.WriteLine("the result of " + A.ToFullString() + "*" + B.ToFullString() + "=" + C.ToFullString()); A = 5.0; B = 3.0; C = A * B; Console.WriteLine("the result of " + A.ToFullString() + "*" + B.ToFullString() + "=" + C.ToFullString()); A = 4; B = 0.5; C = A.Pow(B); Console.WriteLine("the result of " + A.ToFullString() + " pow " + B.ToFullString() + "=" + C.ToFullString()); A = 0.5; B = "5E-1"; C = A.Pow(B, 16); Console.WriteLine("the result of " + A.ToFullString() + " pow " + B.ToFullString() + "=" + C.ToFullString()); A = "1e3"; // "10E2"; // "1E3 = 1000"; C = A.Log10(); Console.WriteLine("the result of " + A.ToFullString() + " Log10 =" + C.ToFullString()); A = "10E3"; B = "1E4"; C = 10000; A = BigNumber.BN_E; C = A.Log(); Console.WriteLine("the result of " + A.ToString() + " Log =" + C.ToFullString()); A = 3.0; C = A.Rez(); Console.WriteLine("the result of " + A.ToString() + " Rez =" + C.ToFullString()); int NumPlaces = 4; A = 1.53456; C = A.Round(NumPlaces); Console.WriteLine("the result of " + A.ToString() + " Round(" + NumPlaces + ") =" + C.ToFullString()); NumPlaces = 2; C = A.Round(NumPlaces); Console.WriteLine("the result of " + A.ToString() + " Round(" + NumPlaces + ") =" + C.ToFullString()); NumPlaces = 0; C = A.Round(NumPlaces); Console.WriteLine("the result of " + A.ToString() + " Round(" + NumPlaces + ") =" + C.ToFullString()); NumPlaces = 16; A = 2.0; C = A.Sqrt(NumPlaces); Console.WriteLine("the result of " + A.ToString() + " Sqrt(" + NumPlaces + ") =" + C.ToFullString()); A = 1.0; B = 0; try { C = A / B; } catch (BigNumberException ex) { Console.WriteLine("Exception in operation: " + ex.Message); } A = 1.0; for (int i = 1; i <= 1000; i++) { A = A * i; } Console.WriteLine("the result of 1000!=" + A.ToFullString()); A = A.Round(numDefaultPlaces); Console.WriteLine("the result of 1000!=" + A.ToString()); DateTime before = DateTime.Now; NumPlaces = 5000; CalculatePiAGM(PI, NumPlaces); TimeSpan ts = DateTime.Now - before; Console.WriteLine("time for " + NumPlaces + " digits of PI: " + ts.TotalMilliseconds + "[ms]"); Console.WriteLine(PI.ToFullString()); Console.WriteLine("Press 'x' key to quit test"); //while (true) //{ // ConsoleKeyInfo i = Console.ReadKey(); // if (i.KeyChar == 'x') break; //} }