private static FractionBigInt AddInverseSquare(FractionBigInt cur, ulong integer) { var isqr = integer * integer; var den = cur.Denumerator * isqr; var num = cur.Numerator * isqr + cur.Denumerator; return(new FractionBigInt(num, den)); }
private static FractionBigInt Sum(IEnumerable <ulong> integers) { var sum = new FractionBigInt(0, 1); foreach (var i in integers) { sum = AddInverseSquare(sum, i); } return(sum.Simplify()); }
private static FractionBigInt Sum(ulong[] numbers, ulong mask) { var sum = new FractionBigInt(0, 1); var i = 0; while (mask > 0) { if (mask % 2 != 0) { sum = AddInverseSquare(sum, numbers[i]); } i++; mask >>= 1; } return(sum.Simplify()); }
private static int CompareToTarget(FractionBigInt fraction) { return((fraction.Numerator << 1).CompareTo(fraction.Denumerator)); }