
On 01/23/2015 11:02 PM, Andrew Barnert wrote:
I guess the key question is if someone would want both an relative tolerance and an absolute tolerance, aside from the zero issue.
Which already raises whether they'd want to min, max, average, or sum the two. And frankly I have no idea.
Today I experimented with implementing is_close by using a parabola equation. y = a(x-h)**2 + k Note: The close area is outside the curve of the parabola. The distance between the point u and v, correspond to the y value, and the x value corresponds to the relative distance from the vertex. def is_parabola_close(u, v, rtol, atol=0): if u == v: return True if u * v < 0: return False x = (u + v) * .5 y = (1.0/x*rtol) * x**2 + atol return abs(u - v) <= y This line: y = (1.0/x*rtol) * x**2 + atol Reduces to: y = rtol * x + atol Which looks familiar. LOL It turns out the relative distance from the vertex means the x distance corresponds to the focus, and the y distance matches the width, for all values of x and y. I thought this was interesting even though it didn't give the result I visualised. I'm going to add a "size" keyword to the function to make the vertex of the parabola independent from the distance of the two points. ;-) I'm not sure it helps the PEP much though. Cheers, Ron