This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Add sinh(tanh(x)) and cosh(tanh(x)) rules
On 10/18, Jeff Law wrote:
> On 10/17/18 4:21 PM, Giuliano Augusto Faulin Belinassi wrote:
> > Oh, please note that the error that I'm talking about is the
> > comparison with the result obtained before and after the
> > simplification. It is possible that the result obtained after the
> > simplification be more precise when compared to an arbitrary precise
> > value (example, a 30 digits precise approximation). Well, I will try
> > check that.
> That would be helpful. Obviously if we're getting more precise, then
> that's a good thing :-)
>
> jeff
Well, I compared the results before and after the simplifications with a 512-bit
precise mpfr value. Unfortunately, I found that sometimes the error is very
noticeable :-( .
For example, using floats and comparing with a 512 precision mpfr calculation
with input : = 9.99966979026794433593750000000000000000000000000000e-01
cosh: before : = 1.23053413391113281250000000000000000000000000000000e+02
cosh: after : = 1.23052398681640625000000000000000000000000000000000e+02
cosh: mpfr512: = 1.23053409952258504358633865742873246642102963529577e+02
error before : = 3.43885477689136613425712675335789703647042270993727e-06
error after : = 1.01127061787935863386574287324664210296352957729006e-03
There are also some significant loss of precision with long doubles:
with input : = 9.99999999999996799706237365912286918501195032149553e-01
cosh: before : = 1.24994262843556815705596818588674068450927734375000e+07
cosh: after : = 1.24994262843556715697559411637485027313232421875000e+07
cosh: mpfr512: = 1.24994262843556815704069193408098058772318248178348e+07
error before : = 1.52762518057600967860948619665184971612393688891101e-13
error after : = 1.00006509781770613031459085826303348150283876063111e-08
So yes, precision may be a problem here.