OK les gosses, le temps pour les pros....
C'est l'une de mes plus grandes plaintes inexpérimenté ingénieurs en logiciel. Ils viennent dans le calcul de fonctions transcendantes à partir de zéro (à l'aide de séries de Taylor), comme si personne n'avait jamais fait ces calculs avant dans leur vie. Pas vrai. Il s'agit d'un problème défini et a été abordé des milliers de fois par de très habiles ingénieurs logiciels et matériels, et a une solution.
Fondamentalement, la plupart des fonctions transcendantes utiliser les Polynômes de Tchebychev pour les calculer. Qui polynômes sont utilisés dépend des circonstances. Tout d'abord, la bible à ce sujet est un livre qui s'appelle "Ordinateur Approximations" par Hart et Cheney. Dans le livre, vous pouvez décider si vous avez un matériel additionneur, multiplicateur de, diviseur, etc, et de décider quelles activités sont les plus rapides. par exemple, Si vous aviez un très rapide diviseur, le moyen le plus rapide pour calculer le sinus peut être P1(x)/P2(x) où P1, P2 sont des polynômes de Chebyshev. Sans la rapide diviseur, il pourrait être juste P(x), où P est beaucoup plus que de la P1 ou P2....de sorte qu'il serait plus lent. Donc, la première étape est de déterminer votre matériel et ce qu'il peut faire. Ensuite, à vous de choisir la combinaison appropriée de polynômes de Tchebychev (est généralement de la forme cos(ax) = aP(x) pour le cosinus par exemple, si P est un polynôme de Tchebychev). Ensuite, vous décidez de ce que la précision décimale vous le souhaitez. par exemple, si vous voulez que 7 chiffres de précision, vous le cherchez dans le tableau approprié dans le livre que j'ai mentionné, et il vous donnera (pour la précision = 7.33) un nombre N = 4 et un polynôme nombre 3502. N est le degré du polynôme (c'est p4.x^4 + p3.x^3 + p2.x^2 + p1.x + p0), parce que N=4. Ensuite, vous regardez en haut de la valeur réelle de la p4,p3,p2,p1,p0 valeurs dans le dos de l'ouvrage en vertu de l'3502 (ils vont être en virgule flottante). Ensuite, vous mettez en œuvre votre algorithme dans le logiciel sous la forme:
(((p4.x + p3).x + p2).x + p1).x + p0
....et c'est comment vous pouvez calculer le cosinus à 7 décimales sur ce matériel.
Notez que la plupart du matériel implémentations transcendantale des opérations dans une FPU impliquent généralement certains de microcode et des opérations de ce genre (dépend du matériel).
Polynômes de tchebychev sont utilisés pour la plupart des êtres transcendantaux, mais pas tous. par exemple, la racine Carrée est plus rapide d'utiliser un double itération de Newton-raphson la méthode à l'aide d'une table de recherche en premier.
Encore une fois, le livre de l'Ordinateur "Approximations", vous diront que.
Si vous prévoyez sur implmementing ces fonctions, je le recommande à toute personne qu'ils obtiennent une copie de ce livre. C'est vraiment la bible pour ces types d'algorithmes.
Notez qu'il existe des bouquets de moyens alternatifs pour le calcul de ces valeurs comme cordics, etc, mais ils ont tendance à être mieux pour des algorithmes spécifiques où vous avez seulement besoin d'une faible précision. Pour garantir la précision à chaque fois, les polynômes de tchebychev sont la voie à suivre. Comme je l'ai dit, bien défini problème. A été résolu depuis maintenant 50 ans.....et c'est comment il est fait.
Maintenant, cela étant dit, il y a des techniques par lesquelles les polynômes de Chebyshev peut être utilisée pour obtenir un seul résultat de précision avec un faible degré de polynôme (comme dans l'exemple pour le cosinus ci-dessus). Ensuite, il existe d'autres techniques d'interpolation entre les valeurs pour augmenter la précision, sans avoir à passer à un bien plus grand polynôme, tels que "Gal Précis de Tables de Méthode". Cette dernière technique est ce que le post se référant à l'ACM de la littérature se réfère. Mais en fin de compte, les Polynômes de Tchebychev sont ce qui sont utilisés pour obtenir 90% du chemin.
Profitez de.