J'implémente une bibliothèque arithmétique de précision arbitraire en C++ et je suis plutôt bloqué lors de l'implémentation de la fonction gamma.Fonction gamma de précision arbitraire
En utilisant les gamma(n) = gamma(n - 1) * n
et gamma(n) = gamma(n + 1)/n
équivalences, respectivement, je peux obtenir un nombre rationnel r
dans la gamme (1; 2]
pour toutes les valeurs réelles x
. Cependant, je ne sais pas comment évaluer gamma(r)
. Pour l'approximation de Lanczos (https://en.wikipedia.org/wiki/Lanczos_approximation), j'ai besoin de valeurs p précalculées qui arrivent à calculer une factorielle d'une valeur non entière (?!) Et ne peuvent pas être calculées dynamiquement avec mes connaissances actuelles ... Précomputing values for p ne serait pas avoir beaucoup de sens lors de l'implémentation d'une bibliothèque de précision arbitraire.
Existe-t-il des algorithmes qui calculent gamma(r)
dans un délai raisonnable avec une précision arbitraire? Merci de votre aide.
Je présume que vous avez étudié http://functions.wolfram.com/GammaBetaErf/Gamma/introductions/Gamma/05/ et que vous n'avez pas trouvé ce dont vous avez besoin. –
On dirait que c'est plus lié aux mathématiques qu'à la programmation ... Peut-être, il est préférable de poser des questions là-bas. –
Je voudrais également regarder dans la source de MPFR pour voir ce qu'ils utilisent. –