Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

float32 refuses a value that should saturate to an infinity

Ouverte Adaptée aux débutants
#19 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
75/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
python
Domaine
backend

Piste de recherche

Commencez par l'encodeur compact_encoding.float32 et reproduisez le cas du corpus compact-encoding-test nommé float32-overflow, en le comparant au comportement de struct.pack décrit dans l'issue. Terminé signifie que l'encodage de 4e38 ne déclenche plus d'OverflowError et produit les octets de référence 0000807f, tandis que le cas de conformité passe.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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."

Langage dominant
Python
Étoiles
1
Forks
1
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de holepunchto/compact-encoding-python

Toutes les issues de holepunchto/compact-encoding-python

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.