Dekódování hodnot binary16
Dekóduj jedno 16bitové slovo binary16 bez znaménka na číselnou hodnotu.
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)| Před použitím zkontrolujte | Porovnejte skutečné chování s očekávaným výsledkem. Pokud kontrola selže, před dalšími změnami zjistěte příčinu. |
|---|---|
| Modely | Nastavte endpoint kompatibilní s OpenAI nebo Anthropic pomocí základní URL a případného API klíče. Otestujte připojení. Lokální server modelu musí běžet; vzdálené nástroje mohou data odesílat samostatně. |
| Projekt | Otestuj nuly se znaménkem, subnormální čísla, nekonečna a NaN, odmítni logické hodnoty a slova mimo rozsah bez zachování obsahu 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)Kontrolujte kompaktní číselné formáty i mimo běžné hodnoty
HalfJunia je software pro programování s AI ve Windows určený k práci na změnách zdrojového kódu citlivých na reprezentaci. Když dekódovaná hodnota vypadá nesprávně, přineste do projektové konverzace původní slovo, pozorovaný výsledek a očekávaný výklad. Než změníte větev, která může obsluhovat i zvláštní hodnoty, požádejte připojený model o prozkoumání příslušného kódu.
Například dekódování binary16 může vyžadovat výslovné zacházení s nulou se znaménkem, subnormálními hodnotami, nekonečny a NaN. Uveďte, že vstupem je 16bitové slovo bez znaménka, a zda zachování datové části NaN stojí mimo požadavky. Úloha tak má vymezenou specifikaci, kterou může kontrolující porovnat s navrženou implementací a jejím volajícím.
Ve vlastním prostředí ověřte reprezentativní slova každé kategorie. Pro nulu se znaménkem použijte pozorování, které znaménko skutečně rozliší; u NaN vhodný test kategorie místo běžné rovnosti. Odmítání booleovských vstupů a vstupů mimo rozsah posuďte zvlášť. Několik známých konečných hodnot je užitečných, ale neprověří větve, které lze nejsnáze přehlédnout.
HalfJunia se připojuje k podporovaným koncovým bodům kompatibilním s OpenAI nebo ke koncovým bodům Anthropic, podle potřeby s přihlašovacími údaji. Pokud poskytovatel nabízí nefiltrovaný model AI, můžete jej vybrat pro programovací konverzaci. Jeho omezení, kapacita kontextu a nástroje nadále závisejí na modelu a serveru a jeho vysvětlení stále představuje návrh k ověření.
Příprava kontroly číselného formátu
Jaké podklady mají doprovázet neočekávanou dekódovanou hodnotu?
Uveďte přesné vstupní slovo, očekávanou kategorii a pozorovaný výsledek spolu s volajícím, který jej používá. Nespoléhejte jen na zaokrouhlený zobrazovaný řetězec. Diskuse o kódu potřebuje dost podrobností k odlišení práce s reprezentací od pozdějšího formátování v rozhraní.
Může běžná rovnost ověřit každou zvláštní hodnotu?
Ne. Zvolte kontroly vhodné pro danou kategorii včetně pozorování znaménka nuly a vhodného testu NaN. Uveďte tato očekávání v zadání a spusťte kontroly ve skutečném prostředí, aby se navržený dekodér posuzoval i jinak než běžnou rovností konečných hodnot.
Má se předpokládat zachování datové části NaN?
Pouze pokud jde o výslovný požadavek podporovaný implementací. Ilustrativní úloha dekódování datové části nezachovává. Potřebuje-li je příjemce, popište tuto samostatnou specifikaci před přijetím návrhu vracejícího pouze číselnou kategorii či hodnotu.
Proč zahrnout booleovský vstup do testů odmítnutí?
Typové vztahy v některých jazycích ho mohou propustit obecnou kontrolou celého čísla. Pokud specifikace vyžaduje skutečnou hodnotu slova a vylučuje booleovské hodnoty, řekněte to výslovně. Ověřte tento rozdíl i přijímaný rozsah místo spoléhání na neformální popis typu.
HalfJunia · Aktualizováno 2026-10-25