<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div dir="ltr">Hi Fredrico,</div><div dir="ltr"><br></div><div dir="ltr">See the discussion @</div><div dir="ltr"><br></div><div dir="ltr"><a href="https://stackoverflow.com/questions/52736011/instruction-fyl2xp1">https://stackoverflow.com/questions/52736011/instruction-fyl2xp1</a></div><div dir="ltr"><br></div><div dir="ltr">here is a relevant excerpt: </div><div dir="ltr"><br></div><div dir="ltr"><span style="caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 12px; -webkit-text-size-adjust: 100%; background-color: rgb(250, 250, 251);">The Taylor series for </span><code style="box-sizing: inherit; margin: 0px 1px; padding: 0px 2px; border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-stretch: inherit; line-height: inherit; font-size: 11px; vertical-align: baseline; word-break: break-all; background-color: rgba(0, 0, 0, 0.0745098); display: inline-block; caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); -webkit-text-size-adjust: 100%;">log(x)</code><span style="caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 12px; -webkit-text-size-adjust: 100%; background-color: rgb(250, 250, 251);"> is usually done about </span><code style="box-sizing: inherit; margin: 0px 1px; padding: 0px 2px; border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-stretch: inherit; line-height: inherit; font-size: 11px; vertical-align: baseline; word-break: break-all; background-color: rgba(0, 0, 0, 0.0745098); display: inline-block; caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); -webkit-text-size-adjust: 100%;">x = 1</code><span style="caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 12px; -webkit-text-size-adjust: 100%; background-color: rgb(250, 250, 251);">. So every term will have </span><code style="box-sizing: inherit; margin: 0px 1px; padding: 0px 2px; border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-stretch: inherit; line-height: inherit; font-size: 11px; vertical-align: baseline; word-break: break-all; background-color: rgba(0, 0, 0, 0.0745098); display: inline-block; caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); -webkit-text-size-adjust: 100%;">x - 1</code><span style="caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 12px; -webkit-text-size-adjust: 100%; background-color: rgb(250, 250, 251);">. If you're trying to compute </span><code style="box-sizing: inherit; margin: 0px 1px; padding: 0px 2px; border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-stretch: inherit; line-height: inherit; font-size: 11px; vertical-align: baseline; word-break: break-all; background-color: rgba(0, 0, 0, 0.0745098); display: inline-block; caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); -webkit-text-size-adjust: 100%;">log(x + 1)</code><span style="caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 12px; -webkit-text-size-adjust: 100%; background-color: rgb(250, 250, 251);"> for a very small </span><code style="box-sizing: inherit; margin: 0px 1px; padding: 0px 2px; border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-stretch: inherit; line-height: inherit; font-size: 11px; vertical-align: baseline; word-break: break-all; background-color: rgba(0, 0, 0, 0.0745098); display: inline-block; caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); -webkit-text-size-adjust: 100%;">x</code><span style="caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 12px; -webkit-text-size-adjust: 100%; background-color: rgb(250, 250, 251);">, a direct call as </span><code style="box-sizing: inherit; margin: 0px 1px; padding: 0px 2px; border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-stretch: inherit; line-height: inherit; font-size: 11px; vertical-align: baseline; word-break: break-all; background-color: rgba(0, 0, 0, 0.0745098); display: inline-block; caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); -webkit-text-size-adjust: 100%;">log(x + 1)</code><span style="caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 12px; -webkit-text-size-adjust: 100%; background-color: rgb(250, 250, 251);"> will result in </span><code style="box-sizing: inherit; margin: 0px 1px; padding: 0px 2px; border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-stretch: inherit; line-height: inherit; font-size: 11px; vertical-align: baseline; word-break: break-all; background-color: rgba(0, 0, 0, 0.0745098); display: inline-block; caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); -webkit-text-size-adjust: 100%;">x + 1 - 1</code><span style="caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 12px; -webkit-text-size-adjust: 100%; background-color: rgb(250, 250, 251);"> which will drop all the low-order bits of </span><code style="box-sizing: inherit; margin: 0px 1px; padding: 0px 2px; border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-stretch: inherit; line-height: inherit; font-size: 11px; vertical-align: baseline; word-break: break-all; background-color: rgba(0, 0, 0, 0.0745098); display: inline-block; caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); -webkit-text-size-adjust: 100%;">x</code><span style="caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 12px; -webkit-text-size-adjust: 100%; background-color: rgb(250, 250, 251);"> - thereby losing precision if </span><code style="box-sizing: inherit; margin: 0px 1px; padding: 0px 2px; border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-stretch: inherit; line-height: inherit; font-size: 11px; vertical-align: baseline; word-break: break-all; background-color: rgba(0, 0, 0, 0.0745098); display: inline-block; caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); -webkit-text-size-adjust: 100%;">x</code><span style="caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 12px; -webkit-text-size-adjust: 100%; background-color: rgb(250, 250, 251);"> is really small. A built-in </span><code style="box-sizing: inherit; margin: 0px 1px; padding: 0px 2px; border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-stretch: inherit; line-height: inherit; font-size: 11px; vertical-align: baseline; word-break: break-all; background-color: rgba(0, 0, 0, 0.0745098); display: inline-block; caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); -webkit-text-size-adjust: 100%;">log(x+1)</code><span style="caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 12px; -webkit-text-size-adjust: 100%; background-color: rgb(250, 250, 251);">can then elide this </span><code style="box-sizing: inherit; margin: 0px 1px; padding: 0px 2px; border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-stretch: inherit; line-height: inherit; font-size: 11px; vertical-align: baseline; word-break: break-all; background-color: rgba(0, 0, 0, 0.0745098); display: inline-block; caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); -webkit-text-size-adjust: 100%;">x + 1 - 1</code><span style="caret-color: rgb(104, 108, 110); color: rgb(104, 108, 110); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 12px; -webkit-text-size-adjust: 100%; background-color: rgb(250, 250, 251);"> step and preserve the full precision</span></div><div dir="ltr"><br><br><blockquote type="cite">Le 3 mai 2020 à 08:52, Federico Miyara <fmiyara@fceia.unr.edu.ar> a écrit :<br><br></blockquote></div><blockquote type="cite"><div dir="ltr">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<font face="Courier New"><br>
Dear all,<br>
<br>
I was comparing the accuracy of FFT and two exact formulas for the
FFT of a complex exponential and I was first surprised by a
relative accuracy of only 10^-13 for N = 4096, but on second
thought it may be related to arithmetic errors due to about
N*log2(N) sums and products. <br>
<br>
But I was much more surprised to detect similar errors between
different exact formulas. These formulas involve a few instances
of exponentials so I conjectured that the problem may be related
to the exponential accuracy. When trying to find some information</font><font face="Courier New"> about accuracy</font><font face="Courier New">
in the documentation I found none. <br>
<br>
The only mention in the elementary function set to accuracy
appears in log1p(), a strange function equal to log(1+x), which is
seemingly included to fix some accuracy problem of the natural
logarithm very close to 1. Intuition suggests that near 1 the
Taylor approximation for log(1+x) should work very well. I guess
that is what log1p() does, so I wonder why a function such as
log1p is really necessary. It seems more reasonable to internally
detect the favorable situation and switch the algorithm to get the
maximum attainable accuracy. So if one needs an accurate log(1+x)
function, one would</font><font face="Courier New"> just</font><font face="Courier New"> type log(1+x)!<br>
<br>
But regardless of this discusion, I think it would very useful
some hints about accuracy in the help pages of elementary and
other functions.<br>
<br>
For instance, with format(25)<br>
<br>
--> exp(10) <br>
ans =<br>
22026.4657948067<u>1</u>7894971<br>
<br>
while the Windows calculator (which is generally accurate to the
last shown digit) yields<br>
<br>
22026.4657948067<u>1</u>6516957900645284<br>
<br>
The underlined digits are the least significant ones common to
both solutions. Scilab shows up to 25 digits, but only the first
16 of them are accurate.<br>
<br>
Regards, <br>
<br>
Federico Miyara<br>
<br>
</font>
<span>_______________________________________________</span><br><span>users mailing list</span><br><span>users@lists.scilab.org</span><br><span>https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users</span><br></div></blockquote></body></html>