Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

342
Vistas
¿Por qué el sesgo del exponente IEEE-754 utilizado en este código C es 126.94269504 en lugar de 127?

La siguiente función C es del proyecto fastapprox .

 static inline float fasterlog2 (float x) { union { float f; uint32_t i; } vx = { x }; float y = vx.i; y *= 1.1920928955078125e-7f; return y - 126.94269504f; }

¿Podrían algunos expertos explicar por qué el sesgo del exponente utilizado en el código anterior es 126,94269504 en lugar de 127? ¿Es el valor de sesgo más preciso?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

En el proyecto que vinculó, incluyeron un cuaderno de Mathematica con una explicación de sus algoritmos, que incluye el valor "misterioso" -126.94269 .
Si necesita un visor, puede obtener uno del sitio web de Mathematica de forma gratuita.

Editar: como me siento generoso, aquí está la sección relevante en forma de captura de pantalla .

En pocas palabras, explican que el valor es "más simple, más rápido y menos preciso".
No están usando -126.94269 en lugar de -127 , lo están usando en lugar del resultado del siguiente cálculo (valores redondeados por brevedad):

 -124.2255 - 1.498 * mx - (1.72588 / (0.35201 + mx))
over 4 years ago · Santiago Trujillo Denunciar

0

Bueno, no, 126.94269504 no es un valor de sesgo "más preciso". Este código está haciendo algo muy, muy extraño; Estoy bastante sorprendido de que funcione en absoluto. Toma los bits de un flotante como si fueran un int (que en mi experiencia generalmente le da un valor totalmente basura, pero tal vez no), luego toma ese valor int "basura" y lo convierte de nuevo en un flotante, luego hace algo matemáticas en eso. Esta es, como dicen, una forma rápida y aproximada de hacer algo, en este caso, tomando el logaritmo en base 2. No debería funcionar en absoluto, pero la diferencia entre 127 y 126.94269504 es evidentemente solo uno de los varios factores tontos que pretenden salvar algo de significado de lo que debería ser un código sin sentido. (Algo así como "dos casi errores hacen uno casi correcto").

Si desea extraer exactamente la mantisa y el exponente de un flotante (aunque esto no será tan rápido ni tan aproximado), la forma habitual de hacerlo es con la función frexpf .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda