2017-01-12 7 views
0

Letting a1 als erster Begriff zu lösen, r die Konstante sein, dass jeder Term multipliziert wird, um die nächste Wahlperiode zu erhalten und n die Anzahl der Begriffe sein, die geometrische Progression ist: ai = a1*r**(i-1), pn das Produkt der n Begriffe und sn die Summe der n Begriffe.Bessere Präzision eine geometrische Progression

Ich habe die Formeln, um dies zu berechnen, aber Fortran 95 (Plato2) gibt nicht die Genauigkeit, die ich brauche. (Zum Beispiel: Ich kann -1.234E + 00567890 als Ergebnis nicht erhalten).

Wie kann ich die doppelte Genauigkeit "arbeiten", um mit diesen "großen" Zahlen zu arbeiten?

+1

Sie müssen Ihren Code anzeigen und beschreiben, welcher Befehl das angezeigte Ergebnis angibt. Vergessen Sie nicht zu zeigen, wie Sie Ihre Variablen initialisieren. Sonst wird Ihre Frage als Off-Topic beendet. Lesen Sie [fragen] und [mcve] –

Antwort

1

Solch hohe Zahlen (Ihr Beispiel -1.234E + 00567890) sind zu groß für einen vom Fortran-Standard gelieferten intrinsischen numerischen Typ. Sie sind auch größer als Zahlen, die in physikalischen und technischen Anwendungen verwendet werden. Zum Beispiel unterstützen meine gfortran diese Art:

huge(1.0_real32) 3.40282347E+38 
huge(1.0_real64) 1.7976931348623157E+308 
huge(1.0_real128) 1.18973149535723176508575932662800702E+4932 

Soweit ich es weiß kein Fortran Compiler Floating-Point-Typen zur Verfügung mit vielen größeren Eigen ist.

Für spezialisierte Zwecke, wie Ihres, werden spezialisierte Bibliotheken benötigt. Diese Seite ist nicht für Software-Empfehlungen, daher werde ich keine bestimmte empfehlen. Schaut euch eine Liste von einigen von ihnen an unter http://crd-legacy.lbl.gov/~dhbailey/mpdist/ und natürlich gibt es noch mehr (die GNU Scientific Library wird sicher etwas haben).

Verwandte Themen