float32 refuses a value that should saturate to an infinity
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 75/100
Línea de trabajo
Comienza en el codificador compact_encoding.float32 y reproduce el caso del corpus de compact-encoding-test llamado float32-overflow, comparándolo con el comportamiento de struct.pack descrito en el issue. Terminado significa que codificar 4e38 ya no lanza OverflowError y produce los bytes de referencia 0000807f, mientras que el caso de conformidad pasa.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Found by running the compact-encoding-test conformance corpus against this port.
float32 refuses a value too large for binary32 instead of saturating to an infinity:
import compact_encoding as c
c.encode(c.float32, 4e38) # OverflowError: float too large to pack with f format
The reference writes 0000807f, which reads back as infinity. That is what IEEE 754 round-to-nearest gives when a double is narrowed to binary32 and the result is out of range, so the reference's behaviour is the standard one here rather than a quirk.
The cause looks like struct.pack surfacing rather than a decision:
import struct
struct.pack('<f', 4e38) # OverflowError: float too large to pack with f format
The corpus case is float32-overflow, citing float-overflows-to-an-infinity: "a value too large for the width becomes an infinity rather than a refusal, so float32 writes 4e38 as 0000807f and loses it. A float codec refuses no number it is given: what the width cannot hold it rounds, and what the width cannot reach becomes an infinity."
- Lenguaje dominante
- Python
- Estrellas
- 1
- Forks
- 1
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de holepunchto/compact-encoding-python
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 75/100
Todos los issues de holepunchto/compact-encoding-python
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
UKGovernmentBEIS/control-arena#917 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
debpalash/VoiceStudio#2937 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
aws-samples/sample-per-model-bedrock#261 ·
Los mantenedores suelen responder en 1 día