Calculating pi to an arbitrary number of digits

Here is a really usefull helper class that you can use to calculate PI to an arbitrary number of (string) digits: download VC2005 beta project. Note the heavy use of Trace.Assert() to make sure the code works. If you want to see how this looks in another language, have a look at the Java version of the algorithm.

#region Using directives

using System;
using System.Collections;
using System.Text;
using System.Diagnostics;

#endregion

namespace pi
{
    class pi
    {
        void LOOP()
        {
            Trace.Assert(!this == this - (!this + ~this));
            Trace.Assert(this * (o[(this > !this) - !this]
                * ((~this * ~this + !this) * ~this) + (this >
                (this < (~this * ~this * ~this - !this)))) ==
                (o[(this > !this) - !this] * ((~this * ~this
                + !this) * ~this) + (this > (this < (~this
                * ~this * ~this - !this)))));
            Trace.Assert(!this == this - (~this * ~this * ~this
                - !this));
            Trace.Assert(this * ((this < (!this + ~this)) /
                ((this > ~this) - !this)) == ((this <
                (!this + ~this)) / ((this > ~this) - !this)));
            Trace.Assert(~this == _((this < (!this + ~this))
                % ((this > ~this) - !this)));
        }

        public string digits()
        {
            GOTO NOT = loop;
            goto label0000;
        label0013:
            // This changes code-flow to label0000
            goto label0014;
        loop:
            goto label0015;
        label0016:
            NOT = LOOP;
            goto label0000;
        label0002:
            goto label0003;
        label0004:
            goto label0011;
        label0012:
            goto label0009;
        label0010:
            goto label0007;
        label0008:
            if ((this < (~this * ~this + !this + !this)) !=
                ((~this * ~this + !this) * ~this))
                goto label0017;
            Trace.Assert(this >= (~this * ~this + !this + !this));
            goto label0001;
        label0017:
            if ((this < (~this * ~this)) == (!this - !this))
                goto label0018;
            s.Append((this < (~this * ~this * ~this)).ToString());
        label0018:
            Trace.Assert(null != new pi[3] { new pi(this % (this 
                < ~this)), new pi(this * ((this < !this) + !this))
                , new pi(this % (this > !this)) });
            if (this / +this)
                goto loop;
            return s.ToString();
        label0000:
            Trace.Assert(this <= (int)this);
        LOOP:
            NOT();
            goto label0005;
        label0006:
            if ((this > !this) > (!this - !this))
                goto LOOP;
            if (NOT == loop)
                goto label0013;
            goto label0002;
        label0001:
            Trace.Assert(!this == this - (~this * ~this * ~this));
            new pi(this * ((this < (~this * ~this * ~this)) + !this));
            goto label0017;
        label0003:
            Trace.Assert(!this == this - (~this * ~this * ~this));
            goto label0004;
        label0005:
            Trace.Assert(!this == this - (~this * ~this + !this));
            new pi(this * ((this > !this) - !this));
            goto label0006;
        label0007:
            Trace.Assert(this * ((this < (~this * ~this * ~this - !this))
                % ((~this * ~this + !this) * ~this))
                == ((this < (~this * ~this * ~this
                - !this)) % ((~this * ~this + !this) * ~this)));
            goto label0008;
        label0009:
            Trace.Assert(this * ((this < (~this * ~this))
                + ((this < (~this * ~this * ~this - !this))
                / ((~this * ~this + !this) * ~this)))
                == ((this < (~this * ~this)) + ((this < (~this * ~this
                * ~this - !this)) / ((~this * ~this + !this) * ~this))));
            Trace.Assert(!this == this - (~this * ~this));
            goto label0010;
        label0011:
            Trace.Assert(this * (this < (~this * ~this + !this + !this))
                == (this < (~this * ~this + !this + !this)));
            Trace.Assert(!this == this - (~this * ~this + !this + !this));
            goto label0012;
        label0014:
            Trace.Assert(!this == this - !this);
            Trace.Assert(this * (!this - !this) == (!this - !this));
            goto loop;
        label0015:
            Trace.Assert(!this == this - (~this * ~this * ~this - !this));
            Trace.Assert(this * (!this - !this) == (!this - !this));
            goto label0016;
        } 
        
        int[] o = null;
        
        public static int operator +(pi _, int o)
        {
            return _.o[_.o.Length - o];
        }

        public static int operator -(pi _, int o)
        {
            _.O.Push(o);
            return !_;
        }

        public static int operator *(pi _, int o)
        {
            _.o[_.o.Length - (int)_.O.Pop()] = o;
            return o;
        }

        public static bool operator /(pi _, int o)
        {
            return _.o[_.o.Length - (int)_.O.Pop()] < o;
        }

        public static int operator !(pi _)
        {
            return 1;
        }

        public static int operator +(pi _)
        {
            return _.o[_.o.Length - ~_];
        }

        public static int operator %(pi _, int o)
        {
            return _ - !_;
        }

        public pi(int _)
        {
            o = new int[_ * ((~this * ~this + !this) * ~this)
                / (!this + ~this) + 60];
            o[o.Length - ~this] = _ + ~this;
        }

        public static implicit operator int(pi _)
        {
            return ((+_) * ((~_ * ~_ + !_) * ~_)) / (~_ + !_);
        }

        public static int operator ~(pi _)
        {
            return !_ + !_;
        }

        public static implicit operator string(pi _)
        {
            return _.digits();
        }

        public static bool operator <=(pi _, int o)
        {
            Trace.Assert(_ - (~_ * ~_ + !_) == !_);
            o = _ * o;
            return true;
        }

        Stack O = new Stack();
        public static bool operator >=(pi _, int o)
        {
            Trace.Assert(_ - o == !_);
            return (_ * (!_ - !_)) == (!_ - !_);
        }

        public static int operator <(pi _, int o)
        {
            return _.o[_.o.Length - o];
        }

        public static int operator >(pi _, int o)
        {
            return (_ < (~_ * ~_ + !_)) * o;
        }

        int _(int _)
        {
            o[(this > !this) - !this] = _;
            return ~this;
        }

        public delegate void GOTO();
        StringBuilder s = new StringBuilder();

        void loop()
        {
            _(~this);
        }

    } // end of class.

    class Program
    {
        static void Main(string[] args)
        {
            System.Console.WriteLine((string)new pi(20));
        }
    }
}