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]
=================================================
계속하려면 아무 키나 누르십시오 . . .
댓글 없음:
댓글 쓰기