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

Re: [Stds-754] Motion: Update transcendental functions with crlibm progress.



        This is item 19 for August.  - Dan

From: "Eric Postpischil" <stds-754+ieee.org@xxxxxxx>
Date: Tue, 1 Aug 2006 08:17:16 -0700
Subject: [Stds-754] 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


754 | revision | FAQ | references | list archive