On Mon, Feb 06, 2006, Chris or Leslie Smith wrote: >Aahz: >>Alex: >>> > || def areclose(x,y,rtol=1.e-5,atol=1.e-8): > || return abs(x-y)<atol+rtol*abs(y) > | > | Looks interesting. I don't quite understand what atol/rtol are, > | though. > > Does it help to spell it like this? > > def areclose(x, y, relative_err = 1.e-5, absolute_err=1.e-8): > diff = abs(x - y) > ave = (abs(x) + abs(y))/2 > return diff < absolute_err or diff/ave < relative_err > > Also, separating the two terms with 'or' rather than '+' makes the > two error terms mean more what they are named. The '+' mixes the two > effects and even though the result is basically the same, it makes it > difficult to explain when the test will be true. Yes, that's a big help. I was a bit concerned that this would have no utility for numbers with large magnitude. Alex, given your focus on Python readability, I'm a bit surprised you didn't write this to start with! -- Aahz (aahz at pythoncraft.com) <*> http://www.pythoncraft.com/ "19. A language that doesn't affect the way you think about programming, is not worth knowing." --Alan Perlis
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4