Fortran: Fortran 2003: Intrinsische Funktionen und Subroutinen
<<< zur Fortran-Startseite | |
<< Fortran 2003 | Bibliotheken >> |
< Ein- und Ausgabe | Intrinsische Module > |
Die Fortran 90/95-Funktionen und -Subroutinen sind natürlich auch in Fortran 2003 uneingeschränkt gültig. Einige Unterprogramme wurden neu aufgenommen, andere in ihrer Funktionalität etwas erweitert. Mit Fortran 2008 wurde eine Reihe von Funktionen neu aufgenommen (z.B. für die Bit-Verarbeitung, Bessel-, Gamma- und Fehlerfunktion, euklidische Vektornormen). Neu in Fortran 2023 sind u.a. etliche Winkel- und Arkusfunktionen, sowie String-Unterprogramme.
Neu
[Bearbeiten]Datentypfunktionen
[Bearbeiten]Funktion | Beschreibung |
---|---|
i = selected_char_kind ( c ) |
Gibt den kind-Wert des Parameters zurück. Der Rückgabewert ist von Datentyp Parameter:
Rückgabewert:
Beispiel: i = selected_char_kind( "ASCII" ) i => 1 |
Kommandozeile und Environment
[Bearbeiten]Funktion | Beschreibung |
---|---|
i = command_argument_count ( ) | Anzahl der übergebenen Kommandozeilenargumente (der Programmname selbst wird nicht mitgezählt). Der Rückgabewert ist vom Typ integer .
Beispiel: Programmaufruf mit: ./a.out opt1 opt2 i = command_argument_count( ) i => 2 |
Subroutine | Beschreibung |
---|---|
get_command ( [c, i, i] ) | Übergebene Kommandozeilenargumente (ohne Programmname)
Parameter:
Beispiel: Programmaufruf mit: ./a.out opt1 opt2 call get_command( str, len, st ) str => opt1 opt2 len => 9 st => 0 |
get_command_argument ( i, [c, i, i] ) | Ein bestimmtes Kommandozeilenargument (inkl. Programmname)
Parameter:
Beispiel: Programmaufruf mit: ./a.out opt1 opt2 call get_command_argument( 1, str, len, st ) str => opt1 len => 4 st => 0 |
get_environment_variable ( c1, [c2, i, i, l] ) | Wert einer bestimmten Umgebungsvariable.
Parameter:
Beispiel: call get_environment_variable( "PWD", str, len, st, .TRUE. ) str => /usr/bin len => 8 st => 0 |
Mathematische Funktionen
[Bearbeiten]Trigonometrische Funktionen
[Bearbeiten]Funktion | Beschreibung |
---|---|
r = acosd ( r ) |
Ab Fortran 2023. Berechnet den Arkus-Cosinus. Gibt den berechneten Wert in Grad (und nicht in Radiant wie bei acos) zurück. |
r = asind ( r ) |
Ab Fortran 2023. Berechnet den Arkus-Sinus. Gibt den berechneten Wert in Grad (und nicht in Radiant wie bei asin) zurück. |
r = atand ( r ) |
Ab Fortran 2023. Berechnet den Arkus-Tangens. Gibt den berechneten Wert in Grad (und nicht in Radiant wie bei atan) zurück. |
r = atan2d ( r1, r2 ) |
Ab Fortran 2023. Berechnet den Arkus-Tangens. Gibt den berechneten Wert in Grad (und nicht in Radiant wie bei atan) zurück. |
r = atand ( r1, r2 ) |
Ab Fortran 2023. Berechnet den Arkus-Tangens. Gleich wie atan2d( r1, r2 ). |
r = cosd ( r ) |
Ab Fortran 2023. Berechnet den Cosinus. Das Argument ist in der Einheit Grad anzugeben (und nicht in Radiant wie bei cos). |
r = sind ( r ) |
Ab Fortran 2023. Berechnet den Sinus. Das Argument ist in der Einheit Grad anzugeben (und nicht in Radiant wie bei sin). |
r = tand ( r ) |
Ab Fortran 2023. Berechnet den Tangens. Das Argument ist in der Einheit Grad anzugeben (und nicht in Radiant wie bei tan). |
Fehler- und Gamma-Funktion
[Bearbeiten]Funktion | Beschreibung |
---|---|
r = erf ( r ) | Ab Fortran 2008. Berechnet die Fehler-Funktion |
r = erfc ( r ) | Ab Fortran 2008. Berechnet |
r = erfc_scaled ( r ) | Ab Fortran 2008. Berechnet |
r = gamma ( r ) | Ab Fortran 2008. Berechnet die Gamma-Funktion für |
r = log_gamma ( r ) | Ab Fortran 2008. Berechnet den natürlichen Logarithmus der Gamma-Funktion |
Besselsche Funktion
[Bearbeiten]Die Bessel-Funktion erster Art -ter Ordnung ist definiert als (Details siehe Bessel-Funktion)
Funktion | Beschreibung |
---|---|
r = bessel_j0 ( r ) | Ab Fortran 2008. Berechnet die Bessel-Funktion 1 .Art und 0. Ordnung |
r = bessel_j1 ( r ) | Ab Fortran 2008. Berechnet die Bessel-Funktion 1. Art und 1. Ordnung |
r = bessel_jn ( i, r ) | Ab Fortran 2008. Berechnet die Bessel-Funktion 1. Art und i. Ordnung () |
Die Bessel-Funktion zweiter Art -ter Ordnung ist definiert als
Funktion | Beschreibung |
---|---|
r = bessel_y0 ( r1 ) | Ab Fortran 2008. Berechnet die Bessel-Funktion 2. Art und 0. Ordnung () |
r = bessel_y1 ( r1 ) | Ab Fortran 2008. Berechnet die Bessel-Funktion 2. Art und 1. Ordnung () |
r = bessel_yn ( i, r1 ) | Ab Fortran 2008. Berechnet die Bessel-Funktion 2. Art und i. Ordnung (, ) |
Euklidische Vektornormen
[Bearbeiten]Funktion | Beschreibung |
---|---|
r = norm2 ( ra ) | Ab Fortran 2008. Gibt die euklidische Vektornorm () zurück. ra sei ein Array mit reellen Elementen.
Bsp.: program main implicit none print *, norm2([2., 3., 1.]) end program main Ausgabe: 3.741657 |
r = hypot ( r1, r2 ) | Ab Fortran 2008. Gibt die euklidische Vektornorm () zurück. r1 und r2 seien reelle Zahlen. hypot steht vermutlich als Abkürzung für "Hypotenuse"
|
Bit-Verarbeitung
[Bearbeiten]Funktion | Beschreibung |
---|---|
l = bge ( i1, i2 ) | Ab Fortran 2008. Gibt den Wert true zurück, wenn i1 bitweise größer oder gleich i2 ist, z.B.
program main implicit none print *, bge( B'101110110001', B'11001' ) print *, bge( B'101', B'11001' ) print *, bge( 10, -1 ) end program main Ausgabe: T F F Warum ist -1 bitweise größer als 10? Antwort: -1 entspricht binär B'11111111111111111111111111111111' und 10 entspricht binär B'1010' (siehe auch Zweierkomplement) |
l = bgt ( i1, i2 ) | Ab Fortran 2008. Gibt den Wert true zurück, wenn i1 bitweise größer i2 ist |
l = ble ( i1, i2 ) | Ab Fortran 2008. Gibt den Wert true zurück, wenn i1 bitweise kleiner oder gleich i2 ist |
l = blt ( i1, i2 ) | Ab Fortran 2008. Gibt den Wert true zurück, wenn i1 bitweise kleiner i2 ist |
i = leadz ( i1 ) | Ab Fortran 2008. Gibt die Anzahl der führenden Null-Bits in i1 zurück. Bsp.:
program main implicit none print *, leadz( 20 ) end program main Ausgabe: 27 Die Dezimalzahl 20 entspricht der binären Zahl B'10100'. D.h. bei einer 32-bit-Zahl sind 27 führende Null-Bits vorhanden (27 + 5 = 32). |
i = popcnt ( i1 ) | Ab Fortran 2008. Gibt die Anzahl der 1-Bits in i1 zurück . Bsp.:
program main implicit none print *, popcnt( 25 ) print *, popcnt( B'11001' ) end program main Ausgabe: 3 3 |
Zeichenketten-Verarbeitung
[Bearbeiten]Erweitert
[Bearbeiten]system_clock(i1, ir, i2)
... Das zweite Argument (count_rate
) darf nun vom Datentypinteger
oderreal
sein.max, maxloc, maxval, min, minloc, minval
... Funktionieren nunmehr auch für Werte vom Datentypcharacter
.atan2(r1, r2), log(rx), sqrt(rx)
... Unterscheidung von positiven und negativen Nullen im Argument.
<<< zur Fortran-Startseite | |
<< Fortran 2003 | Bibliotheken >> |
< Ein- und Ausgabe | Intrinsische Module > |