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