<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Jan 27, 2015 at 9:42 AM, Zero Piraeus <span dir="ltr"><<a href="mailto:schesis@gmail.com" target="_blank">schesis@gmail.com</a>></span> wrote:<br><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Disclaimer: I haven't read all of this thread, and what I have read I've<br>
sometimes skimmed (and apparently some of the discussion was off list<br>
anyway).</blockquote><div><br></div><div>Nothing substantial was off-list -- thank god, there's been plenty on list!</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Once this exists, at some point somebody's going to write:<br>
<br>
    def near_miss(data, tol):<br>
        pairs = itertools.combinations(data.values(), 2)<br>
        return any(is_close(a, b, tol) for a, b in pairs)<br>
<br>
and then (if it's asymmetric) be very surprised when this:<br>
<br>
    example = {'A': 0.01, 'B': 2.34, 'C': 5.67, 'D': 5.68, 'E': 9.99}<br>
<br>
    near_miss(example, 1/568)<br>
<br>
returns True half the time and False the other half.</blockquote><div><br></div><div>huh? itertools combinations returns a deterministic result, yes?</div><div><br></div><div>But that is indeed a case where the question really is "are these two values close to each-other", with no implied order. IS that a lilkey real world use-case? I have no idea.</div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> That's going to be<br>
a really nasty heisenbug when it crops up in real code, especially since<br>
it's only going to change for each invocation of the interpreter.<br></blockquote><div><br></div><div>I still don't follow you here -- the asymmetric test is order dependent, it's not random.</div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I don't really buy the idea that it'll almost always be used with<br>
tolerances of 1e-8 etc. If it goes in the stdlib, it'll be used in ways<br>
no-one here anticipates (and which are not, intuitively, "wrong").<br></blockquote><div><br></div><div>Indeed -- absolutely the case -- but all we can do is document the behavior. On the face of it, a symmetric approach seems less surprising, but really the surprize is simply different:</div><div><br></div><div>In the asymmetric case, the results may depend on the order of the arguments.</div><div><br></div><div>In the symmetric case, the results may depend on whether the actual value is less than or greater than the expected value.</div><div><br></div><div>I hark back to the point Steven made: what really matter is the difference between the values. if someone is asking:</div><div><br></div><div>Is this value within 10% of the value 10 -- they are expecting that the difference used will be 10% of ten, or 1.0 -- so any value between 9 and 11 is "close". But with a symmetric test -- the actual difference accepted will be a function of whether the tested value is less than or greater than the expected value -- that could be equally or more surprising than the asymmetry.</div><div><br></div><div>I'm still looking for a case where a user would likely pass the same value into the function in a different order -- wouldn't s/he pick an order (maybe arbitratily) and use that?</div><div><br></div><div>-Chris</div></div><br clear="all"><div><br></div><div><br></div>-- <br><div class="gmail_signature"><br>Christopher Barker, Ph.D.<br>Oceanographer<br><br>Emergency Response Division<br>NOAA/NOS/OR&R            (206) 526-6959   voice<br>7600 Sand Point Way NE   (206) 526-6329   fax<br>Seattle, WA  98115       (206) 526-6317   main reception<br><br><a href="mailto:Chris.Barker@noaa.gov" target="_blank">Chris.Barker@noaa.gov</a></div>
</div></div>