A Fortran programozási nyelv

Fortran függvényei

A Fortran egy programozási nyelv, melyet elsősorban matematikai számítások megkönnyítésére fejlesztettek ki. Mind a mai napig a Fortran a legelterjedtebb programozási nyelv a mérnöki (és egyéb magas szintű matematikai) számítások elvégzéséhez. Ezért célszerű megismerkedni a Fortran által felkínált függvényekkel.

Numerikus konverziók

A következő függvények skalár és tömb paraméterekkel is hívhatók.

Valós számok konverziója:

real, dimension(3) :: rv (/-2.6,3.5,1.0/) floor(rv) ! /3, 3, 1/ lekerekített egész rész ceiling(rv) ! /-2, 4, 1/ felkerekített egész rész int(rv) ! /-2, 3, 1/ egész rész nint(rv) ! /-3, 4, 1/ legközelebbi egész aint(rv) ! /-2.0, 3.0, 1.0/ valós értékű egész rész int(rv) ! /-3.0, 4.0, 1.0/ valós értékű legközelebbi egész

Egész számok konverziója:

integer, dimension(3) :: iv (/-2,1,4/) real(iv) ! /-2.0, 1.0, 4.0/ egészet valósra konvertál cmplx(iv) ! /(-2.0,0.0), (1.0,0.0), (4.0,0.0)/ egészet komplexre konverál

Komplex számok konverziója:

cv (/(-2,1), (1.1,0), (0,-3)/) real(cv) ! /-2.0, 1.1, 0.0/ valós rész aimag(cv) ! /1.0, 0.0, -3.0/ képzetes rész conjg(cv) ! /(-2.0,-1.0), (1.1,-0.0), (0.0,3.0)/ komplex konjugáltja

Matematikai függvények

Abszolult érték:

abs(iv) ! /2, 1, 4/ egész argumentumokkal abs(rv) ! /2.6, 3.5, 1.0/ valós argumentumokkal abs(cv) ! /2.2360680, 1.1000000, 3.0000000/ komplex argumentumokkal

Minimum, maximum érték tetszőleges számú skalár, vagy tömb paraméterrel. (Típusuknak, alakjuknak egyeznie kell.)

max(-1, 2, 0) ! 2 maximum érték min(-1, 2, 0) ! -1 minimum érték max((/1,3/), (/-1,4/)) ! /1, 4/ maximum tömbök esetén

Maradék rész függvény egész, valós és tömb paraméterrel.

mod(-23, 10) ! -3 mod(-23.0, 10.5) ! -2.0

Trigonometrikus függvények. (Skalár és tömb paraméterekkel is használhatók.)

cos(5.0) ! = 0.2836622 sin(5.0) ! = -0.9589243 cos((5.0, 1.0)) ! = (0.4377136, 1.1269289) sin((5.0, 1.0)) ! = (-1.4796976, 0.3333602) tan(5.0) ! = -3.3805151 acos(-1.0) ! = 3.1415927 asin(-1.0) ! = -1.5707964 atan(-1.0) ! = -1.1071488

Karakter függvények

A következő függvények az egész típusú kódok és a karakter értékek közötti konverziót valósítják meg.

char(88) ! X - 88 kódú karakter achar(88) ! X - 88 ASCII kódú karakter ichar('X') ! 88 - az X karakter kódja iachar('X') ! 88 - az X karakter ASCII kódja

String függvények

Karakterlánc manipulációs függvények:

adjustl(" abcd ") ! "abcd " szóközökkel való balra eltolás adjustr(" abcd ") ! " abcd" szóközökkel való jobbra eltolás trim(" abcd ") ! " abcd" szóköz eltávolítása a karakterlánc végéről len(" abcd ") ! 8 a karakterlánc hossza

Keresés karakterláncokban:

index(" abab ","ab") ! 3 - a második karakterlánc első előfordulásának pozíciója index(" abcd ","ab",BACK=.true.) ! 5 - a második karakterlánc utolsó előfordulásának pozíciója index(" abcd ","cc") ! 0 - a második karakterlánc első előfordulásának pozíciója scan("abcd","bxzy") ! 2 - a második paraméterben megadott karakter halmazból az első előfordulás verify("abYab","abcdef") ! 3 - az első olyan karakter pozíciója, amely nem szerepel a második paraméterben felsorolt karakterláncban

Tömb műveletek

Tömbök mérete és alakja:

real :: x(-2:2,4) shape(x) ! /5, 4/ a tömb dimenziói lbound(x) ! /-2, 1/ a tömb alsó határ indexei ubound(x) ! /2, 4/ a tömb felső határ indexei size(x) ! 20 a tömb eleminek a száma lbound(x, dim=1) ! -2 a tömb alsó határ indexe a dim paraméterben megadott dimenziójában size(x, dim=1) ! 5 a tömb elemeinek a száma a dim paraméterben megadott dimenziójában

Tömb redukciós függvények:

all((/.true.,.false./)) ! false akkor igaz, ha minden eleme igaz any((/.true.,.false./)) ! true akkor igaz, ha egy eleme már igaz count((/.true.,.false./)) ! 1 megszámolja az igaz elemeket maxval((/2,3,1,3,1/)) ! 3 a tömb maximum értéke minval((/2,3,1,3,1/)) ! 1 a tömb minimum értéke maxloc((/2,3,1,3,1/)) ! 2 a tömb maximum értékének poziciója minloc((/2,3,1,3,1/)) ! 3 a tömb minimum értékének poziciója sum((/2,3,1,3,1/)) ! 10 a tömb eleminek összértéke product((/2,3,1,3,1/)) ! 18 a tömb eleminek a szorzata product((/2,3,3/), MASK=(/.true.,.true.,.false./)) ! 6 - a tömb eleminek a szorzata, amelyet a maszk paraméter kijelöl T = reshape((/11,21,31,12,22,32/), (/3,2/)) ! - a megadott vektor újradimenzionálása a második paraméter alapján maxval(T, dim=1) ! /31, 32/ - a tömb maximális értékei az első dimenzióban minval(T, dim=2) ! /12, 22, 32/ - a tömb minimális értékei a második dimenzióban

Mátrix műveletek:

dot_product((/1.0,2.0/), (/-1.0,-0.5/)) ! -2.0 skaláris szorzás A = reshape((/1,0,1,0/), (/2,2/)) B = (/3, -1/) matmul(A, B) ! /2, 0/ mátrix szorzás transpose(A) ! /1,1,0,0/ mátrix transzponáltja