<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div><br></div><div>On Jan 15, 2015, at 3:47 PM, Neil Girdhar <<a href="mailto:mistersheik@gmail.com">mistersheik@gmail.com</a>> wrote:<br><br></div><blockquote type="cite"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jan 15, 2015 at 6:36 PM, Chris Barker <span dir="ltr"><<a href="mailto:chris.barker@noaa.gov" target="_blank">chris.barker@noaa.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class="">On Thu, Jan 15, 2015 at 3:31 PM, Neil Girdhar <span dir="ltr"><<a href="mailto:mistersheik@gmail.com" target="_blank">mistersheik@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">You can always disable atol by setting atol to zero.  I really don't see what's wrong with their implementation.</div></blockquote><div><br></div></span><div>1) the default should be zero in that case having a default close to the rtol default is asking for trouble.</div></div></div></div></blockquote><div><br></div><div>It's not that close: rtol defaults to 1000 times bigger than atol.</div></div></div></div></blockquote><div><br></div><div>That's pretty huge if your values are on order of 1e-100 ;-)</div><div><br></div><div>Which is my point -- this approach only makes sense for values over order 1.  Then the scaled relative error will be a lot larger, so atol sets a sort of lower bound on the error. But if the magnitude of your values is small, then the scaled value becomes small, and the atol overwhelms it.</div><div><br></div><div>This kind of "switch to an absolute tolerance when close to zero" behavior is what I've been looking for, but I don't like how numpy does it.</div><div><br></div><div><br></div><div>-Chris</div><div><br></div><div><br></div><div>-CHB</div><div><br></div><br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>2) if the user has both large and small numbers, there IS no appropriate value for a_tol for all of them.</div></div></div></div></blockquote><div><br></div><div>The relative error is not symmetric, so it's not about having "large and small numbers".  Your estimate should not affect the error you tolerate.</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>They simply should not be mixed in that way.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>-Chris</div></font></span><div><div class="h5"><div><br></div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jan 15, 2015 at 5:50 PM, Chris Barker <span dir="ltr"><<a href="mailto:chris.barker@noaa.gov" target="_blank">chris.barker@noaa.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span>On Thu, Jan 15, 2015 at 1:52 PM, Neil Girdhar <span dir="ltr"><<a href="mailto:mistersheik@gmail.com" target="_blank">mistersheik@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">The point is that this function is already in Python</div></blockquote><div><br></div></span><div>I  don't think somethign being in an external package means that we have to do it the same way in teh stdlib -- even a widely used and well regarded package like numpy. And I say this as someone that has "import numpy" in maybe 90% of my python files.</div><div><br></div><div>Maybe we should be careful to give it a very distinct name, however, to avoid confusion.</div><span><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"> and if you want to do something different, you should have a really good reason to do it differently.</div></blockquote><div><br></div></span><div>I'm not sure I agree, but we do in this case anyway. The truth is, while really smart people wrote numpy, many of the algorithms in there did not go through nearly the level of review currently required for the python standard library</div><span><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">  If you were to add a function to math, say math.close, it should work like numpy.allclose in my opinion.<div><br></div><div>For reference, numpy does this:</div><div><br></div><div><span style="color:rgb(51,51,51);font-family:'Open Sans',sans-serif;font-size:13px;line-height:19px">absolute(</span><em style="font-style:italic;color:rgb(51,51,51);font-family:'Open Sans',sans-serif;font-size:13px;line-height:19px">a</em><span style="color:rgb(51,51,51);font-family:'Open Sans',sans-serif;font-size:13px;line-height:19px"> - </span><em style="font-style:italic;color:rgb(51,51,51);font-family:'Open Sans',sans-serif;font-size:13px;line-height:19px">b</em><span style="color:rgb(51,51,51);font-family:'Open Sans',sans-serif;font-size:13px;line-height:19px">) <= (</span><em style="font-style:italic;color:rgb(51,51,51);font-family:'Open Sans',sans-serif;font-size:13px;line-height:19px">atol</em><span style="color:rgb(51,51,51);font-family:'Open Sans',sans-serif;font-size:13px;line-height:19px"> + </span><em style="font-style:italic;color:rgb(51,51,51);font-family:'Open Sans',sans-serif;font-size:13px;line-height:19px">rtol</em><span style="color:rgb(51,51,51);font-family:'Open Sans',sans-serif;font-size:13px;line-height:19px"> * absolute(</span><em style="font-style:italic;color:rgb(51,51,51);font-family:'Open Sans',sans-serif;font-size:13px;line-height:19px">b</em><span style="color:rgb(51,51,51);font-family:'Open Sans',sans-serif;font-size:13px;line-height:19px">))</span><br></div><div><span style="color:rgb(51,51,51);font-family:'Open Sans',sans-serif;font-size:13px;line-height:19px"><br></span></div><div><font color="#333333" face="Open Sans, sans-serif"><span style="line-height:19px">where atol is an absolute tolerance and rtol is a relative tolerance (relative to the actual value b).  This subsumes most of the proposals here.</span></font></div></div></blockquote><div><br></div></span><div>adding atol  in there "takes care of" the near zero and straddleing zero issue ( I suspect that's why it's done that way), but it is fatally wrong for values much less than 1.0 --  the atol totally overwhelms the rtol.</div><div><br></div><div>See my post earlier today.</div><span><font color="#888888"><div><br></div><div>-Chris</div><div><br></div><div><br></div></font></span></div><span>-- <br><div><br>Christopher Barker, Ph.D.<br>Oceanographer<br><br>Emergency Response Division<br>NOAA/NOS/OR&R            <a href="tel:%28206%29%20526-6959" value="+12065266959" target="_blank">(206) 526-6959</a>   voice<br>7600 Sand Point Way NE   <a href="tel:%28206%29%20526-6329" value="+12065266329" target="_blank">(206) 526-6329</a>   fax<br>Seattle, WA  98115       <a href="tel:%28206%29%20526-6317" value="+12065266317" target="_blank">(206) 526-6317</a>   main reception<br><br><a href="mailto:Chris.Barker@noaa.gov" target="_blank">Chris.Barker@noaa.gov</a></div>
</span></div></div>
</blockquote></div><br></div>
</div></div></blockquote></div></div></div><div><div class="h5"><br><br clear="all"><div><br></div>-- <br><div><br>Christopher Barker, Ph.D.<br>Oceanographer<br><br>Emergency Response Division<br>NOAA/NOS/OR&R            <a href="tel:%28206%29%20526-6959" value="+12065266959" target="_blank">(206) 526-6959</a>   voice<br>7600 Sand Point Way NE   <a href="tel:%28206%29%20526-6329" value="+12065266329" target="_blank">(206) 526-6329</a>   fax<br>Seattle, WA  98115       <a href="tel:%28206%29%20526-6317" value="+12065266317" target="_blank">(206) 526-6317</a>   main reception<br><br><a href="mailto:Chris.Barker@noaa.gov" target="_blank">Chris.Barker@noaa.gov</a></div>
</div></div></div></div>
</blockquote></div><br></div></div>
</blockquote></body></html>