long double in Vc++
-
d.h. muss ich inline asm benutzen um rechengenauigkeit zu bekommen?
oder den compiler wechsel?Nö, damit liegst du völlig daneben. Das hat gar nix damit zu tun!
-
Der Typ long double machte mal Sinn zur Zeit der Coprozessoren x87, dort waren
die Typen float mit 32 Bit
double mit 64 Bit
long double mit 80 Bit definiertMeines Wissens unterstützen die eingebauten floating Point Units nur noch den
Typ double mit 64 Bit. Intern rechnet er immer etwas genauer als 64 Bit um die Rundungsfehler zu minimieren, aber du kannst nur 64 Bit oder 32 Bit abholen der 32 Bit Wert wird aus dem 64 Bit Wert erzeugt.Doch noch eine Gegenfrage wofür brauchst du eine Rechengenauigkeit > 64 Bit (entspricht 16 Stellen)?
Nur für extrem iterative Prozesse im Bereich Klimaforschung stößt man an die numerischen Grenzen durch die impliziten Rundungsfehler.Falls es wirklich nötig ist solltest du dich nach Bignum Paketen im Internet umschauen. Aber Vorsicht die sind von der Rechenzeit sehr langsam.

-
Intern rechnet der Intel FPU mit 80bit extendet float
aber was hab ich davon wenn der das in nen 64 bit casted...
wie du sagst iterative prozesse...einee Null mit 10^-16 ist manchmal nicht null genug aber was hab ich von updates in diesem bereich? wenn ich in einer funktion den geschaetzten Unbekanntenwert um sowas aendere kann es sein das sich das Resultat um einen nicht geringen Wert aendert.
-
Ja und, wieso reitest Du jetzt auf der 80->64 bit-Konvertierung rum? Denn wenn dir ne 64bittige 0 nicht genug ist, dann sicherlich auch keine 80bittige!
-
Vor allem solltest du dem Link mal folgen den dir René G eben gepostet hat
. Du brauchst anscheinend eine "Arbitrary Precision Library"!
-
Da könnte man jetzt einwenden, wozu double wenn man float hat? Ne Leude, manchmal will man einfach Genauigkeit.
-
wie wärs mit dem Typ decimal in C# ?
-
siehe auch:
http://www.moshier.net/128bdoc.html
-
als es hat zwar nix mehr mit meiner frage zu tun aber:
bestimmt mal die erste ableitung numerisch
von x^5df:=((x+eps)5-(x-eps)5)/(2*eps);
schoen oder?
nur der fehler bei double ist in etwa eps*200000 ~ 10^-11 und das ist in double schon nicht mehr NULL...
-
fuer die Nein-sager...
80bit long double geht in M$ VC++
man muss nur den compiler wechseln(INTEL)
mit /Qlong_double compiliert dieser den Code in 80bit long double
-
Interessant, wie kann ich den Compiler in VC++ 6.0 wechseln?

-
Intel-Compiler kaufen (teuer aber gut) und installieren.