Machin's Merit


In 1938 Lehmer defined a measure of the computational merit for arctangent expressions involving p.  He said the amount of computational labor required to evaluate p using the formula



(assuming the arctangent is evaluated using its Taylor's series expansion) was proportional to



The most famous of these arctangent formulas, and one of the best, is Machin's



which has a "measure" of 1/log_10(5) + 1/log_10(239) = 1.8511.


In 1988 Castellanos published an extensive survey article on the methods of computing pi, and he listed the "measures" of a large number of arctangent formulas, including those found by Euler, Gauss, and many others.  Of all those listed (over two dozen), the one with the best (i.e., smallest) "measure" is one attributed to Klingenstierna:



This has a measure of 1.0681.  However, it's not hard to find formulas with better Lehmer measures, although it’s debatable whether these are actually better for computational purposes.  For example,



The argument of the right-hand arctangent is about 1/56546 so this formula has a Lehmer measure of 0.9014.  Needless to say this type of formula is no longer used for calculating p, having been superceded by far more efficient methods.  Still, it raises the question of whether there is a lower bound on possible Lehmer measures for formulas of this type.


The answer to the above question is no, there is no lower bound on the Lehmer measure, except zero.  We have the identity



Setting  u = N arctan(1/M)  where N/M is a convergent of the continued fraction for p/4 ensures that (1 - tan(u))/(1 + tan(u)) is very small, much smaller than 1/M, so the Lehmer measure is less than 2/log10(M).  Since we can make M as large as we like, the measure can be made arbitrarily close to zero.


For example, a good rational approximation of p/4 is 355/452, so we can create the Machin formula



where u = 355 arctan(1/452).  The argument of the right-hand arctan is a very small rational number, roughly 1/823723, so the Lehmer measure for this formula is 0.5456.


This suggests a way of turning these formulas into a progressively more rapidly convergent algorithm.  Suppose we are given the first k decimal digits of p/4.  We can use them to immediately compute 2k digits.  To illustrate, take just the first digit of p/4, which is 0.7.  Thus we can set N = 7 and M = 10 and compute several more digits using the formula



where T = tan(7a) with tan(a) = 1/10.  This formula is exact, and will give as many digits as we want, provided we evaluate enough terms of the arctan series.  However, to just double the number of digits we only need to use the first two terms of the arctan series, i.e., arctan(x) = x - (x3)/3.  The only challenging part is to compute T = tan(Na), but this can be done in O(log(N)) steps by using a binary exponentiation scheme with the equation



Knowing tan(a) = 1/10 we can quickly compute tan(7a).  Then using just the first two terms of the arctan series we compute



which corresponds to a value of p = 3.141532...  This has actually more than doubled our significant digits.  (If we used the first three terms of the arctan series this would give p = 3.141593...) We only need to double at each step to give an exponentially convergent algorithm, but we could easily make the algorithm triple or quadruple or increase the number of digits by any factor we want at each stage, simply by including a few more terms of the arctan series.


Taking just the first two digits of p/4 ~ 0.78 we repeat the process, using the rational approximation 78/100. So now we have the formula



where T = tan(78a) with tan(a) = 1/100.  Again, this formula is exact, be we only need the first two terms of the arctan series to double the number of digits.  Actually the first two terms give



The basic algorithm actually tends to triple the number of digits, because the arctan is of the form (1/10k) - (1/3)(1/10k)3.  If the next term is included the above formula gives



This shows how easy it is to more than triple the number of correct digits at each stage.  Sticking to our doubling approach we have the new rational approximation p/4 ~ 7853/10000, so the next stage is to evaluate



where T = tan(7853a) with tan(a) = 1/10000.  It may seem daunting to evaluate tan(7853a) but using the binary exponentiation scheme it only takes roughly log2(7853) = 12 steps.  This formula will yield no less than 8 digits, the next no less than 16, and so on, doubling at each stage.  (Obviously this assumes the calculations are being carried out to the required precision.)


Unfortunately, since the evaluation of tan(Na) takes about log(N) operations, and since log(N) is proportional to the number of digits of N, it's clear that the computational labor involved in this method is roughly linear with the number of digits, so this isn't as powerful as truly exponential methods such as arithmetic-geometric mean algorithms.


Incidentally, the arctan series also leads directly to another of the more common primitive methods of computing p. Beginning with the fact that tan(p/4) = 1, we can take the arctan of both sides, using the first two terms of the expansion, and multiply by 4 to give



which gives an estimate of p ~ 2.666. This obviously isn't very good, but suppose we re-write the basic equation tan(p/4) = 1 in the form



By the addition formula for the tangent function we have



We can solve this equation for tan(p/8) to give



This equation is exact, but it's more convenient for computation because  is only 0.414..., so the first two terms of the arctangent give a more accurate result than with an argument of 1 as in the previous case.  So, taking the arctan of both sides and multiplying by 8 gives



This equals about 3.124...  Needless to say, we can iterate this operation.  For example, we have



In general, if we set t0 = 1  and recursively compute subsequent values of tn using the formula



then we have a sequence of geometrically decreasing values of tk, and at any stage we can compute



Going just to t4 gives p ~ 3.141592(4).  Notice that each successive value of tk, expressed in binary, is just a closer approximation of p shifted one bit further to the right on each step.


At each step this process essentially computes the tangent of the arc of half the previous arc.  Since tan(x) → x as x approaches zero, we can take p ~ N tan(p/N) as N goes to infinity.  This is the same basic approach that Archimedes took, computing the perimeters of a sequence of regular polygons, doubling the number of sides on each step. However, we started with a square, whereas Archimedes actually started with a hexagon, using the fact that tan(p/6) = , which is why he needed to know the value of the square root of 3 for his computation of bounds on p.  Also, Archimedes chose to work with a geometrically increasing (rather than decreasing) sequence, so he performed his calculations in terms of the reciprocals of the tangents.  For more on this, see the note From Euclid to Gregory. For more on tangent formulas in general, see Tangents, Exponentials, and p.


Return to MathPages Main Menu