]> Continued Fractions - The HAKMEM Constant

The HAKMEM Constant

HAKMEM features the expression:

3 /π 2 +etanh(5 )sin(69 )

and states it is easily computed using continued fractions.

Observe tanh5 can be found with one division, one square root, and one application of the continued fraction of Gauss:

tanh5 =5 1 +5 3 +5 5 +...

The most troublesome subexpression is sin(69 ), for the tan continued fraction expansion behaves poorly, and the terms in the Taylor series for sin(69 ) about 0 grow for quite some time before shrinking to acceptable levels for continued fractions.

As previously suggested, one possibility is to compute the continued fraction expansion of cos1 using the Taylor series, then evaluate Chebyshev polynomials and other trigonometric identities to find sin69 .

I followed this route in a test program for the frac library. Starting from cos1 , I used double-angle formulas to find cos64 , and the fifth Chebyshev polynomial (of the first kind) to find cos5 . Then since we may square root continued fractions, we can use sinx=1 cos 2 x to find sin64 and sin5 . Lastly, the angle addition formula yields sin69 .

Thus using techniques Gosper describes, and the Taylor series, we find the first 100 decimal places of the HAKMEM constant:

1
59170 96974 31217 53554 22849 04695 38245 87294 24160 11857
90051 76587 45519 76440 69814 05924 94706 86439 45987 93518

and the first 100 terms of its continued fraction expansion:

[0 ;1 ,1 ,1 ,2 ,4 ,2 ,2 ,1 ,4 ,1 ,6 ,2 ,9 ,13 ,1 ,1 ,8 ,3 ,7 ,1 ,10 ,6 ,11 ,2 ,2 ,2 ,3 ,3 ,6 ,12 ,2 ,1 ,12 ,1 ,2 ,2 ,5 ,1 ,2 ,1 ,1 ,24 ,6 ,1 ,1 ,2 ,11 ,1 ,8 ,50 ,1 ,1 ,2 ,3 ,1 ,2 ,1 ,130 ,1 ,29 ,3 ,1 ,9 ,1 ,1 ,1 ,1 ,16 ,1 ,2 ,1 ,1 ,4 ,1 ,3 ,1 ,1 ,7 ,1 ,1 ,5 ,1 ,1168 ,1 ,6 ,1 ,10 ,1 ,3 ,1 ,8 ,1 ,12 ,21 ,1 ,1 ,7 ,1 ,1 ,1 ,...]

For computing 1000 digits of the HAKMEM constant, my program was twice as fast as running these bc -l commands:

scale=1000
pi=4*a(1)
x=2*sqrt(5)
(sqrt(3/pi^2+e(1)))/((e(x)-1)/(e(x)+1)-s(69))

This is gratifying, especially as I could easily optimize further. (For example, I should be able to remove three integer divisions in my quadratic algorithm implementation; better ways of finding sin69 exist).