Декодування значень binary16
Декодуйте одне беззнакове 16-бітне слово 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)| Перевірте перед застосуванням | Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами. |
|---|---|
| Моделі | Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані. |
| Проєкт | Перевірте знакові нулі, субнормальні числа, нескінченності й 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