# [Python-ideas] PEP 485: A Function for testing approximate equality

Ron Adam ron3200 at gmail.com
Sat Jan 24 10:11:40 CET 2015

```
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

```