[ Arithmetic | The ECLiPSe Built-In Predicates | Reference Manual | Alphabetic Index ]

# atan(+Y, +X, -Result)

Computes the arc tangent function of two variables and unifies the resulting value with Result.
Y
A number.
X
A number.
Result
A variable, float or breal.

## Description

This predicate is used by the ECLiPSe compiler to expand evaluable arithmetic expressions. So the call to atan(Y, X, Result) is equivalent to
```    Result is atan(Y, X)
```
which should be preferred for portability.

It is similar to calculating the arc tangent of Y/X, except that the signs of both arguments are used to determine the quadrant of the result. The result lies in the interval -pi..pi. The operation is valid even if X is zero, in which case the result is pi/2 or -pi/2. One application is the conversion of cartesian to polar coordinates, where this function computes the angle component (in radians).

In coroutining mode, if X or Y is uninstantiated, the call to atan/3 is delayed until both variables are instantiated.

### Modes and Determinism

• atan(+, +, -) is det

### Exceptions

(4) instantiation fault
X or Y is not instantiated (non-coroutining mode only).
(5) type error
Result is a number but not a float or breal
(24) number expected
Number is not of a numeric type.
(24) number expected
Result is neither a number nor a variable.

## Examples

```Success:
atan( 0.0, -1.0, Result).	(gives Result =  3.141592)
atan( 1.0, -1.0, Result).	(gives Result =  2.356194)
atan( 1.0,  0.0, Result).	(gives Result =  1.570796)
atan( 1.0,  1.0, Result).	(gives Result =  0.785398)
atan( 0.0,  0.0, Result).	(gives Result =  0.0)
atan(-1.0,  1.0, Result).	(gives Result = -0.785398)
atan(-1.0,  0.0, Result).	(gives Result = -1.570796)
atan(-1.0, -1.0, Result).	(gives Result = -2.356194)
atan(-0.0, -1.0, Result).	(gives Result = -3.141592)

atan( 7.0,  7.0, Result).	(gives Result =  0.785398)

Error:
atan(A, 0.0, 6.0).              (Error 4).
atan(1.55741, 0.0, 1).          (Error 5).
atan(1 + 0.55741, 1.0, R).      (Error 24).
```