все то же pi

From
Max Alekseyev (2:5015/60)
To
Sergey Voloshchuk
Date
2002-11-06T19:08:44Z
Area
RU.ALGORITHMS
████ OS/2        Hi, Sergey !

Replying to a message of Sergey Voloshchuk to Илья Кантор:

 SV> А по какому методу вычисляется пи в этой проге:

 SV> long d; int b,a=10000,c=2800,g,e,f[2801];
 SV> main(){
 SV> for(;b-c;) f[b++]=a/5;
 SV> for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)
 SV>  for(b=c;d+=f[b]*(long)a, f[b]=d%--g,d/=g--,--b;d*=b);

======================================================
* Original in area RU.MATH
* From: Max Alekseyev 2:5015/60       21.07.1999 04:41:02
* To  : Vitaly Lugovsky 
* Subj: PI (3.141)
======================================================
Hi, Vitaly !

Replying to a message of Vitaly Lugovsky to Andrey Kuznetsov:

 VL>  А как такая формУла?

Замечу, что автором приведенной программы на C является Dik T. Winter из CWI. Кстати, в оригинале ее текст состоит ровно из 160 символов.

 VL> ---------------
 VL> long d;
 VL> int b,a=10000,c=2800,g,e,f[2801];
 VL> main()
 VL> {
 VL>  for(;b-c;) f[b++]=a/5;
 VL>  for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)
 VL>   for(b=c;d+=f[b]*(long)a, f[b]=d%--g,d/=g--,--b;d*=b);
 VL> }
 VL> --------------

 VL> 2All: кто нить может объяснить алгоритм, я вот сколько не бился,
 VL> смысла не понял. Но ведь считает же, гадина!!! 

Вот эквивалентная (более прозрачная) программа на паскале:

===cut===
var b,g:integer;
    f:array[1..2800] of integer;

const e:integer=0;
      d:longint=0;
      a=10000;
      c:integer=2800;

procedure print4(x:integer);
var s:string;
begin
  Str(x:4,s); while pos(' ',s)>0 do s[pos(' ',s)]:='0';
  write(s);
end;

begin
for b:=1 to c do f[b]:=a div 5;
while c>=0 do
begin
  d:=0;
  for b:=c downto 2 do
  begin
    inc(d,f[b]*a); g:=2*b-1; f[b]:=d mod g; d:=d div g;
    d:=d*b;
  end;
dec(c,14); print4(e+d div a); e:=d mod a;
end;
end.
===cut===

Из нее следует, что Pi здесь считается по формуле

         oo     i!
Pi = 2 * Sum --------
         i=2 (2i-1)!!

Сходимость у нее - геометрическая, что довольно неплохо.

ЗЫ. Раньше я эту формулу нигде не встречал. Может, кто-нибудь подскажет откуда у нее ноги растут?

Regards,      °°
        Max    ~
==================== End of Forward ====================

======================================================
* Original in area RU.MATH
* From: Wladislaw Tchernov 2:5025/2.91       07/22/1999 00:28:01am
* To  : Max Alekseyev 
* Subj: de seriebus calculandis
======================================================
 Ave Max!

 04:41 Mercuri die 21 Julii 1999 a.D.,
Max Alekseyev scripsit ad Vitaly Lugovsky:

 MA>          oo     i!
 MA> Pi = 2 * Sum --------
 MA>          i=2 (2i-1)!!

 MA> откуда у нее ноги растут?

IMHO, из разложения арксинуса

\sum_{k=0}^\infty \frac{(k)!^2}{(2k)!}=
\frac{4}{4-x^2}+4x(4-x^2)^{-3/2}\arcsin(x/2),

в немже надо положить x=\sqrt{2}

с уважением
     слава:
==================== End of Forward ====================

Regards,      °°
        Max    ~

--- FleetStreet 1.27.3.8
 * Origin:  (2:5015/60)