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;
            }
        }