Fortran - funkcje wewnętrzne
Funkcje wewnętrzne to kilka typowych i ważnych funkcji, które są dostarczane jako część języka Fortran. Omówiliśmy już niektóre z tych funkcji w rozdziałach Tablice, Znaki i Ciągi.
Funkcje wewnętrzne można podzielić na -
- Funkcje numeryczne
- Funkcje matematyczne
- Numeryczne funkcje zapytań
- Funkcje manipulacji zmiennoprzecinkowych
- Funkcje manipulacji bitami
- Funkcje postaci
- Kind Functions
- Funkcje logiczne
- Funkcje tablicowe.
Omówiliśmy funkcje tablicowe w rozdziale Tablice. W poniższej sekcji przedstawiamy krótkie opisy wszystkich tych funkcji z innych kategorii.
W kolumnie nazwy funkcji
- A reprezentuje dowolny typ zmiennej numerycznej
- R reprezentuje zmienną rzeczywistą lub całkowitą
- X i Y reprezentują rzeczywiste zmienne
- Z reprezentuje zmienną złożoną
- W reprezentuje zmienną rzeczywistą lub złożoną
Funkcje numeryczne
Sr.No | Opis funkcji |
---|---|
1 | ABS (A) Zwraca wartość bezwzględną A |
2 | AIMAG (Z) Zwraca część urojoną liczby zespolonej Z |
3 | AINT (A [, KIND]) Obcina ułamkową część A w kierunku zera, zwracając rzeczywistą liczbę całkowitą. |
4 | ANINT (A [, KIND]) Zwraca wartość rzeczywistą, najbliższą liczbę całkowitą lub całkowitą. |
5 | CEILING (A [, KIND]) Zwraca najmniejszą liczbę całkowitą większą lub równą liczbie A. |
6 | CMPLX (X [, Y, KIND]) Konwertuje rzeczywiste zmienne X i Y na liczbę zespoloną X + iY; jeśli nie ma Y, używane jest 0. |
7 | CONJG (Z) Zwraca sprzężoną liczbę zespoloną dowolnej liczby zespolonej Z. |
8 | DBLE (A) Konwertuje A na liczbę rzeczywistą o podwójnej precyzji. |
9 | DIM (X, Y) Zwraca dodatnią różnicę X i Y. |
10 | DPROD (X, Y) Zwraca rzeczywisty iloczyn podwójnej precyzji X i Y. |
11 | FLOOR (A [, KIND]) Zapewnia największą liczbę całkowitą mniejszą lub równą liczbie A. |
12 | INT (A [, KIND]) Konwertuje liczbę (rzeczywistą lub całkowitą) na liczbę całkowitą, obcinając część rzeczywistą w kierunku zera. |
13 | MAX (A1, A2 [, A3,...]) Zwraca maksymalną wartość z argumentów, wszystkie są tego samego typu. |
14 | MIN (A1, A2 [, A3,...]) Zwraca minimalną wartość z argumentów, wszystkie są tego samego typu. |
15 | MOD (A, P) Zwraca resztę A po dzieleniu przez P, oba argumenty są tego samego typu (A-INT (A / P) * P) |
16 | MODULO (A, P) Zwraca A modulo P: (A-FLOOR (A / P) * P) |
17 | NINT (A [, KIND]) Zwraca najbliższą liczbę całkowitą z liczby A |
18 | REAL (A [, KIND]) Konwertuje na prawdziwy typ |
19 | SIGN (A, B) Zwraca wartość bezwzględną A pomnożoną przez znak P. Zasadniczo przenosi znak B do A. |
Przykład
program numericFunctions
implicit none
! define constants
! define variables
real :: a, b
complex :: z
! values for a, b
a = 15.2345
b = -20.7689
write(*,*) 'abs(a): ',abs(a),' abs(b): ',abs(b)
write(*,*) 'aint(a): ',aint(a),' aint(b): ',aint(b)
write(*,*) 'ceiling(a): ',ceiling(a),' ceiling(b): ',ceiling(b)
write(*,*) 'floor(a): ',floor(a),' floor(b): ',floor(b)
z = cmplx(a, b)
write(*,*) 'z: ',z
end program numericFunctions
Kiedy kompilujesz i wykonujesz powyższy program, daje on następujący wynik -
abs(a): 15.2344999 abs(b): 20.7688999
aint(a): 15.0000000 aint(b): -20.0000000
ceiling(a): 16 ceiling(b): -20
floor(a): 15 floor(b): -21
z: (15.2344999, -20.7688999)
Funkcje matematyczne
Sr.No | Opis funkcji |
---|---|
1 | ACOS (X) Zwraca odwrotny cosinus z zakresu (0, π) w radianach. |
2 | ASIN (X) Zwraca odwrotny sinus w zakresie (-π / 2, π / 2) w radianach. |
3 | ATAN (X) Zwraca odwrotną tangens w zakresie (-π / 2, π / 2) w radianach. |
4 | ATAN2 (Y, X) Zwraca odwrotną tangens w zakresie (-π, π) w radianach. |
5 | COS (X) Zwraca cosinus argumentu w radianach. |
6 | COSH (X) Zwraca hiperboliczny cosinus argumentu w radianach. |
7 | EXP (X) Zwraca wykładniczą wartość X. |
8 | LOG (X) Zwraca naturalną wartość logarytmiczną X. |
9 | LOG10 (X) Zwraca wspólną wartość logarytmiczną (podstawa 10) X. |
10 | SIN (X) Zwraca sinus argumentacji w radianach. |
11 | SINH (X) Zwraca hiperboliczny sinus argumentacji w radianach. |
12 | SQRT (X) Zwraca pierwiastek kwadratowy z X. |
13 | TAN (X) Zwraca tangens argumentu w radianach. |
14 | TANH (X) Zwraca hiperboliczną tangens argumentu w radianach. |
Przykład
Poniższy program oblicza odpowiednio poziome i pionowe położenie xiy pocisku po czasie, t -
Gdzie x = ut cos a i y = ut sin a - g t2 / 2
program projectileMotion
implicit none
! define constants
real, parameter :: g = 9.8
real, parameter :: pi = 3.1415927
!define variables
real :: a, t, u, x, y
!values for a, t, and u
a = 45.0
t = 20.0
u = 10.0
! convert angle to radians
a = a * pi / 180.0
x = u * cos(a) * t
y = u * sin(a) * t - 0.5 * g * t * t
write(*,*) 'x: ',x,' y: ',y
end program projectileMotion
Kiedy kompilujesz i wykonujesz powyższy program, daje on następujący wynik -
x: 141.421356 y: -1818.57861
Numeryczne funkcje zapytań
Te funkcje działają z pewnym modelem arytmetyki liczb całkowitych i zmiennoprzecinkowych. Funkcje zwracają właściwości liczb tego samego rodzaju co zmienna X, które mogą być rzeczywiste, aw niektórych przypadkach całkowite.
Sr.No | Opis funkcji |
---|---|
1 | DIGITS (X) Zwraca liczbę cyfr znaczących modelu. |
2 | EPSILON (X) Zwraca liczbę, która jest prawie nieistotna w porównaniu do jedynki. Innymi słowy, zwraca najmniejszą wartość, taką że REAL (1.0, KIND (X)) + EPSILON (X) nie jest równe REAL (1.0, KIND (X)). |
3 | HUGE (X) Zwraca największą liczbę modelu |
4 | MAXEXPONENT (X) Zwraca maksymalny wykładnik modelu |
5 | MINEXPONENT (X) Zwraca minimalny wykładnik modelu |
6 | PRECISION (X) Zwraca dokładność dziesiętną |
7 | RADIX (X) Zwraca podstawę modelu |
8 | RANGE (X) Zwraca zakres wykładnika dziesiętnego |
9 | TINY (X) Zwraca najmniejszą dodatnią liczbę modelu |
Funkcje manipulacji zmiennoprzecinkowych
Sr.No | Opis funkcji |
---|---|
1 | EXPONENT (X) Zwraca część wykładniczą numeru modelu |
2 | FRACTION (X) Zwraca ułamkową część liczby |
3 | NEAREST (X, S) Zwraca najbliższy inny numer procesora w podanym kierunku |
4 | RRSPACING (X) Zwraca odwrotność względnego odstępu numerów modeli w pobliżu podanej liczby |
5 | SCALE (X, I) Mnoży liczbę rzeczywistą przez jej podstawę do potęgi całkowitej |
6 | SET_EXPONENT (X, I) zwraca część wykładniczą liczby |
7 | SPACING (X) Zwraca bezwzględne odstępy numerów modeli w pobliżu podanej liczby |
Funkcje manipulacji bitami
Sr.No | Opis funkcji |
---|---|
1 | BIT_SIZE (I) Zwraca liczbę bitów modelu |
2 | BTEST (I, POS) Testowanie bitów |
3 | IAND (I, J) Logiczne AND |
4 | IBCLR (I, POS) Wyczyść kawałek |
5 | IBITS (I, POS, LEN) Ekstrakcja bitów |
6 | IBSET (I, POS) Ustaw bit |
7 | IEOR (I, J) Ekskluzywne OR |
8 | IOR (I, J) Inclusive OR |
9 | ISHFT (I, SHIFT) Logiczna zmiana |
10 | ISHFTC (I, SHIFT [, SIZE]) Przesunięcie okrężne |
11 | NOT (I) Logiczne uzupełnienie |
Funkcje postaci
Sr.No | Opis funkcji |
---|---|
1 | ACHAR (I) Zwraca I-ty znak w kolejności zestawiania ASCII. |
2 | ADJUSTL (STRING) Dostosowuje ciąg pozostawiony, usuwając wszelkie początkowe spacje i wstawiając końcowe spacje |
3 | ADJUSTR (STRING) Dostosowuje ciąg w prawo, usuwając końcowe spacje i wstawiając wiodące spacje. |
4 | CHAR (I [, KIND]) Zwraca I-ty znak w kolejności zestawiania specyficznej dla maszyny |
5 | IACHAR (C) Zwraca pozycję znaku w kolejności zestawiania ASCII. |
6 | ICHAR (C) Zwraca pozycję znaku w kolejności zestawiania specyficznej dla maszyny (procesora). |
7 | INDEX (STRING, SUBSTRING [, BACK]) Zwraca skrajne lewe (skrajne prawe, jeśli BACK to .TRUE.) Początkowe położenie SUBSTRING w ciągu STRING. |
8 | LEN (STRING) Zwraca długość łańcucha. |
9 | LEN_TRIM (STRING) Zwraca długość łańcucha bez końcowych pustych znaków. |
10 | LGE (STRING_A, STRING_B) Leksykalnie większe lub równe |
11 | LGT (STRING_A, STRING_B) Leksykalnie większy niż |
12 | LLE (STRING_A, STRING_B) Leksykalnie mniejszy lub równy |
13 | LLT (STRING_A, STRING_B) Leksykalnie mniej niż |
14 | REPEAT (STRING, NCOPIES) Wielokrotna konkatenacja |
15 | SCAN (STRING, SET [, BACK]) Zwraca indeks skrajnego lewego (najbardziej prawego, jeśli BACK jest .TRUE.) Znaku STRING, który należy do SET, lub 0, jeśli żaden nie należy. |
16 | TRIM (STRING) Usuwa końcowe puste znaki |
17 | VERIFY (STRING, SET [, BACK]) Weryfikuje zestaw znaków w ciągu |
Kind Functions
Sr.No | Opis funkcji |
---|---|
1 | KIND (X) Zwraca wartość parametru typu rodzaju. |
2 | SELECTED_INT_KIND (R) Zwraca rodzaj parametru typu dla określonego zakresu wykładników. |
3 | SELECTED_REAL_KIND ([P, R]) Wartość parametru typu rzeczywistego, podana precyzja i zakres |
Funkcja logiczna
Sr.No | Opis funkcji |
---|---|
1 | LOGICAL (L [, KIND]) Konwertuj między obiektami typu logicznego z różnymi parametrami typu |