相关疑难解决方法(0)

如何确定我的pi计算是否准确?

我正在尝试各种方法来实现一个顺序给出pi数字的程序.我尝试了泰勒系列方法,但事实证明它非常缓慢地收敛(当我在一段时间后将我的结果与在线值进行比较时).无论如何,我正在尝试更好的算法.

因此,在编写程序时,我遇到了问题,就像所有算法一样:我怎么知道n我计算的数字是准确的?

language-agnostic algorithm math pi

765
推荐指数
5
解决办法
12万
查看次数

获得π值的最快方法是什么?

我正在寻找获得π值的最快方法,作为个人挑战.更具体地说,我使用的方法不涉及使用#define常量M_PI,或者对数字进行硬编码.

下面的程序测试了我所知道的各种方式.从理论上讲,内联汇编版本是最快的选择,但显然不便于携带.我已将其作为基线与其他版本进行比较.在我的测试中,使用内置4 * atan(1)函数,在GCC 4.2上版本最快,因为它会自动将其折叠atan(1)为常量.根据-fno-builtin指定,atan2(0, -1)版本最快.

这是主要的测试程序(pitimes.c):

#include <math.h>
#include <stdio.h>
#include <time.h>

#define ITERS 10000000
#define TESTWITH(x) {                                                       \
    diff = 0.0;                                                             \
    time1 = clock();                                                        \
    for (i = 0; i < ITERS; ++i)                                             \
        diff += (x) - M_PI;                                                 \
    time2 = clock();                                                        \
    printf("%s\t=> %e, time => %f\n", #x, diff, diffclock(time2, time1));   \
}

static inline double
diffclock(clock_t time1, clock_t time0)
{ …
Run Code Online (Sandbox Code Playgroud)

language-agnostic unix algorithm performance pi

315
推荐指数
21
解决办法
5万
查看次数

德尔福并行

能否举一个并行编程的简单例子?

我有一个很大的for loop,我想更快地处理它并使用所有的CPU核心.我能做什么?这与Parallel有关吗?

例如:(计算Pi数字)

var
  A: array of LongInt;
  I, J, K, P, Q, X, Nines, Predigit: Integer;
  NumDigits,PiLength: Integer;
  answer : string;

begin
  NumDigits := 5000;
  SetLength(A, 10*NumDigits div 3);
  SetLength(answer, NumDigits+1);
  PiLength := 1;
  for I := Low(A) to High(A) do
    A[I] := 2;
  Nines := 0;
  Predigit := 0;
  for J := 0 to NumDigits-1 do //This loop
  begin
    Q := 0;
    P := 2 * High(A) + 1;
    for I := High(A) …
Run Code Online (Sandbox Code Playgroud)

delphi parallel-processing

1
推荐指数
1
解决办法
1056
查看次数