//Exercice 2-3: arctg(x) par le developpement en serie

eps = 0.00001; nmax = 100000;
u = 1.0; somme = 0.0; n = 0; gd = %f;
signe = 1;

z = input("valeur de l''argument: ");
if z < 0
  z = -z; signe = -1;
end
if z > 1 
  gd = %t; z = 1/z;
end
zz = z*z;
while abs(u) > eps & n < nmax
  somme = somme + u;
  u = - zz*(2*n+1)*u/(2*n+3);
  n = n+1;
  if modulo(n,100) == 0, printf("%d  %f\n",n, u), end
end
rslt = z*somme;
if gd
  rslt = %pi/2 - rslt;
  z = 1/z;
end
z = signe*z; rslt = signe*rslt;
printf("\nmon arc tg( %6.3f) = %12.8f  valeur exacte %12.8f\n",..
        z,rslt,atan(z))

