Tengo valores enteros que van desde 32-8191 que quiero asignar a una escala aproximadamente logarítmica. Si estuviera usando la base 2, solo podría contar los bits cero iniciales y asignarlos a 8 ranuras, pero esto es demasiado detallado; Necesito 32 máquinas tragamonedas (y más sería mejor, pero necesito que se mapeen en bits en un valor de 32 bits), que sale a una base de aproximadamente 1.18-1.20 para el logaritmo. ¿Alguien tiene algunos trucos para calcular este valor, o una aproximación razonable, muy rápido?Logaritmo de entero rápido para el caso especial
Mi intuición es dividir el rango en 2 o 3 subrangos con condicionales, y usar una pequeña tabla de búsqueda para cada uno, pero me pregunto si hay algún truco que pueda hacer con los ceros de recuento y luego refinar el resultado, especialmente porque los resultados no tienen que ser exactos, sino simplemente logarítmicos.
que he visto algo que hacer antes de (dlmalloc viene a la mente), pero no sé si me gusta lo lejos que se desvía de logarítmica .Tal vez no es tan malo sin embargo. –
Me pregunto si puedo usar el punto flotante para ensamblar esos bits muy bien para mí ... –