This module provides trigonometric multi precision functions. The expressions sin/3, cos/3, atan/3, exp/3 and log/3 are implemented by a range reduction and a Maclaurin respective Taylor series. The current implementation estimates the number of terms needed for the Maclaurin respective Taylor series and then applies a Horner schema.

Examples:?- X is mp((1001/1000)**99, 30).

X = 0d1.10401168603473323514396127584

?- X is mp(4*acos(sqrt(1/2)), 30).

X = 0d3.14159265358979323846264338330

The expression atan2/4 is bootstrapped from the expression atan/3. Further the expressions asin/3 and acos/3 are then bootstrapped from the expression atan2/4. On the other hand the expression **/4 is bootstrapped from the expressions exp/3 and log/3. Speed and accuracy of the series and the bootstrapping is not yet optimized.

The following multi precision expressions are defined:**sin(X, P, Y) (multi):**- The predicate succeeds in Y with sin(X) for precision P.
**cos(X, P, Y) (multi):**- The predicate succeeds in Y with cos(X) for precision P.
**tan(X, P, Y) (multi):**- The predicate succeeds in Y with tan(X) for precision P.
**atan(X, P, Y) (multi):**- The predicate succeeds in Y with atan(X) for precision P.
**atan2(Y, X, P, Z) (multi):**- The predicate succeeds in Z with atan2(Y,X) for precision P.
**asin(X, P, Y) (multi):**- The predicate succeeds in Y with asin(X) for precision P.
**acos(X, P, Y) (multi):**- The predicate succeeds in Y with acos(X) for precision P.
**exp(X, P, Y) (multi):**- The predicate succeeds in Y with exp(X) for precision P.
**log(X, P, Y) (multi):**- The predicate succeeds in Y with log(X) for precision P.
****(X, Y, P, Z) (multi):**- The predicate succeeds in Z with X**Y for precision P.
**pi(P, X) (multi):**- The predicate succeeds in X with the circle number for precision P.
**e(P, X) (multi):**- The predicate succeeds in X with the Euler number for precision P.