[erlang-questions] Calculate PI in Erlang faster than in Matlab

Jilani Khaldi <>
Thu Apr 3 09:22:21 CEST 2008


> Are you Free Pascal version uses N=1000000 steps? Maybe you have some
> epsilon-optimization, like Jeff suggested before? Can you send me your FP
> code?
Sure.

program pi;
{$mode delphi} {$H+}

uses
   sysutils;

const
   N = 1000000;
   DX = 1/N;
   kPI = 3.14159;

var
   i: integer;
   x, p, dp: double;
   HH, MM, SS1, MS1, SS2, MS2: Word;
   st: string;
begin
   p := 0;
   x := 0;
   DeCodeTime(Time,HH,MM,SS1,MS1);
   for i := 1 to N do
   begin
     dp := 4*DX/(1+x*x);
     p := p + dp;
     x := x + DX;
   end;
   DeCodeTime (Time,HH,MM,SS2,MS2);
   SS2 := SS2 - SS1;
   MS2 := MS2 - MS1;
   st := Format('PI = %1.8f; Seconds = %d; MSeconds = %d', [p, SS2, MS2]);
   writeln(st);

   // Now looping till we to reach 3.14159
   p := 0;
   x := 0;
   i := 0; // Just to know how many loops
   DeCodeTime(Time,HH,MM,SS1,MS1);
   while p < kPI do
   begin
     dp := 4*DX/(1+x*x);
     p := p + dp;
     x := x + DX;
     inc(i);
   end;
   DeCodeTime (Time,HH,MM,SS2,MS2);
   SS2 := SS2 - SS1;
   MS2 := MS2 - MS1;
   st := Format('Loops Nr = %d; PI = %1.8f; Seconds = %d; MSeconds = 
%d', [i, p, SS2, MS2]);
   writeln(st);
end.

-- 
***
T E M A
http://www.dotpas.org



More information about the erlang-questions mailing list