gpt4 book ai didi

c++ - 我怎样才能优化我的程序?

转载 作者:行者123 更新时间:2023-11-30 18:18:09 25 4
gpt4 key购买 nike

我编写了实现这个公式的程序:

Pi = 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) );
}

谢谢

最佳答案

一个想法是:

double nn = n*n;
for(double i = 0.5; i < n; i += 1) {
pi1 += 4 / ( 1 + i * i / nn );
}

但你需要测试一下它与当前代码是否有任何差异。

关于c++ - 我怎样才能优化我的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9787096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com