UUlpNacre
Espace de développement avec IA

Distance ULP binary64 finie

Mesurez la distance en pas représentables entre deux flottants binary64 finis, avec égalité des zéros signés.

● ● ●UlpNacre●
Méthodes de travail · Distance ULP binary64 finie ×
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))
✳Distance ULP binary64 finie
✓ ModificationsVérifiez avant d’appliquer ↗
Illustration de l’espace de travail
Modèles
Configurez un endpoint compatible OpenAI ou Anthropic avec son URL de base et une clé API si nécessaire. Testez la connexion. Un serveur local doit fonctionner ; les outils distants peuvent transmettre des données séparément.
Projet
Testez les subnormaux voisins et les deux signes, en rejetant entiers, infinis et NaN sans parler d’erreur relative.
Vérifiez avant d’appliquer
Comparez le comportement observé au résultat attendu. Si une vérification échoue, cherchez la cause avant de poursuivre les modifications.
Méthodes de travail

Distance ULP binary64 finie

Méthodes de travail ↗
Méthodes de travail
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))
Espace de développement avec IA

Appliquez la bonne règle de comparaison à un écart numérique

Deux sorties numériques peuvent s’afficher de la même façon tout en différant dans leur représentation sous-jacente. UlpNacre vous offre un espace de programmation assistée par IA sous Windows pour déterminer si cette différence compte pour votre application. Fournissez les entrées réelles, le calcul et la comparaison à l’origine du problème. Demandez à l’assistant d’examiner la production et l’évaluation des valeurs avant de remplacer un test d’égalité par une autre règle.

L’exemple de distance entre représentations de flottants offre une tâche possible. Vous pourriez examiner des entrées finies et le zéro signé, puis discuter de l’utilisation d’une distance dans un test ou un diagnostic. Séparez la décision de tolérance de l’application de la mesure elle-même. L’exemple source est en Python ; le nom de domaine n’établit pas l’existence d’un débogueur spécifique à PHP et ne rend pas ses hypothèses valides pour tous les environnements numériques.

Utilisez un point de terminaison compatible OpenAI ou Anthropic pris en charge pour sélectionner un modèle d’IA ablitéré disponible, avec les identifiants nécessaires. Le contexte, les outils et les restrictions dépendent de ce modèle et du serveur. Examinez le code de comparaison proposé et exécutez-le sur des valeurs représentatives de votre application. Un serveur de modèles local distinct assure l’inférence, tandis que les outils connectés peuvent toujours utiliser des services externes.

Étudier les différences de représentation

Toute petite distance de représentation doit-elle compter comme une égalité ?

Il s’agit d’une exigence de l’application, pas d’une conclusion fournie par la mesure. Considérez l’usage de la valeur et définissez une règle de comparaison acceptable. Demandez que la proposition explique ses limites et testez des valeurs proches des décisions réellement prises par votre logiciel.

Pourquoi inclure le calcul qui a produit les valeurs ?

Leur origine peut expliquer pourquoi elles diffèrent et si cet écart est attendu. Examinez les conversions et opérations avant de modifier la comparaison finale. Une nouvelle tolérance peut masquer un défaut ailleurs si le chemin de calcul reste inexpliqué.

L’exemple peut-il comparer toute entrée numérique possible ?

Non. Son contrat déclaré accepte des entrées flottantes finies ; les autres valeurs nécessitent une politique explicite. Gardez les entrées rejetées visibles pendant la révision plutôt que de supposer qu’une fonction de distance de représentation couvre tous les types numériques ou valeurs exceptionnelles.

Que vérifier en transposant cette idée dans un autre environnement d’exécution ?

Vérifiez la représentation numérique, les conversions et les opérations disponibles dans cet environnement. Recréez-y les cas limites pertinents. L’exemple Python fourni est un point de départ pour l’étude, pas une preuve qu’une traduction non testée aura un comportement identique.

Télécharger pour Windows ↗

UlpNacre · Mis à jour 2026-10-25