	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;
