#include <stdio.h>
#include <math.h>
#include <sys/time.h>
#include <pthread.h>
struct timeval starttime,endtime;
//#define enable_threading 0
//#define NUM_THREADS 16


// threading don't work yet



#ifdef enable_threading
void *BusyWork(void *null)
{
    double r=0, x=1, y=0, s=0, a=0, p=0;
        r=1234567890;
	printf("Calculating pi with radius of: %lf\n",r);

    while(x<=r)
        {
                y=sqrt(r*r- x*x);
                s=s+y;
                x=x+1;
        }
    a=(s*4);
    p=a/(r*r);
	printf("Pi = %1.10lf",p);

   pthread_exit((void *) 0);
}

int main(int argc, char *argv[]) {
    double te0=0;
	//printf("argv: %c\n", argv);

	printf("\n\n***************************************************************\n\n");
        printf("Name: to display = ");
        scanf("%lf",&r);
        //r=1234567890;
	printf("Name: %lf\n",r);
	return 1;
   pthread_t thread[NUM_THREADS];
   pthread_attr_t attr;
   int a, t, s;

   /* Initialize and set thread detached attribute */
   pthread_attr_init(&attr);
   pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
        gettimeofday(&starttime, NULL);
   for(t=0; t<NUM_THREADS; t++)
   {
      //printf("Creating thread %d\n", t);
      a = pthread_create(&thread[t], &attr, BusyWork, NULL);
 }
    
   pthread_attr_destroy(&attr);
   for(t=0; t<NUM_THREADS; t++)
   {
      a = pthread_join(thread[t], (void **)&s);
}
        gettimeofday(&endtime, NULL);
 //   printf("Pi = %1.10lf",p);
            te0=((double)(endtime.tv_sec*1000000-starttime.tv_sec*1000000+endtime.tv_usec-starttime.tv_usec))/1000000;
        //te0=te0/60;
        printf("\n\tTest #1:\t%lfsec", te0);
printf("\n\n***************************************************************\n\n");
    //getchar();
    return;
}


#else


int main ( int argc, char *argv[] )
{
  //int i;

  //printf ( "argc = %d\n", argc );
  //for ( i = 0; i < argc; i++ ){
  	printf ( "argv[1] = %s\n", argv[1] );
	printf ( "argv[2] = %s\n", argv[2] );
  //}
  return 0;



//printf("argc: %d\n", argc);
//printf("argv: %s\n", *argv);
    double r=0, x=1, y=0, s=0, a=0, p=0, te0=0;
 
printf("\n\n***************************************************************\n\n");
    //printf("Give radius much much greater than 1\nRadius = ");
    //scanf("%lf",&r);
        r=1234567890;
printf("Calculating pi with radius of: %lf\n",r);
// printf("\n\tTest #1:\t Math.h add/sub/mult/div:\t%lf/s", te1);
        gettimeofday(&starttime, NULL);

    while(x<=r)
        {
                y=sqrt(r*r- x*x);
                s=s+y;
                x=x+1;
        }
    a=(s*4);
    p=a/(r*r);
        gettimeofday(&endtime, NULL);
    printf("Pi = %1.20lf",p);
            te0=((double)(endtime.tv_sec*1000000-starttime.tv_sec*1000000+endtime.tv_usec-starttime.tv_usec))/1000000;
        //te0=te0/60;
        printf("\n\tTest #1:\t%lfsec", te0);
printf("\n\n***************************************************************\n\n");
    //getchar();
    return 1;
}

#endif
