[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Motion: Update transcendental functions with crlibm progress.



I would like to amend my motion with corrections and suggestions from Jim
Thomas.  The changes are:

    Remove the editorial note about sin not underflowing for single- and
    double-precision (this does not substantively change the motion):

        Operation:  sin
        Function:   sin(x)
        Domain:     [-pi, +pi]
        Exceptions: |x| = infinity: invalid;
                    underflow

    Separate sinpi and cospi and note that sinpi may underflow:

        Operation:  sinpi
        Function:   sin(pi*x)
        Domain:     empty
        Exceptions: |x| = infinity: invalid;
                    underflow

        Operation:  cospi
        Function:   cos(pi*x)
        Domain:     empty
        Exceptions: |x| = infinity: invalid

    Add a footnote about exceptions that can occur in weird formats (and
    license the editors to change the phrasing):

        Some functions, such as cospi and log, can be made to underflow
        and/or overflow in an abnormal format with a huge precision and
        a small exponent field.  These are not noted in table D.1 and
        are not anticipated to occur in common practice.

The entire new text of the motion follows.

                                -- edp (Eric Postpischil)
                                http://edp.org



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

        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
        Function:   sin(pi*x)
        Domain:     empty
        Exceptions: |x| = infinity: invalid;
                    underflow

        Operation:  cospi
        Function:   cos(pi*x)
        Domain:     empty
        Exceptions: |x| = infinity: invalid

        Operation:  atanpi
        Function:   atan(x)/pi
        Domain:     empty
        Exceptions: underflow

    Add a footnote to table D.1. about exceptions that can occur in weird
    formats (and license the editors to change the phrasing):

        Some functions, such as cospi and log, can be made to underflow
        and/or overflow in an abnormal format with a huge precision and
        a small exponent field.  These are not noted in table D.1 and
        are not anticipated to occur in common practice.

754 | revision | FAQ | references | list archive