Grosse Zahlen

hiho,

ich bin mal wieder mit meinem latein am ende … ich operiere mit grossen zahlen (und stosse dabei fast immer an das limit von long double sprich an 1.1 * 10^+4.932) … mein Problem

fmod versagt seinen dienst … ich sollte zbs.

1.81479e+3610 mod 41917 rechnen

und K = fmod(m,n) liefert nur „nan“ als ausgabewert …

hat jemand erfahrung mit dem Rechnen von Zahlen > 10^5000 ?
wie kann man das mit c/c++ bewerkstelligen ohne auf Bibliotheken wie flint zurückzugreifen oder auf templates angewiesen ist ?
(oder soll ich mein Konzept schmeisse und zbs. auf flint setzen ?)

gruss

berni

Hi Berni,

bin zwar kein C++ Programmierer, doch ich glaube, es gibt da ein grundsätzliches Problem: Du kannst mit long double vielleicht Zahlen bis 104932 speichern, das bedeutet aber nicht, dass Du auch die 4932 Ziffern Genauigkeit hast, die Du zur Berechnung der mod-Funktion vermutlich bräuchtest (korrigiere mich, wenn ich da falsch liege).

Die Zahlen sind intern in Mantisse und Exponent aufgeteilt, wobei die Mantisse (abhängig vom Zahlenformat) Genauigkeiten bis vielleicht 16 oder 32 Ziffern aufweist. Die Zahl PI*101000 ist intern dann zum Beispiel 3.14159265*101000 = 31415926500000… (noch 995 Nullen) und eben nicht 3141592653589793…

Von dieser Zahl kannst Du auch keinen genauen Divisionsrest bilden, denn dazu bräuchtest Du ja alle Stellen.

Welche Packages in C++ dieses Problem beheben weiß ich leider nicht.

Hoffe, Dir etwas geholfen zu haben

Sculpture