Eché un vistazo a Knuth's El arte de la programación informática libro 1. En el capítulo 1, sección 1.2.2, ejercicio 25, presenta el siguiente algoritmo para calcular el logaritmo:
dado $x\in[1,2)$ haz lo siguiente:
L1: [Initialize] Set $y\leftarrow0$ , $z\leftarrow x/2$ , $k\leftarrow1$ .
L2: [Prueba de fin] Si $x=1$ para.
L3: [Compare] Si $x-z<1$ Pasa a la L5.
L4: [Reducir valores] Fijar $x\leftarrow x-z$ , $z\leftarrow x/2^k$ , $y\leftarrow y+\log_b(2^k/(2^k-1))$ y pasar a L2.
L5: [Shift] Set $z\leftarrow z/2$ , $k\leftarrow k+1$ y pasar a L2.
(El algoritmo necesita una tabla auxiliar que almacene $\log_b2$ , $\log_b(4/3)$ y así sucesivamente, hasta tantos valores como la precisión del ordenador.
Entonces Knuth concluye: este ejercicio es para explicar por qué el algoritmo anterior terminará y por qué calcula una aproximación de $y=\log_b x$ .
Bueno, veo que funciona, pero no soy capaz de explicar por qué...