Декодирование значений binary16
HalfJunia — Windows-клиент для работы с кодом компактных числовых представлений. Рассмотрите показатель и дробную часть в разговоре с ИИ, затем проверьте предложенное декодирование binary16 на знаковом нуле и субнормальных значениях.
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)| Проверьте перед применением | Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями. |
|---|---|
| Подключение | Базовый URL, учётные данные и доступный сервер. |
| Проект | Проверьте знаковые нули, субнормальные числа, бесконечности и NaN, отклоняя логические значения и выход за диапазон без сохранения полезной нагрузки 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)Проверяйте компактные числовые форматы не только на обычных значениях
HalfJunia — программа для разработки с ИИ в Windows, позволяющая разбирать изменения кода, чувствительные к представлению данных. Если декодированное значение выглядит неверным, добавьте в обсуждение проекта исходное слово, наблюдаемый результат и ожидаемую интерпретацию. Попросите подключённую модель изучить нужный код до изменения ветви, которая может также обрабатывать особые значения.
Например, декодирование binary16 может требовать явной обработки нуля со знаком, субнормальных значений, бесконечностей и NaN. Укажите, что ввод — беззнаковое 16-битное слово, и оговорите, выходит ли сохранение полезной нагрузки NaN за пределы требований. Тогда задача получит ограниченный контракт, с которым можно сравнить предложенную реализацию и вызывающий код.
Проверьте характерные слова каждой категории в своей среде. Для нуля со знаком используйте наблюдение, действительно различающее знак; для NaN — подходящую проверку категории вместо обычного равенства. Отдельно проверьте отклонение логических значений и ввода вне диапазона. Несколько знакомых конечных значений полезны, но не охватывают ветви, которые легче всего упустить.
HalfJunia подключается к поддерживаемым конечным точкам, совместимым с OpenAI, или Anthropic с учётными данными при необходимости. Если поставщик предлагает ИИ-модель без фильтрации, её можно выбрать для обсуждения кода. Её ограничения, объём контекста и инструменты зависят от модели и сервера, а объяснение остаётся предложением, которое нужно проверить.
Подготовка проверки числового формата
Какие сведения нужны при неожиданном декодированном значении?
Предоставьте точное входное слово, ожидаемую категорию и наблюдаемый результат вместе с использующим его вызывающим кодом. Не полагайтесь только на округлённую строку отображения. Нужны подробности, позволяющие отличить обработку представления от последующего форматирования в интерфейсе.
Можно ли проверить все особые значения обычным равенством?
Нет. Выбирайте проверки по категории, включая различение знака нуля и подходящий тест NaN. Укажите ожидания в задаче и выполните проверки в реальной среде, чтобы оценить декодировщик за пределами обычного равенства конечных значений.
Следует ли предполагать сохранение полезной нагрузки NaN?
Только если это явное требование, поддерживаемое реализацией. Иллюстративная задача декодирования не сохраняет полезную нагрузку. Если она нужна потребителю, опишите отдельный контракт до принятия решения, возвращающего только числовую категорию или значение.
Зачем включать логические значения в тесты отклонения ввода?
В некоторых языках соотношения типов позволяют принять их при широкой проверке на целое число. Если контракт требует собственно значение слова и исключает логические значения, укажите это явно. Проверяйте это различие вместе с допустимым диапазоном, не полагаясь на неформальное описание типа.
HalfJunia · Обновлено 2026-10-25