in BASIC ROM:
|List of all BASIC keywords|
Type: Numeric Function
The numerical function ATN is a mathematical function that returns the arc tangent of a numeric value (the inverse function of TAN). The resulting value is the angle in radians of the given tangent. To convert radians into degrees use the formula (rad*180/π) where rad is the angle in radians.
If the term given in the parentheses is non-numerical, the BASIC error ?TYPE MISMATCH ERROR occurrs. If the argument expression is not in the range of a floating point value the execution yields the BASIC error ?OVERFLOW ERROR. Omitting the numeric argument or to many arguments results in a ?SYNTAX ERROR.
Accuracy[edit | edit source]
The graph to the right was obtained by comparing results from the BASIC ATN function to values computed on a modern x86-type PC.
At least for the plotted domain of [-5,+5], ATN matches the true value to 30 bits. No part of the domain proves to be problematic.
Implementation details[edit | edit source]
Let the parameter be X.
The inverse tangent is an odd function; that is, ATN(-X) = -ATN(X). The BASIC routine uses this property to simplify its calculations a bit. It saves the sign, and then computes AX = |X|.
If AX > 1, ATN uses the identity ATN(X) = π/2 - ATN(1/X) to limit AX to the interval [0, 1].
It uses this polynomial approximation to calculate ATN(AX) for 0 <= AX <= 1:
- -6.8479391189*10-4 * T23 + 4.8509421558*10-3 * T21 - 1.6111701843*10-2 * T19 + 3.4209638048*10-2 * T17 - 5.4279132761*10-2 * T15 + 7.2457196540*10-2 * T13
- - 8.9802395378*10-2 * T11 + 0.11093241343 * T9 - 0.14283980767 * T7 + 0.19999912049 * T5 - 0.33333331568 * T3 + T
and modifies the result according to the identities described above.
The derivation of the polynomial is not publicly known.
Examples[edit | edit source]
The result is equivalent to π, but differs slightly from π caused by the iterative internal calculation.