Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

float32 refuses a value that should saturate to an infinity

Aberta Para iniciantes
#19 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
75/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Ativa
Stack de tecnologia
python
Domínio
backend

Direção de pesquisa

Comece no encoder compact_encoding.float32 e reproduza o caso do corpus compact-encoding-test chamado float32-overflow, comparando-o com o comportamento do struct.pack descrito na issue. Pronto significa que codificar 4e38 não lança mais OverflowError e produz os bytes de referência 0000807f, enquanto o caso de conformidade passa.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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

Linguagem predominante
Python
Estrelas
1
Forks
1
Merge médio
4d 6h
PRs com merge (30d)
1

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de holepunchto/compact-encoding-python

Todas as issues de holepunchto/compact-encoding-python

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.