/* Program Pibel.c by Florian Schmitt
   Berechnet den Wert von PI anhand des Bibeltextes
   Das Programm sollte mit jedem C-Compiler laufen.
   Aufruf: "Pibel FILENAME", wobei FILENAME eine ASCII-Datei
   mit dem Bibeltext ist.
*/

#include <stdio.h>

int fertig=0;

long Quadrat(signed short a)
/* Quadriert eine Zahl */
{  
  return (long)a*a;
}

short Essenz(FILE *Text)
/* Berechnet die Essenz des Textes */
{ 
  short Buchstabe[4];
    
  fertig=(fread(&Buchstabe, sizeof(short), 4, Text)<4);
    /* Die naechsten 4 Buchstaben einlesen */
  if (fertig)
    return 0;
  else {  
    fseek(Text,-7,SEEK_CUR);
    return (Buchstabe[1]+13*Buchstabe[3]+7*Buchstabe[2])^(Buchstabe[0]*3);
    /* Vermutung ueber die Konstanten: 13=12 Jünger+Jesus,  *
     * In 7 Tagen wurde die Welt erschaffen,                *
     * 3 symbolisiert die Dreifaltigkeit                    *
     ( weitere Vorschläge sind gerne willkommen)            */
  }
}
                
main(int argc, char **argv)
{
  long Worte,Weisheit;
  FILE *Text;
  
  if (argc==2) 
  {  
    Text=fopen(argv[1],"rb");
    for (Worte=Weisheit=0;!(fertig);Worte++)
    {
       Weisheit+=(Quadrat(Essenz(Text))+Quadrat(Essenz(Text)))>>30;
    }   
    printf("%1.5f\n",4.0*(Worte-Weisheit)/Worte);
  }
  else printf("SYNTAX: Pibel DATEINAME\n");
}  
