public void ArcTan(uint multiplicand, uint reciprocal)
        {
            var x = new BigNumber(this.maxDigits, multiplicand);
            x.Divide(reciprocal);
            reciprocal *= reciprocal;

            Assign(x);

            var term = new BigNumber(this.maxDigits);
            var divisor = 1u;
            var subtractTerm = true;
            while (true)
            {
                x.Divide(reciprocal);
                term.Assign(x);
                divisor += 2;
                term.Divide(divisor);
                if (term.IsZero())
                {
                    break;
                }

                if (subtractTerm)
                {
                    Subtract(term);
                }
                else
                {
                    Add(term);
                }
                subtractTerm = !subtractTerm;
            }
        }
        public string Print()
        {
            var temp = new BigNumber(this.maxDigits);
            temp.Assign(this);

            var sb = new StringBuilder();
            sb.Append(temp.number[0]);
            sb.Append(CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator);

            var digitCount = 0;
            while (digitCount < this.maxDigits)
            {
                temp.number[0] = 0;
                temp.Multiply(100000);
                sb.AppendFormat("{0:D5}", temp.number[0]);
                digitCount += 5;
            }

            return sb.ToString();
        }