Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Computational noise can corrupt NaN-safe computations

Ouverte
#515 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
35/100
Type d'issue
Bug
Clarté
À clarifier
Activité
À l'abandon
Stack technique
julia
Domaine
backend

Piste de recherche

Reproduisez l’exemple minimal fonctionnel utilisant ForwardDiff.Dual, norm(v) et sqrt(sum(v.^2)), comme indiqué dans l’issue. Comparez le comportement résistant à NaN des deux calculs avec la valeur indiquée et les entrées partielles, puis déterminez un résultat attendu cohérent avec le projet ; c’est terminé lorsque le cas de bruit présenté ne propage plus NaN ou Inf de manière inattendue.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Different amounts of computational noise in the value and partials of a dual number has the potential to corrupt even NaN-safe computations.

Minimum working example:

using ForwardDiff, LinearAlgebra

# start with zero valued vector of dual numbers
v = zeros(ForwardDiff.Dual{Nothing, Float64, 1}, 3);

# assume a perturbation of one component exists due to some computational noise
value = 1.0e-200 # so that value^2 == 0.0 (due to machine precision)
partial = 1.0e-100 # so that 2*value*partial != 0.0 (due to machine precision)
v[1] = ForwardDiff.Dual{Nothing}(value, partial);

# try out two functions
norm(v)
# Dual{Nothing}(1.0e-200,NaN)
sqrt(sum(v.^2))
# Dual{Nothing}(0.0,Inf)

Both implementations will result in NaNs propagated throughout the function, even in NaN-safe mode. I first encountered this after propagating derivatives through a Newton solve.

Originally posted by @taylormcd in https://github.com/JuliaDiff/ForwardDiff.jl/issues/243#issuecomment-539291591

Langage dominant
Julia
Étoiles
1k
Forks
162
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de JuliaDiff/ForwardDiff.jl

Toutes les issues de JuliaDiff/ForwardDiff.jl

Issues similaires

Plus d'issues Julia

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.