FORTRAN: Difference between revisions

From BlueM
Jump to navigation Jump to search
Line 20: Line 20:
real*4 a
real*4 a
real*4 b
real*4 b
logical isNull
isNull =(a == b) !wird sogut wie nie erfüllt


if (a == b) error !wird sogut wie nie erfüllt
isNull = (a - b < global_fastnull) !aktuell im Projekt verwendet
 
if (a - b < global_null) !aktuell im Projekt verwendet
 
!Alternativen (zur Diskussion)
!Alternativen (zur Diskussion)


if (abs(a - b) < eps)
isnull =  (abs(a - b) < Epsilon(a))
if (abs(a/b-1.0E0) < eps)
!if (abs(a/b-1.0E0) < eps) !führte zu Fehlern
</fortran>
</fortran>



Revision as of 07:08, 24 June 2008

Real Werte und Vergleiche

Ein wichtiger Punkt bei der Programmierung mit Fortran ist die Behandlung der Real Werte. Insbesondere der vergleich, ob zwei Real Werte gelich sind, ist in FORTRAN nur durch eine erweiterte Syntax möglich.

Zuweisen von Werten:

<fortran> real*4 a real*8 b

a = 0.123e0 !das e0 kennzeichnet den Wert als real*4

b = 0.123d0 ! das d0 kennzeichnet den Wert als real*8 </fortran>


Vergleich von Realzahlen

Momentan wird im Rechenkern mit unterschiedlichen Vergelichen gerechnet (global_fastnull etc.)

<fortran> real*4 a real*4 b logical isNull isNull =(a == b) !wird sogut wie nie erfüllt

isNull = (a - b < global_fastnull) !aktuell im Projekt verwendet !Alternativen (zur Diskussion)

isnull = (abs(a - b) < Epsilon(a)) !if (abs(a/b-1.0E0) < eps) !führte zu Fehlern </fortran>

Links:

Vergleich von Realwerten [1]]