// TAU.C // Calculates the value of tau // Author: Peter Meyer // Last mod.: 1999-01-12 #include <string.h> #include <stdio.h> #include <math.h> char buff[256]; char temp[16]; double tau(int m); /*----------------------------*/ void main(int argc,char *argv[]) { int i, n=22, m=2; char *ptr1, *ptr2; double t0, t1; printf("\nThis program calculates tau to 16 decimal places thus:" "\ntau = sqrt(1 + sqrt(2 + sqrt(3 + sqrt(4 + ... + sqrt(22)))...)))"); t1 = 0; do { t0 = t1; t1 = tau(m++); printf("\n%18.16f = ",t1); strcpy(buff,"sqrt(1+"); for ( i=2; i<=m-1; i++ ) { sprintf(temp,"sqrt(%d+",i); strcat(buff,temp); } sprintf(temp,"sqrt(%d)",m); strcat(buff,temp); for ( i=2; i<=m; i++ ) strcat(buff,")"); if ( strlen(buff) > 55 ) { ptr1 = strrchr(buff,'+'); *(ptr1-1) = 0; buff[79-21-strlen(ptr1)-3] = 0; ptr2 = strrchr(buff,'+'); *(ptr2+1) = 0; strcat(buff,"..."); strcat(buff,ptr1); } printf("%s",buff); } while ( t1 != t0 ); printf("\n"); } /*-------------*/ double tau(int m) { int i; double x; x = sqrt(m); for ( i=m-1; i>=1; i-- ) x = sqrt(i + x); return ( x ); }