optimized, windows 2003, vs 2008, Intel(R) Core (TM)2 Quad
1. C++
1. C++
// pi_CPP.cpp : 기본프로젝트파일입니다. #include "stdafx.h" #include "math.h" #include "time.h" using namespace System; int main(array<System::String ^> ^args) {        const long   num_step= 500000000;        long i;        double sum, step, pi, x;        time_t st,   et;        step =   (1.0/(double)num_step);        sum=0.0;        Console::WriteLine("=================================================");        Console::WriteLine("C++");        Console::WriteLine("-------------------------------------------------");        time(&st);        for(i=1; i<=num_step; i++){                x=((double)i -0.5)* step;                sum=sum+   4.0/(1.0+x*x);        }        time(&et);        pi=step*sum;        Console::WriteLine(" sum = {0:0.000000000000000}", sum);            Console::WriteLine(" PI = {0:0.000000000000000}, (Error =   {1:e})", pi, Math::Abs(Math::Acos(-1.0)) -   Convert::ToDouble(pi));        Console::WriteLine(" Elapsed Time = {0:0.000} [sec]" ,   difftime(et,st));        Console::WriteLine("=================================================");     return 0; }  |   
=================================================
C++
-------------------------------------------------
 sum = 1570796326.794910000000000
 PI = 3.141592653589810, (Error = -2.087219e-014)
 Elapsed Time = 7.000 [sec]
=================================================
계속하려면 아무 키나 누르십시오 . . .
2. Fortran           
PROGRAM MAIN IMPLICIT NONE INTEGER*8 , PARAMETER     ::  NUM_STEP = 500000000 INTEGER*8               ::  I REAL(KIND=8)            ::  SUM, STEP, PI, X REAL(KIND=8)            ::  STIME, ETIME, RTC STEP = (1.0D0/DBLE(NUM_STEP)) SUM=0.0D0 WRITE(*,400) WRITE(*,500) WRITE(*,600) STIME=RTC()     !STARTING TIME DO I=1, NUM_STEP     X   =     (   DBLE(I)    -     0.5D0)  *   STEP     SUM =   SUM +     4.D0/(1.D0+X*X) ENDDO     ETIME=RTC()     !ENDING TIME PI=STEP*SUM WRITE(*,100) PI, DABS(DACOS(-1.0D0)-PI) WRITE(*,300)    ETIME-STIME WRITE(*,400) 100FORMAT('  PI  =   ', F17.15, '   (ERROR = ', E11.5,')') 300FORMAT('  ELAPSED TIME =  ', F8.3, ' [SEC] ' ) 400FORMAT('================================================='   ) 500FORMAT('FORTRAN' ) 600FORMAT('-------------------------------------------------'   ) STOP ENDPROGRAM  |   
=================================================
FORTRAN
-------------------------------------------------
  PI  = 3.141592653589814   (ERROR = 0.20872E-13)
  ELAPSED TIME =     7.000 [SEC]
=================================================
계속하려면 아무 키나 누르십시오 . . .
3. C#
using System; using   System.Collections.Generic; using System.Linq; using System.Text; namespace pi_CS {     class pi{         static void Main(string[] args)  {              Pi();        }         static void Pi()         {             long num_step = 500000000;             long i;             double sum, step, pi, x;             DateTime dt = new   DateTime();             DateTime dt2 = new   DateTime();             step   = (1.0 / Convert.ToDouble(num_step));             sum =   0.0; Console.WriteLine("=================================================");             Console.WriteLine("C#");             Console.WriteLine("-------------------------------------------------"); dt = DateTime.Now;             for (i = 1; i <= num_step; i++)             {                 x   = (Convert.ToDouble(i) - 0.5) * step;                   sum = sum + 4.0 / (1.0 + x * x);             }             dt2 =   DateTime.Now;             pi =   step * sum;             Console.WriteLine("   PI = {0}, (Error = {1:e})", pi, Math.Abs(Math.Acos(-1.0)) - Convert.ToDouble(pi));             Console.WriteLine("   Elapsed Time = {0} [sec]"                 ,   dt2.Subtract(dt).TotalSeconds.ToString("#.###"));             Console.WriteLine("=================================================");         }     } }  |   
=================================================
C#
-------------------------------------------------
 PI = 3.14159265358981, (Error = -2.087219e-014)
 Elapsed Time = 12.563 [sec]
=================================================
계속하려면 아무 키나 누르십시오 . . .
댓글 없음:
댓글 쓰기