function arctan ( x : number ) : number;
var q, s, v, w : number;
begin
s := sqrteps;
v := x / (1 + sqrt(1+x*x));
q := 1;
while 1-s > epsilon do begin
q := 2*q / (1+s);
w := 2*s*v / (1+v*v);
w := w / (1 + sqrt(1-w*w));
w := (v+w) / (1-v*w);
v := w / (1 + sqrt(1+w*w));
s := 2*sqrt(s) / (1+s)
end;
arctan := q * ln( (1+v)/(1-v) )
end;
|