私はこの式を実現するプログラムを書いた:プログラムを最適化するにはどうすればよいですか?
パイ= 1/N * SUMM(4 /(1 +((I-0.5)/ N)^ 2)
プログラムコード:
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
using namespace std;
const long double PI = double(M_PI);
int main(int argc, char* argv[])
{
typedef struct timeval tm;
tm start, end;
int timer = 0;
int n;
if (argc == 2) n = atoi(argv[1]);
else n = 8000;
long double pi1 = 0;
gettimeofday (&start, NULL);
for(int i = 1; i <= n; i++) {
pi1 += 4/(1 + (i-0.5) * (i-0.5)/(n*n));
}
pi1/=n;
gettimeofday (&end, NULL);
timer = (end.tv_usec - start.tv_usec);
long double delta = pi1 - PI;
printf("pi = %.12Lf\n",pi1);
printf("delta = %.12Lf\n", delta);
cout << "time = " << timer << endl;
return 0;
}
最適な方法でそれを提示する方法
この部分に以下の浮動小数点演算があるでしょう?
for(int i = 1; i <= n; i++) {
pi1 += 4/(1 + (i-0.5) * (i-0.5)/(n*n));
}
おかげ
「少ない操作」 - 一度構築されたコードや命令の行? – Nim
Sergey、あなたのスペースバーは機能しませんか? – jrok
なぜ 'printf'と' cout'を組み合わせる – triclosan