/* TMA02 q4e */ /*Author: Chan Chi Ming s93504843, Date of authoring: 27/1/2001 */ /*This program is used to calcalate the value of PI. It can also used to test the performance of CPU.*/ #include <condefs.h> #pragma hdrstop #include <stdio.h> #include <math.h> #include <dos.h> //--------------------------------------------------------------------------- #pragma argsused long double evaluatePI(unsigned long n); /*function evaluatePI declaration*/ int main(int argc, char **argv) { unsigned long n; /*number of term*/ struct time t; printf("Enter the number of terms (-1 to quit): "); /*ask user to input number of term or -1 to quit*/ scanf("%d", &n); while(n != -1) { /*use a while loop to execute the function indefinitely until the input is -1*/ gettime(&t); /*start time*/ printf("The start time is: %2d:%02d:%02d.%02d\n", t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund); printf("pi = %.20Lf\n", evaluatePI(n)); /*call the function and print out the result*/ gettime(&t); /*end time*/ printf("The finish time is: %2d:%02d:%02d.%02d\n", t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund); printf("\n"); printf("Enter the number of terms (-1 to quit): "); scanf("%d", &n); } return 0; } long double evaluatePI(unsigned long n) { /*function body of evaluatePI, it uses Euler's method to find out PI*/ unsigned long i = 0; /*index for for loop*/ long double denomator = 0.0L; /*value of denomator*/ long double sum = 0.0L; /*value of sum according to the number of terms*/ long double temp = 0.0L; for(i=1; i<=n; i++) { /*using a for loop to calculate the value of pi according to the no. of term, n, entered by user*/ temp = static_cast <long double>((2*i-1)*(2*i-1)); denomator = (1/temp); sum = sum + denomator; } return (sqrtl(8 * sum)); }