Existe-t-il une implémentation plus stable pour la fonction cotangente que return 1.0/tan (x) ;?Stable Cotangent
Répondre
cot(x) = cos(x)/sin(x)
devrait être plus stable numériquement près de π/2 que cot(x) = 1/tan(x)
. Vous pouvez implémenter cela efficacement en utilisant sincos
sur les plates-formes qui l'ont.
Une autre possibilité est cot(x) = tan(M_PI_2 - x)
. Cela devrait être plus rapide que ce qui précède (même si sincos
est disponible), mais il peut également être moins précis, car M_PI_2
est bien sûr seulement une approximation du nombre transcendental π/2, donc la différence M_PI_2 - x
ne sera pas exacte au complet la largeur d'une mantisse - en fait, si vous obtenez malchanceux, il peut avoir seulement quelques bits significatifs.
Ok. Je suppose que c'est le meilleur que je peux faire. J'ai aussi appris à propos de sincos, que je dois avouer que je n'avais jamais rencontré auparavant! –
Rappelez-vous juste une identité trig qui vous permet de faire beaucoup mieux et édité ma réponse. – zwol
+1. Utilisez certainement tan (pi/2 - x). –
Je suppose que vous êtes un problème avec 1/tan est que son indéfini à pi/2 lorsque la fonction devrait retourner zéro? – MerickOWA
Faire l'inversion est douteux quand il est proche de pi/2 oui ... Je me demandais s'il y avait une meilleure façon de le faire. –