Decodificação de valores binary16
Decodifique uma palavra binary16 de 16 bits sem sinal em valor numérico.
from math import copysign, ldexp
def binary16_value(word):
if type(word) is not int or not 0 <= word <= 65535:
raise ValueError("binary16.word")
sign = -1.0 if word & 0x8000 else 1.0
exponent, fraction = (word >> 10) & 31, word & 1023
if exponent == 31:
return copysign(float("nan") if fraction else float("inf"), sign)
value = ldexp(fraction, -24) if exponent == 0 else ldexp(1024+fraction, exponent-25)
return copysign(value, sign)| Revise antes de aplicar | Compare o comportamento real com o resultado esperado. Se uma verificação falhar, investigue a causa antes de fazer outras alterações. |
|---|---|
| Modelos | Configure um endpoint compatível com OpenAI ou Anthropic com a URL base e uma chave API, quando necessária. Teste a conexão. O servidor local precisa estar em execução; ferramentas remotas podem transmitir dados separadamente. |
| Projeto | Teste zeros com sinal, subnormais, infinitos e NaN, rejeitando booleanos ou palavras fora do intervalo sem preservar a carga de NaN. |
from math import copysign, ldexp
def binary16_value(word):
if type(word) is not int or not 0 <= word <= 65535:
raise ValueError("binary16.word")
sign = -1.0 if word & 0x8000 else 1.0
exponent, fraction = (word >> 10) & 31, word & 1023
if exponent == 31:
return copysign(float("nan") if fraction else float("inf"), sign)
value = ldexp(fraction, -24) if exponent == 0 else ldexp(1024+fraction, exponent-25)
return copysign(value, sign)Revise formatos numéricos compactos além dos valores comuns
HalfJunia é um software de programação com IA para Windows para trabalhar em alterações de código sensíveis à representação. Quando um valor decodificado parecer errado, traga a palavra original, o resultado observado e a interpretação esperada para a conversa do projeto. Peça ao modelo conectado que examine o código relevante antes de alterar um ramo que também pode atender a valores especiais.
Por exemplo, uma tarefa de decodificação binary16 pode exigir tratamento explícito de zero com sinal, valores subnormais, infinitos e NaNs. Indique que a entrada é uma palavra de 16 bits sem sinal e se a preservação dos payloads de NaN está fora do requisito. Assim, a tarefa tem um contrato delimitado que um revisor pode comparar com a implementação proposta e seu chamador.
Verifique palavras representativas de cada categoria no seu ambiente. Para zero com sinal, use uma observação que realmente diferencie o sinal; para NaN, use a verificação de categoria apropriada em vez da igualdade comum. Revise separadamente a rejeição de entradas booleanas ou fora do intervalo. Alguns valores finitos familiares são úteis, mas não exercitam os ramos mais sujeitos a serem esquecidos.
HalfJunia conecta-se a endpoints compatíveis com OpenAI ou da Anthropic que sejam suportados, com credenciais quando necessário. Onde seu provedor oferecer um modelo de IA sem filtros, você poderá selecioná-lo para a conversa de programação. Suas restrições, capacidade de contexto e ferramentas continuam dependendo do modelo e do servidor, e sua explicação ainda é uma proposta a verificar.
Prepare uma revisão de formato numérico
Quais evidências devem acompanhar um valor decodificado inesperado?
Informe a palavra de entrada exata, a categoria esperada e o resultado observado, junto com o código chamador que o utiliza. Evite depender apenas de uma string de exibição arredondada. A discussão do código precisa de detalhes suficientes para distinguir o tratamento da representação da formatação posterior na interface.
A igualdade comum pode verificar todos os valores especiais?
Não. Escolha verificações adequadas à categoria, incluindo uma observação sensível ao sinal para zero e um teste apropriado para NaN. Declare essas expectativas na tarefa e execute-as no ambiente real para avaliar o decodificador proposto além da igualdade comum de valores finitos.
Deve-se presumir a preservação de payloads de NaN?
Somente se for um requisito explícito atendido pela implementação. A tarefa ilustrativa de decodificação não preserva payloads. Se o consumidor precisar deles, descreva esse contrato separado antes de aceitar uma proposta que retorna apenas uma categoria ou um valor numérico.
Por que incluir uma entrada booleana nos casos de rejeição?
Algumas relações entre tipos de uma linguagem podem aceitá-la em uma verificação ampla de inteiros. Se seu contrato exige um valor de palavra real e exclui booleanos, diga isso explicitamente. Verifique essa distinção junto com o intervalo aceito, em vez de depender de uma descrição informal do tipo.
HalfJunia · Atualizado 2026-10-25