En REXX, il n'existe aucune fonction «Atn», «ATan» ou «ArcTan» permettant de calculer le ArcTangente d'un cercle. Pour remédier à se problème, il suffit de créer une fonction ressemblant à ceci avec un préalable la fonction de racine carré :
- R = 0.0
- DO WHILE R <= 1.1
- SAY "ArcTan(" || R || ")=" || ArcTan(R)
- R = R + 0.1
- END
- EXIT
-
- Sqrt :PROCEDURE
- NUMERIC DIGITS 12
- PARSE ARG N
- IF N<=0 Then RETURN 0
- PARSE Value Format(N,,,,0) WITH N'E'Ep
- IF Ep='' THEN Ep = 0
- ELSE
- IF Abs(Ep // 2) THEN DO
- N = N * 10
- Ep = Ep - 1
- END
- DO X=2 WHILE X * X < N
- END
- DO FOREVER
- X1 = ( N / X + X) / 2
- IF X = X1 THEN LEAVE
- X = X1
- END
- RETURN X'e'Ep/2
-
- ArcTan :PROCEDURE
- NUMERIC DIGITS 12
- Arg X
- X = X / Sqrt(X * X + 1)
- IF Abs(X) > 1 THEN RETURN 0
- IF Abs(X) >= 0.75 THEN DO
- Flip = Sign(X) * 1.5707963267948966192
- X = Sqrt( 1 - X * X)
- END
- ELSE
- Flip = 0
- F = X
- Y = X
- YY = X
- X = X * X
- DO N = 2 BY 2
- F = F * X * (N - 1) / N
- Y = Y + F / ( N + 1)
- IF YY = Y THEN LEAVE
- YY = Y
- END
- IF Flip<>0 THEN Y = Flip - Y
- RETURN Y
on obtiendra le résultat suivant:
ArcTan(0.0)=0ArcTan(0.1)=0.0996686524914
ArcTan(0.2)=0.197395559849
ArcTan(0.3)=0.291456794480
ArcTan(0.4)=0.380506377112
ArcTan(0.5)=0.463647609000
ArcTan(0.6)=0.540419500269
ArcTan(0.7)=0.610725964384
ArcTan(0.8)=0.674740942221
ArcTan(0.9)=0.732815101782
ArcTan(1.0)=0.785398163394
ArcTan(1.1)=0.832981266675
Dernière mise à jour : Dimanche, le 16 novembre 2014