Je cherche un moyen de mettre en place une fonction logistique rapide. La définition classique de la fonction logistique est la suivante:Fonction logistique rapide
y(x) = 1/(1 + (1/e^x))
où^est l'exponentiation.
ou également: y(x) = (e^x)/(e^x + 1)
Cependant, ma fonction logistique particulière a une base E à la place de l'e, de sorte que:
y(x) = E^x/(E^x + 1)
E et x dans mon cas sont des nombres entiers de 32 bits, à virgule fixe dans base 2 de type 16.16. E est aussi proche que possible de la constante réelle e.
Quel est l'algorithme le plus rapide pour une telle fonction? Je préférerais pas de tables de recherche. Quelque chose comme des manipulations de bits devrait être parfait.
MISE À JOUR:
Intuitivement, je me sens qu'il existe une méthode très simple et rapide, basé sur la formule d'Euler:
e^(i*x) = cos(x) + i*sin(x)
où i est l'unité imaginaire.
Est-ce que la portabilité question? Il existe des moyens rapides d'évaluer de telles fonctions en piratant les flotteurs IEEE, mais ils ne sont pas beaux et ne sont pas portables. – Doug
@Pas que cela ait de l'importance, mais IEEE est correct, car la plupart des processeurs à l'échelle du serveur le supportent – psihodelia
Après les modifications, votre question est complètement différente de celle d'origine. J'ai supprimé ma réponse car elle est devenue non pertinente après vos modifications. – qrdl