#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#define f(x) ((float)(4.0/(1.0+x*x)))
#define pi ((float)(4.0*atan(1.0)))
main()
{
/* This simple program approximates pi by computing pi = integral
* from 0 to 1 of 4/(1+x*x)dx which is approximated by sum
* from k=1 to N of 4 / ((1 + (k-1/2)**2 ). The only input data
* required is N.
*/
/* Each process is given a chunk of the interval to do. */
float err, sum, w;
int i, N;
void startup();
/* startup(&mynum, &nprocs) */
N = 1000;
printf("Number of approximation intervals is %d\n", N);
w = 1.0/(float)N;
sum = 0.0;
for (i = 1; i <= N; i++)
sum = sum + f(((float)i-0.5)*w);
sum = sum * w;
err = sum - pi;
printf("sum, err = %7.5f, %10e\n", sum, err);
}
void startup (pmynum, pnprocs)
int *pmynum, *pnprocs;
{
/* logic executed at the start of the program (which is identical for
* for the host and node programs). This is the SPMD model of programming.
*
* This is a good place to enroll yourself, returning "mynum"
*/
}