Ashley Kanter left a comment on Tuesday’s post Within one percent with an approximation I’d never seen.

One that I find handy is the hypotenuse of a right-triangle with other sides

aandb(wherea<b) can be approximated to within 1% by 5(a+b)/7 when 1.04 ≤b/a≤1.50.

That sounds crazy, but it’s right. Since we’re talking about relative error, not absolute error, we can assume without loss of generality that *a* = 1. Here’s a plot of the relative error in the approximation.

Here’s the Python code that produced the plot.

from numpy import linspace import matplotlib.pyplot as plt exact = lambda b: (b**2 + 1)**0.5 approx = lambda b: 5*(1+b)/7 rel_error = lambda b: abs((exact(b) - approx(b))/exact(b)) x = linspace(1, 1.5, 100) plt.plot(x, rel_error(x)) plt.xlabel("$b$") plt.ylabel("relative error") plt.title(r"$\sqrt{1+b^2} \approx 5(1+b)/7$") plt.savefig("hyp_approx.png")

You can solve a quadratic equation to find that the error is zero at *b* = 4/3. In fact, this gives a clue to where the approximation came from: it is exact for a (3, 4, 5) triangle.

Let’s see where the relative error equals 0.01.

from scipy.optimize import bisect left = bisect(lambda b: rel_error(b) - 0.01, 0.0, 1.3) right = bisect(lambda b: rel_error(b) - 0.01, 1.4, 1.6) print(left, right)

This shows that the approximation is within 1% over the interval [1.0354, 1.5087], or to use rounder numbers, [1.04, 1.50] as advertised. The error is only 1.02% if you take the interval to be [1, 1.50]. So if you take “approximately equal” to mean “within 1.02%” then we can restate the rule above as

If one leg of a right triangle is no more than 50% bigger than the other, then the hypotenuse is approximately 5(*a *+ *b*)/7.

On a similar note, see this post about the case where *b* is much larger than *a*. If you want to measure across a room, for example, and you can’t quite measure to the point you’d like, it makes surprisingly little difference.

5/7 is a good approximation of 1/√2 and, in a right triangle, the hypotenuse can’t be shorter than the sum of the legs divided by √2:

a+b <= √2 c

There is a simple proof of that inequality that uses Garfield's trapezoid proof of the Pythagorean theorem.

The inequality above becomes an equality when a=b, so it is quite natural that 5(a+b)/7 ~ c for a~b.