Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

346
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda