UUlpNacre
Środowisko programowania z AI

Odległość ULP skończonych liczb binary64

Zmierz odległość reprezentowalnych kroków dwóch skończonych liczb binary64, uznając zera ze znakiem za równe.

● ● ●UlpNacre●
Sposoby pracy · Odległość ULP skończonych liczb binary64 ×
import math, struct

def ulp_distance(a, b):
    if any(type(x) is not float or not math.isfinite(x) for x in (a, b)):
        raise ValueError("ulp.finite")
    def key(value):
        bits = struct.unpack(">Q", struct.pack(">d", value))[0]
        magnitude = bits & ((1 << 63)-1)
        return (1 << 63)-magnitude if bits >> 63 else (1 << 63)+magnitude
    return abs(key(a)-key(b))
✳Odległość ULP skończonych liczb binary64
✓ ZmianySprawdź przed zastosowaniem ↗
Ilustracja środowiska
Modele
Dodaj endpoint zgodny z OpenAI lub Anthropic, podając bazowy URL i klucz API, jeśli jest wymagany. Sprawdź połączenie. Lokalny serwer modelu musi działać; zdalne narzędzia mogą przesyłać dane oddzielnie.
Projekt
Sprawdź sąsiednie liczby subnormalne i oba znaki, odrzucając liczby całkowite, nieskończoność i NaN bez utożsamiania wyniku z błędem względnym.
Sprawdź przed zastosowaniem
Porównaj rzeczywiste zachowanie z oczekiwanym wynikiem. Jeśli sprawdzenie się nie powiedzie, wyjaśnij przyczynę przed kolejnymi zmianami.
Sposoby pracy

Odległość ULP skończonych liczb binary64

Sposoby pracy ↗
Sposoby pracy
import math, struct

def ulp_distance(a, b):
    if any(type(x) is not float or not math.isfinite(x) for x in (a, b)):
        raise ValueError("ulp.finite")
    def key(value):
        bits = struct.unpack(">Q", struct.pack(">d", value))[0]
        magnitude = bits & ((1 << 63)-1)
        return (1 << 63)-magnitude if bits >> 63 else (1 << 63)+magnitude
    return abs(key(a)-key(b))
Środowisko programowania z AI

Dobierz właściwą regułę porównania do rozbieżności liczbowej

Dwa wyniki liczbowe mogą wyglądać identycznie po wyświetleniu, a różnić się reprezentacją wewnętrzną. UlpNacre zapewnia środowisko programowania z AI dla Windows do badania, czy ta różnica ma znaczenie dla aplikacji. Podaj rzeczywiste dane wejściowe, obliczenie i porównanie, które wzbudziło wątpliwość. Poproś asystenta o sprawdzenie sposobu wytwarzania i oceny wartości, zanim zastąpisz test równości inną regułą.

Przykład odległości między reprezentacjami zmiennoprzecinkowymi jest jednym z możliwych zadań. Możesz zbadać skończone dane wejściowe i zero ze znakiem, a następnie omówić wykorzystanie wyniku odległości w teście lub diagnostyce. Oddziel decyzję aplikacji o tolerancji od samego pomiaru. Przykład źródłowy jest w Pythonie; nazwa domeny nie oznacza debugera specyficznego dla PHP ani poprawności założeń we wszystkich środowiskach liczbowych.

Użyj obsługiwanego punktu końcowego zgodnego z OpenAI lub Anthropic, aby wybrać dostępny model AI po ablacji, z danymi uwierzytelniającymi w razie potrzeby. Kontekst, narzędzia i ograniczenia zależą od tego modelu i serwera. Oceń proponowany kod porównania i uruchom go dla reprezentatywnych wartości istotnych dla aplikacji. Oddzielny lokalny serwer modelu obsługuje wnioskowanie, natomiast podłączone narzędzia mogą nadal korzystać z usług zewnętrznych.

Badanie różnic reprezentacji

Czy każda mała odległość reprezentacji powinna oznaczać równość?

To wymaganie aplikacji, a nie wniosek wynikający z pomiaru. Rozważ użycie wartości i zdefiniuj dopuszczalną regułę porównania. Wymagaj wyjaśnienia ograniczeń propozycji i testuj wartości bliskie progom decyzji rzeczywiście podejmowanych przez oprogramowanie.

Dlaczego dołączać obliczenie, które wytworzyło wartości?

Pochodzenie może wyjaśnić różnice i to, czy rozbieżność jest oczekiwana. Sprawdź konwersje i operacje przed zmianą końcowego porównania. Nowa tolerancja może ukryć błąd w innym miejscu, jeśli ścieżka obliczenia pozostaje niewyjaśniona.

Czy przykład porównuje każde możliwe wejście liczbowe?

Nie. Określony kontrakt przyjmuje skończone liczby zmiennoprzecinkowe, a pozostałe wartości wymagają jawnej polityki. Zachowaj odrzucane dane w przeglądzie, zamiast zakładać, że funkcja odległości reprezentacji obejmuje każdy typ liczbowy lub wartość wyjątkową.

Co sprawdzić przy przenoszeniu pomysłu do innego środowiska wykonawczego?

Sprawdź reprezentację liczbową, zachowanie konwersji i dostępne operacje tego środowiska. Odtwórz w nim istotne przypadki graniczne. Przykład w Pythonie to punkt wyjścia do badania, a nie dowód identycznego zachowania nieprzetestowanej translacji.

Pobierz dla Windows ↗

UlpNacre · Zaktualizowano 2026-10-25