[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
Motion: Update transcendental functions with crlibm progress.
Motion:
Update Table D.1 with new results from crlibm 0.14.
Rationale:
The crlibm project has new results showing the feasibility of these
new intervals.
Edits:
[[Text in double brackets is comment, not part of the motion.]]
[[I use the format below because it is easier to compose, and, I judge,
read, in plain text email than trying to produce a table format. This
motion is not intended to change the draft's table format to this
format.
"Domain" stands for the "Correctly-rounded Domain" column.]]
Change Table D.1 to:
Operation: exp
Function: e^x
Domain: [-infinity, +infinity] [[Complete.]]
Exceptions: overflow; underflow
Operation: log, log2, log10
Function: log[e](x), log[2](x), log[10](x)
Domain: (0, +infinity] [[Complete.]]
Exceptions: x = 0: division by zero;
x < 0: invalid
Operation: sinh, cosh
Function: sinh(x), cosh(x)
Domain: [-infinity, +infinity] [[Complete.]]
Exceptions: overflow
Operation: sin
Function: sin(x)
Domain: [-pi, +pi]
Exceptions: |x| = infinity: invalid;
underflow
[[Even if sin does not underflow for any single- or
double-precision number, it might for other
precisions.]]
Operation: cos
Function: cos(x)
Domain: [-pi, +pi]
Exceptions: |x| = infinity: invalid;
underflow
[[Even if cos does not underflow for any single- or
double-precision number, it might for other
precisions.]]
Operation: tan
Function: tan(x)
Domain: [-pi, +pi]
Exceptions: |x| = infinity: invalid;
underflow; overflow
[[Even if tan does not underflow or overflow for any
single-
or double-precision number, it might for other
precisions.]]
Operation: asin
Function: asin(x)
Domain: [-1, +1] [[Complete.]]
Exceptions: x not in [-1, +1]: invalid
Operation: acos
Function: acos(x)
Domain: [-1, 1] [[Complete.]]
Exceptions: x not in [-1, +1]: invalid
Operation: atan
Function: atan(x)
Domain: [-infinity, +infinity] [[Complete.]]
Exceptions: underflow
[[Retain existing notes about atan.]]
Operation: expm1
Function: e^x-1
Domain: [-infinity, +infinity] [[Complete.]]
Exceptions: overflow; underflow
Operation: log1p
Function: log[e](1+x)
Domain: (-1, +infinity] [[Complete.]]
Exceptions: x = -1: division by zero;
x < -1: invalid
Operation: sinpi, cospi
Function: sin(pi*x), cos(pi*x)
Domain: empty
Exceptions: |x| = infinity: invalid
Operation: atanpi
Function: atan(x)/pi
Domain: empty
Exceptions: underflow
Comments:
The table does not indicate that sinpi and cospi can generate underflow.
However, if somebody defines a format with a huge precision and a small
exponent, such that the ULP of a number around 1 is in the denormal
range,
then sinpi and cospi could be made to underflow. So if anybody wants to
amend this motion to add underflow to sinpi and cospi, I will accept it
as friendly. The same is true of the log functions. Plus, log can
be made to overflow. (E.g., with two exponent bits and 13 significand
bits, log2 of the denormal 0x0.001p0 is -12, which is less than any
representable finite number.)
-- edp (Eric Postpischil)
http://edp.org
But dull minds are never either intuitive or mathematical. -- Blaise Pascal