Статья: Распределенные вычисления на FreePascal под Windows
function f( r : double) : double;
begin
f := 4.0/(1 + sqr(r))
end;
begin
MPI_Init(argc,argv);
teg := 0;
MPI_Comm_size(MPI_COMM_WORLD, numprocs);
MPI_Comm_rank(MPI_COMM_WORLD, myid);
n := 0;
if myid=0 then
begin
Assign(fname,'n.in');
{$I-}
Reset(fname);
Readln(fname,n);
Close(fname);
{$I+}
startwtime := MPI_Wtime;
end;
MPI_Bcast( @n, 1, MPI_INT, 0, MPI_COMM_WORLD);
if n<>0 then
begin
h := 1.0/n;
sum := 0.0;
i := myid + 1;
while i <= n do
begin
x := h*( i - 0.5);