Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4345910

On x86 platforms, C2 Math.{sin, cos} implementations violate the 1.3 spec

    • beta
    • x86
    • solaris_7, windows_98

      In 1.3, the specification for java.lang.Math.{sin, cos} was changed
      from an operational definition (use FDLIBM algorithms) to a
      declarative one (use any approximation with 1 ulp accuracy and good
      monotonicity properties). On x86 platforms, for values smaller in
      magnitude than 2^63, effectively the C1 and C2 compilers use the raw
      x86 instructions fsin and fcos to implement Math.{sin, cos}. This
      does not follow the spec since the 66 bit argument reduction used by
      fsin/fcos introduces large deviations from the true values of sine and
      cosine for some inputs. Outside of +/-2^63, C1 and C2 use FDLIBM
      algorithms which do proper argument reduction. This introduces an
      inconsistency in the periodicity of the approximation to sine/cosine.

      The solution is to have the Math.{sin, cos} do their own argument
      reduction to [-pi/4, pi/4] and then call fsin/fcos; this will
      guarantee the specified accuracy and monotonicity properties. The
      needed argument reduction functions are already available from FDLIBM,
      http://www.netlib.org/fdlibm.

      This bug is filed against C1 as bug id 4345903.

          Loading...
          Uploaded image for project: 'JDK'
          1. JDK
          2. JDK-4345910

          On x86 platforms, C2 Math.{sin, cos} implementations violate the 1.3 spec

            • beta
            • x86
            • solaris_7, windows_98

              In 1.3, the specification for java.lang.Math.{sin, cos} was changed
              from an operational definition (use FDLIBM algorithms) to a
              declarative one (use any approximation with 1 ulp accuracy and good
              monotonicity properties). On x86 platforms, for values smaller in
              magnitude than 2^63, effectively the C1 and C2 compilers use the raw
              x86 instructions fsin and fcos to implement Math.{sin, cos}. This
              does not follow the spec since the 66 bit argument reduction used by
              fsin/fcos introduces large deviations from the true values of sine and
              cosine for some inputs. Outside of +/-2^63, C1 and C2 use FDLIBM
              algorithms which do proper argument reduction. This introduces an
              inconsistency in the periodicity of the approximation to sine/cosine.

              The solution is to have the Math.{sin, cos} do their own argument
              reduction to [-pi/4, pi/4] and then call fsin/fcos; this will
              guarantee the specified accuracy and monotonicity properties. The
              needed argument reduction functions are already available from FDLIBM,
              http://www.netlib.org/fdlibm.

              This bug is filed against C1 as bug id 4345903.

                    cclicksunw Clifford Click (Inactive)
                    darcy Joe Darcy
                    Votes:
                    0 Vote for this issue
                    Watchers:
                    0 Start watching this issue

                      Created:
                      Updated:
                      Resolved:
                      Imported:
                      Indexed:

                        cclicksunw Clifford Click (Inactive)
                        darcy Joe Darcy
                        Votes:
                        0 Vote for this issue
                        Watchers:
                        0 Start watching this issue

                          Created:
                          Updated:
                          Resolved:
                          Imported:
                          Indexed: