Re: [Boost-bugs] [Boost C++ Libraries] #13606: sinc_pi incorrect taylor_0_bound

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #13606: sinc_pi incorrect taylor_0_bound
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2018-06-18 08:47:52


#13606: sinc_pi incorrect taylor_0_bound
-------------------------------+------------------------------------
  Reporter: minorlogic@… | Owner: John Maddock
      Type: Bugs | Status: reopened
 Milestone: To Be Determined | Component: math
   Version: Boost 1.63.0 | Severity: Optimization
Resolution: | Keywords: sinc_pi taylor_0_bound
-------------------------------+------------------------------------
Changes (by anonymous):

 * status: closed => reopened
 * resolution: fixed =>

Comment:

 Bounds is still incorrect.
 Should look like

 - Range0 for abs(x) in ( 0 , pow(eps, 1/2) )
  result == 1.0, cause next Taylor x2/6 LESS than "epsilon" and 1.0-x2/6 ==
 1.0

 For example (for double) if abs(x) == 1.0e-10. The x2 == 1.0e-20 and
 1.0e-20/6 is less than double::epsilon, so 1.0 + 1.0e-20/6 == 1.0.

 - Range1 for abs(x) in ( pow(eps, 1/2) , pow(eps, 1/4) )
 result == 1.0-x2/6, cause next Taylor x2*x2/120 LESS than "epsilon" even
 in Horner method. Important signs of x2*x2 is out of epsilon range.

 - Range2 for abs(x) in ( pow(eps, 1/4) , pow(eps, 1/6) )
 result == 1.0 + x2 * (-1.0 + x2 / 20.0) / 6.0;, cause x^6/7! LESS than
 "epsilon" even in Horner method.

 NOTE: We can use approximate bounds from above ignoring Taylor series
 coefficients. Calculation of exact bounds is not trivial, and should use
 exact analytical precision bounds of all operations.

-- 
Ticket URL: <https://svn.boost.org/trac10/ticket/13606#comment:2>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2018-06-18 08:54:50 UTC