Fakultät zähmen

Neue Frage »

Huldrich Auf diesen Beitrag antworten »
Fakultät zähmen
Ich muss mit C-Code Matrixelemente berechnen, die aus Produkten von sehr kleinen mit sehr grossen Zahlen bestehen. Die grossen Zahlen bestehen aus Fakultäten, die viel grösser werden als die erlaubten ~10^307, obschon das Produkt selber zwischen 0 und 1 liegt. Deshalb suche ich eine Methode, wie ich ein bisschen von den kleinen Zahlen in die grossen Zahlen hineinschmuggeln könnte, damit diese nicht durch die Decke gehen. Beispiel: p^t t! wobei p winzig ist und t>2000. Ich habe t! mit der Stirlingformel approximiert, in die man p^t gut hineinschleusen kann. Aber leider konvergiert der absolute Fehler dieser Formel nicht, auch andere genauere Formeln sind zu approximativ. Deshalb habe ich es auch mit der Gammafunktion versucht mit Substitutionen im Integral, leider ohne Erfolg. Die Idee wäre Funktionen f(t) und g(t) zu finden, so dass mit p^t < f(t) und t > g(t). Hat jemand eine Idee, wie man das machen könnte?
HAL 9000 Auf diesen Beitrag antworten »

Berechne doch zunächst die logarithmierten Werte - als Beispiel:



(Wenn man sie öfter braucht, kann man diese logarithmierten Fakultätswerte ja auch in einer LUT ablegen.) Anschließend wieder exponentieren.



Wenn es nicht auf die Geschwindigkeit ankommt, kannst du alternativ ja auch mit anderen Zahlenformaten rechnen - siehe z.B. https://gmplib.org .
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »