private Func <IEnumerable <byte>, IEnumerable <byte>, byte[]> PrepareOperationFunction(Lazy <bool?> firstIsBigger) { //If we have subtraction, change second number sign if (Operation == BigNumber.Operation.Substraction) { m_Reader2.Info.IsNegative = !m_Reader2.Info.IsNegative; } //add numbers if they have the same sign if (m_Reader1.Info.IsNegative == m_Reader2.Info.IsNegative) { m_ResultIsNegative = m_Reader1.Info.IsNegative; return((f1, f2) => BigMath.Add( f1, f2, m_PreviousHasCarry, out m_PreviousHasCarry)); } if (!firstIsBigger.Value.HasValue) { return(null); } //we must use subtract if (firstIsBigger.Value.Value) { m_ResultIsNegative = m_Reader1.Info.IsNegative; return((f1, f2) => BigMath.Subtract(f1, f2, m_PreviousHasBorrow, out m_PreviousHasBorrow)); } else { m_ResultIsNegative = m_Reader2.Info.IsNegative; return((f1, f2) => BigMath.Subtract(f2, f1, m_PreviousHasBorrow, out m_PreviousHasBorrow)); } }
public override async Task <bool> TestAsync(BigInteger source) { var trivialCheck = this.CheckEdgeCases(source); if (trivialCheck.HasValue) { return(trivialCheck.Value); } var sourceSquareRoot = BigMath.SquareRoot(source); var isPrime = true; await Task.Run(() => { for (var i = BigIntegerHelpers.Two; i <= sourceSquareRoot; i = BigInteger.Add(i, BigInteger.One)) { var rem = BigInteger.Remainder(source, i); if (rem != BigInteger.Zero) { continue; } isPrime = false; break; } }); return(isPrime); }
public DoublevsBigDouble() { first = BigMath.RandomBigDouble(100); second = BigMath.RandomBigDouble(100); firstDouble = first.ToDouble(); secondDouble = second.ToDouble(); }
public void AssertFactorialOf15() { string val1 = "15"; string results = BigMath.Factorial(val1); Assert.AreEqual("1307674368000", results); }
public void AssertFactorial() { string val1 = "2"; string results = BigMath.Factorial(val1); Assert.AreEqual("2", results); }
public bool Contains(Point2BR point) { if (point.X > BigMath.Max(this.point2BR_0.X, this.point2BR_1.X) || point.X < BigMath.Min(this.point2BR_0.X, this.point2BR_1.X) || (point.Y > BigMath.Max(this.point2BR_0.Y, this.point2BR_1.Y) || point.Y < BigMath.Min(this.point2BR_0.Y, this.point2BR_1.Y))) { return(false); } if (this.point2BR_0 == this.point2BR_1) { return(true); } Vector2BR delta = this.GetDelta(); Vector2BR u = point - this.point2BR_0; Vector2BR v = new Vector2BR(-delta.Y, delta.X); if (!Vector2BR.DotProduct(u, v).IsZero) { return(false); } BigRational bigRational = Vector2BR.DotProduct(u, delta); if (bigRational.IsNegative) { return(false); } BigRational lengthSquared = delta.GetLengthSquared(); return(!(bigRational > lengthSquared)); }
static void Main(string[] args) { /*var random = new Random(); * * * * for (int i = 0; i < 5; i++) * { * Console.WriteLine(random.Next()); // 0 - 2^32 * Console.WriteLine(random.Next(100)); // 0 - 100 * Console.WriteLine(random.Next(10, 20)); // 10 - 20 * * Console.WriteLine(random.NextDouble()); // 0.0 - 1.0 * * var buffer = new byte[10]; * random.NextBytes(buffer); * Console.WriteLine(BitConverter.ToString(buffer)); * * * * var karakteri = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".ToCharArray(); * string randomText = ""; * for (int a = 0; a < 35; a++) * { * Console.WriteLine(a); * randomText += karakteri[random.Next(karakteri.Length - 1)]; // lenght = 3 || index {0 , 1 , 2} * } * Console.WriteLine(randomText); * * * Console.WriteLine(); * }*/ Console.WriteLine(BigMath.GetPi(500, 100000)); }
/// <summary> /// Create a permutation using an encoded permutation /// </summary> /// /// <param name="Encoded">The encoded permutation</param> public Permutation(byte[] Encoded) { if (Encoded.Length <= 4) { throw new ArgumentException("Permutation: Invalid encoding!"); } int n = LittleEndian.OctetsToInt(Encoded, 0); int size = BigMath.CeilLog256(n - 1); if (Encoded.Length != 4 + n * size) { throw new ArgumentException("Permutation: Invalid encoding!"); } _perm = new int[n]; for (int i = 0; i < n; i++) { _perm[i] = LittleEndian.OctetsToInt(Encoded, 4 + i * size, size); } if (!IsPermutation(_perm)) { throw new ArgumentException("Permutation: Invalid encoding!"); } }
void ISqlFormattable.AppendTo(SqlStringBuilder builder) { switch (state) { case (NumericState.None): { if (CanBeInt32 || CanBeInt64) { builder.Append(valueAsLong); } else { var norm = BigMath.StripTrailingZeros(innerValue); builder.Append(norm.ToString()); } break; } case (NumericState.NegativeInfinity): builder.Append("-Infinity"); break; case (NumericState.PositiveInfinity): builder.Append("+Infinity"); break; case (NumericState.NotANumber): builder.Append("NaN"); break; default: throw new InvalidCastException("Unknown number state"); } }
public void AssertFactorialOf10() { string val1 = "10"; string results = BigMath.Factorial(val1); Assert.AreEqual("3628800", results); }
public void AssertSubtractMethodLargeNumberToOne() { string val1 = "987654321987654321"; string val2 = "987654321987654320"; string results = BigMath.Subtract(val1, val2); Assert.AreEqual("1", results); }
public void AssertMultiplyMethod2Times2() { string val1 = "2"; string val2 = "2"; string results = BigMath.Multiply(val1, val2); Assert.AreEqual("4", results); }
public void AssertMultiplyMethod123456789Times123456789() { string val1 = "123456789"; string val2 = "123456789"; string results = BigMath.Multiply(val1, val2); Assert.AreEqual("15241578750190521", results); }
public void AssertAddMethod() { string val1 = "1"; string val2 = "1"; string results = BigMath.Add(val1, val2); Assert.AreEqual("2", results); }
public void AssertAddMethodWithNumberGreaterThanUi64() { string val1 = "18446744073709551615"; string val2 = "11111111111111111111"; string results = BigMath.Add(val1, val2); Assert.AreEqual("29557855184820662726", results); }
public void AssertAddMethodWithNumberGreaterThani64() { string val1 = "9223372036854775807"; string val2 = "1111111111111111111"; string results = BigMath.Add(val1, val2); Assert.AreEqual("10334483147965886918", results); }
public void AssertAddMethodWithNumberGreaterThanUint() { string val1 = "4294967295"; string val2 = "1111111111"; string results = BigMath.Add(val1, val2); Assert.AreEqual("5406078406", results); }
public void AssertAddMethodWithNumberGreaterThanInt() { string val1 = "2147483647"; //int max string val2 = "1111111111"; string results = BigMath.Add(val1, val2); Assert.AreEqual("3258594758", results); }
public void AssertAddMethod100Plus100() { string val1 = "100"; string val2 = "100"; string results = BigMath.Add(val1, val2); Assert.AreEqual("200", results); }
public void Setup() { firstBigDouble = BigMath.RandomBigDouble(100); firstQuad = new Quad(firstBigDouble.ToDouble()); secondBigDouble = BigMath.RandomBigDouble(100); secondQuad = new Quad(secondBigDouble.ToDouble()); smallDouble = BigMath.RandomBigDouble(2).ToDouble(); }
public void AssertSubtractMethod10Minus1() { string val1 = "10"; string val2 = "1"; string results = BigMath.Subtract(val1, val2); Assert.AreEqual("9", results); }
public void AssertExponential() { string val1 = "10"; string val2 = "2"; string results = BigMath.Exponential(val1, val2); Assert.AreEqual("100", results); }
public void AssertSubtractMethodLargeNumberToZero() { string val1 = "123456789"; string val2 = "123456789"; string results = BigMath.Subtract(val1, val2); Assert.AreEqual("0", results); }
public void AssertExponentialOf15To5() { string val1 = "15"; string val2 = "5"; string results = BigMath.Exponential(val1, val2); Assert.AreEqual("759375", results); }
public void AssertExponentialOf20To20() { string val1 = "20"; string val2 = "20"; string results = BigMath.Exponential(val1, val2); Assert.AreEqual("104857600000000000000000000", results); }
public void AssertExponentialOf11To2() { string val1 = "11"; string val2 = "2"; string results = BigMath.Exponential(val1, val2); Assert.AreEqual("121", results); }
public SqlNumber Root(int n) { if (State == NumericState.None) { return(new SqlNumber(BigMath.Root(n, innerValue))); } return(this); }
public SqlNumber Pow(SqlNumber exp) { if (State == NumericState.None) { return(new SqlNumber(BigMath.Pow(innerValue, exp.innerValue))); } return(this); }
public SqlNumber Log2() { if (State == NumericState.None) { return(new SqlNumber(BigMath.Log(innerValue))); } return(this); }
public static SqlNumber Round(SqlNumber value, int precision) { if (SqlNumber.IsNumber(value)) { var result = BigMath.Round(value.innerValue, new MathContext(precision, RoundingMode.HalfUp)); return(new SqlNumber(result)); } return(value); }