Historical Note

This page was migrated from the original p-nand-q.com site which was last updated in 2015. The content has been preserved exactly as it was, with only formatting updated for modern browsers. Over the coming days and weeks, the content will be reviewed and may be updated for accuracy and relevance. If you find any issues, please contact me.

Calculating pi to an arbitrary number of digits

#include "precomp.h"

unsigned long _[10000];

int F0()
{
    _[0]=20;
    _[6]=0;
    _[7]=0;
    _[0]+=2;
    _[2]=_[0];
    _[2]*=10;
    _[2]/=3;
    return _[10]=0;
}

int F1()
{
    _[1] = _[16+_[2]] * 10 + (_[3]*_[2]);
    _[3]=_[1]/(_[2]*2-1);
    _[16+_[2]] = _[1]%(_[2]*2-1);
    return _[2]--;
}

int F2()
{
    _[4] = _[7];
    _[7] = _[6]+(_[3]/10);
    return _[6] = _[3]%10;
}

int F3()
{
    _[16+_[2]] = 2;
    return _[2]--;
}

int F4()
{
    return _[5]=0;
}

int F5()
{
    _[3]=0;
    return _[2]=(_[0]*10)/3;
}

int F6()
{
    _[7]=0;
    return _[4]++;
}

int F7()
{
    _[4] += 48;
    return putchar(_[4]);
}

int F8()
{
    putchar(46);
    return _[10]++;
}

int F9()
{
    return _[5]++;
}

int F10()
{
    putchar(13);
    return getchar();
}

int F11()
{
    return _[2] <= 0;
}

int F12()
{
    return _[5] >= _[0];
}

int F13()
{
    return _[2] <= 0;
}
int F14()
{
    return _[7]!=10;
}

int F15()
{
    return _[5]==0;
}

int F16()
{
    return _[10]!=0;
}

int F17()
{
    return 1;
}

int F18()
{
    return 0;
}

void main(int argc, char *argv[])
{
A000: if(F18()) goto A001; else F0();
A001: if(F11()) goto A003; else F3();
A002: if(F17()) goto A001; else F17();
A003: if(F18()) goto A004; else F4();
A004: if(F12()) goto A013; else F5();
A005: if(F13()) goto A007; else F1();
A006: if(F17()) goto A005; else F17();
A007: if(F18()) goto A008; else F2();
A008: if(F14()) goto A009; else F6();
A009: if(F15()) goto A011; else F7();
A010: if(F16()) goto A011; else F8();
A011: if(F18()) goto A012; else F9();
A012: if(F17()) goto A004; else F17();
A013: if(F18()) goto A014; else F10();
A014:
    exit(0);
}