Agrégation log-sum-exp stable
Agrégez au plus 1000 valeurs logarithmiques de moins 1e300 à 1e300 en soustrayant leur maximum avant exponentiation.
from math import exp, fsum, log, inf
def log_sum_exp(values):
if type(values) not in (list, tuple) or len(values) > 1000:
raise ValueError("values.container")
values = tuple(values)
if len(values) > 1000 or any(
type(v) not in (int, float) or not -1e300 <= v <= 1e300 for v in values
):
raise ValueError("values.range")
if not values:
return -inf
peak = max(values)
return peak + log(fsum(exp(v - peak) for v in values))| 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. |
|---|---|
| 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 entrée vide, grandes valeurs répétées et valeurs très négatives, en renvoyant moins l’infini uniquement pour le vide et en rejetant booléens, non-finis ou valeurs hors limites. |
from math import exp, fsum, log, inf
def log_sum_exp(values):
if type(values) not in (list, tuple) or len(values) > 1000:
raise ValueError("values.container")
values = tuple(values)
if len(values) > 1000 or any(
type(v) not in (int, float) or not -1e300 <= v <= 1e300 for v in values
):
raise ValueError("values.range")
if not values:
return -inf
peak = max(values)
return peak + log(fsum(exp(v - peak) for v in values))Examinez le comportement numérique avant de vous fier au nouveau résultat
ExponQuay est un client de programmation avec IA pour Windows destiné aux développeurs qui doivent comprendre une modification numérique dans son contexte applicatif. Apportez le code, une entrée problématique et le comportement attendu à la conversation du projet. Une première demande utile invite le modèle connecté à distinguer l’opération mathématique voulue des limites de l’implémentation actuelle.
Par exemple, une tâche d’agrégation logarithmique peut préciser des valeurs d’entrée bornées, une taille maximale de collection et un résultat pour l’entrée vide. Demandez au modèle d’examiner une approche par décalage du maximum en préservant ce contrat. Incluez l’appelant qui consomme la réponse, surtout s’il distingue un agrégat vide d’un résultat numérique fini. La discussion reste centrée sur le code de votre projet.
Avant d’accepter la proposition, exécutez des cas avec de grandes valeurs répétées et des valeurs très négatives dans votre environnement. Vérifiez le rejet des types non pris en charge et des entrées hors plage autant que le résultat ordinaire. Comparez avec une référence adaptée à la précision nécessaire à l’application. Une méthode visant à améliorer la stabilité mérite tout de même une vérification sur sa charge réelle.
Choisissez un point de terminaison compatible OpenAI ou Anthropic pris en charge par ExponQuay. Si des modèles d’IA sans filtre y sont disponibles, vous pouvez en sélectionner un avec les identifiants requis. Cette étiquette ne promet pas de précision mathématique ; les restrictions du modèle, les limites de contexte et les outils pris en charge dépendent du point de terminaison et de la configuration réels du modèle.
Préparer une revue d’agrégation numérique
Que fournir avec une entrée numérique problématique ?
Incluez la plage attendue ou le résultat de référence, les types d’entrée acceptés et le traitement des sorties particulières par l’appelant. Ces faits permettent de répondre aux besoins de l’application plutôt que de remplacer une expression par une formule mathématiquement similaire.
Une entrée vide doit-elle retourner un nombre ordinaire ?
Suivez le contrat que vous définissez. L’exemple utilise moins l’infini pour un agrégat vide, ce que le consommateur doit comprendre. Examinez cet appelant et testez le cas vide séparément des entrées très négatives mais valides avant d’accepter une modification.
Pourquoi tester de grandes valeurs répétées ?
Elles sollicitent une limite utile de l’approche d’agrégation abordée dans cet exemple de projet. Précisez le comportement attendu et comparez l’implémentation à une référence adaptée. Ne déduisez pas une précision numérique générale d’un unique test ordinaire évitant les valeurs extrêmes.
Le modèle peut-il choisir une tolérance d’erreur acceptable ?
Il peut expliquer les compromis, mais les exigences de l’application déterminent la tolérance. Fournissez cette exigence et les types numériques utilisés. Exécutez la proposition sur des entrées représentatives avec vos propres outils et documentez les limites observées pendant la revue.
ExponQuay · Mis à jour 2026-10-25