Fortran - İçsel Fonksiyonlar
İçsel işlevler, Fortran dilinin bir parçası olarak sağlanan bazı yaygın ve önemli işlevlerdir. Bu işlevlerden bazılarını Diziler, Karakterler ve Dizgi bölümlerinde zaten tartışmıştık.
İçsel işlevler şu şekilde kategorize edilebilir:
- Sayısal İşlevler
- Matematiksel Fonksiyonlar
- Sayısal Sorgulama Fonksiyonları
- Kayan Nokta Manipülasyon İşlevleri
- Bit Manipülasyon İşlevleri
- Karakter Fonksiyonları
- Tür İşlevler
- Mantıksal Fonksiyonlar
- Dizi İşlevleri.
Dizi işlevlerini Diziler bölümünde tartıştık. Aşağıdaki bölümde, diğer kategorilerden tüm bu işlevlerin kısa açıklamalarını sunuyoruz.
İşlev adı sütununda,
- A, her tür sayısal değişkeni temsil eder
- R bir gerçek veya tamsayı değişkeni temsil eder
- X ve Y gerçek değişkenleri temsil eder
- Z karmaşık değişkeni temsil eder
- W, gerçek veya karmaşık değişkeni temsil eder
Sayısal İşlevler
Sr.No | İşlev ve Açıklama |
---|---|
1 | ABS (A) A'nın mutlak değerini verir |
2 | AIMAG (Z) Z karmaşık sayısının sanal bölümünü döndürür |
3 | AINT (A [, KIND]) A'nın kesirli kısmını sıfıra doğru keserek gerçek bir tam sayı döndürür. |
4 | ANINT (A [, KIND]) Gerçek bir değer, en yakın tamsayı veya tam sayı döndürür. |
5 | CEILING (A [, KIND]) A sayısına eşit veya daha büyük olan en küçük tamsayıyı döndürür. |
6 | CMPLX (X [, Y, KIND]) X ve Y gerçek değişkenlerini X + iY karmaşık sayıya dönüştürür; Y yoksa, 0 kullanılır. |
7 | CONJG (Z) Herhangi bir karmaşık sayı Z'nin karmaşık eşleniğini döndürür. |
8 | DBLE (A) A'yı çift duyarlıklı bir gerçek sayıya çevirir. |
9 | DIM (X, Y) X ve Y'nin pozitif farkını döndürür. |
10 | DPROD (X, Y) X ve Y'nin çift kesinlikli gerçek ürününü döndürür. |
11 | FLOOR (A [, KIND]) A sayısına eşit veya daha küçük olan en büyük tamsayıyı sağlar. |
12 | INT (A [, KIND]) Bir sayıyı (gerçek veya tamsayı) tam sayıya dönüştürür, gerçek kısmı sıfıra doğru kısaltır. |
13 | MAX (A1, A2 [, A3,...]) Hepsi aynı türde olan bağımsız değişkenlerden maksimum değeri döndürür. |
14 | MIN (A1, A2 [, A3,...]) Bağımsız değişkenlerden minimum değeri döndürür, hepsi aynı türdedir. |
15 | MOD (A, P) Her iki argüman da aynı tiptedir (A-INT (A / P) * P), P'ye bölmede A'nın kalanını döndürür |
16 | MODULO (A, P) A modulo P döndürür: (A-FLOOR (A / P) * P) |
17 | NINT (A [, KIND]) A sayısının en yakın tamsayısını verir |
18 | REAL (A [, KIND]) Gerçek türe dönüşür |
19 | SIGN (A, B) A'nın mutlak değerini P'nin işaretiyle çarparak döndürür. Temel olarak B'nin işaretini A'ya aktarır. |
Misal
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
Yukarıdaki programı derleyip çalıştırdığınızda, aşağıdaki sonucu verir -
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)
Matematiksel Fonksiyonlar
Sr.No | İşlev ve Açıklama |
---|---|
1 | ACOS (X) Radyan cinsinden (0, π) aralığında ters kosinüsü döndürür. |
2 | ASIN (X) Radyan cinsinden (-π / 2, π / 2) aralığındaki ters sinüsü döndürür. |
3 | ATAN (X) Radyan cinsinden (-π / 2, π / 2) aralığındaki ters tanjantı döndürür. |
4 | ATAN2 (Y, X) Radyan cinsinden (-π, π) aralığındaki ters tanjantı döndürür. |
5 | COS (X) Radyan cinsinden argümanın kosinüsünü döndürür. |
6 | COSH (X) Radyan cinsinden argümanın hiperbolik kosinüsünü döndürür. |
7 | EXP (X) X'in üstel değerini döndürür. |
8 | LOG (X) X'in doğal logaritmik değerini döndürür. |
9 | LOG10 (X) X'in ortak logaritmik (10 tabanı) değerini döndürür. |
10 | SIN (X) Radyan cinsinden argümanın sinüsünü döndürür. |
11 | SINH (X) Radyan cinsinden hiperbolik argümanın sinüsünü döndürür. |
12 | SQRT (X) X'in karekökünü döndürür. |
13 | TAN (X) Radyan cinsinden argümanın tanjantını döndürür. |
14 | TANH (X) Radyan cinsinden argümanın hiperbolik tanjantını döndürür. |
Misal
Aşağıdaki program, bir merminin bir süre sonra yatay ve dikey konumunu sırasıyla x ve y, t -
Nerede, x = ut cos a ve 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
Yukarıdaki programı derleyip çalıştırdığınızda, aşağıdaki sonucu verir -
x: 141.421356 y: -1818.57861
Sayısal Sorgulama Fonksiyonları
Bu işlevler belirli bir tamsayı ve kayan nokta aritmetiği modeliyle çalışır. Fonksiyonlar, X değişkeni ile aynı türden sayıların özelliklerini döndürür; bu, gerçek ve bazı durumlarda tamsayı olabilir.
Sr.No | İşlev ve Açıklama |
---|---|
1 | DIGITS (X) Modelin anlamlı basamak sayısını döndürür. |
2 | EPSILON (X) Bire kıyasla neredeyse ihmal edilebilir olan sayıyı döndürür. Başka bir deyişle, REAL (1.0, KIND (X)) + EPSILON (X), REAL (1.0, KIND (X)) 'e eşit olmayacak şekilde en küçük değeri döndürür. |
3 | HUGE (X) Modelin en büyük sayısını döndürür |
4 | MAXEXPONENT (X) Modelin maksimum üssünü verir |
5 | MINEXPONENT (X) Modelin minimum üssünü döndürür |
6 | PRECISION (X) Ondalık kesinliği verir |
7 | RADIX (X) Modelin tabanını döndürür |
8 | RANGE (X) Ondalık üs aralığını döndürür |
9 | TINY (X) Modelin en küçük pozitif sayısını verir |
Kayan Nokta Manipülasyon İşlevleri
Sr.No | İşlev ve Açıklama |
---|---|
1 | EXPONENT (X) Model numarasının üslü kısmını döndürür |
2 | FRACTION (X) Bir sayının kesirli kısmını döndürür |
3 | NEAREST (X, S) Belirtilen yönde en yakın farklı işlemci numarasını döndürür |
4 | RRSPACING (X) Verilen sayıya yakın model numaralarının göreli aralığının karşılığını verir |
5 | SCALE (X, I) Bir reali tabanıyla bir tamsayı kuvvetiyle çarpar |
6 | SET_EXPONENT (X, I) bir sayının üslü kısmını döndürür |
7 | SPACING (X) Verilen sayıya yakın model numaralarının mutlak aralığını döndürür |
Bit Manipülasyon İşlevleri
Sr.No | İşlev ve Açıklama |
---|---|
1 | BIT_SIZE (I) Modelin bit sayısını döndürür |
2 | BTEST (I, POS) Bit testi |
3 | IAND (I, J) Mantıksal AND |
4 | IBCLR (I, POS) Biti temizle |
5 | IBITS (I, POS, LEN) Bit çıkarma |
6 | IBSET (I, POS) Bit ayarla |
7 | IEOR (I, J) Özel veya |
8 | IOR (I, J) Kapsayıcı VEYA |
9 | ISHFT (I, SHIFT) Mantıksal kayma |
10 | ISHFTC (I, SHIFT [, SIZE]) Dairesel kaydırma |
11 | NOT (I) Mantıksal tamamlayıcı |
Karakter Fonksiyonları
Sr.No | İşlev ve Açıklama |
---|---|
1 | ACHAR (I) ASCII harmanlama dizisindeki I'inci karakteri döndürür. |
2 | ADJUSTL (STRING) Öndeki boşlukları kaldırarak ve sondaki boşlukları ekleyerek bırakılan dizeyi ayarlar |
3 | ADJUSTR (STRING) Sondaki boşlukları kaldırarak ve öndeki boşlukları ekleyerek dizeyi doğru ayarlar. |
4 | CHAR (I [, KIND]) Makineye özel harmanlama sırasındaki I'inci karakteri döndürür |
5 | IACHAR (C) Karakterin ASCII harmanlama sırasındaki konumunu döndürür. |
6 | ICHAR (C) Makineye (işlemci) özel harmanlama sırasındaki karakterin konumunu döndürür. |
7 | INDEX (STRING, SUBSTRING [, BACK]) STRING içindeki SUBSTRING'in en soldaki (GERİ .TRUE ise en sağdaki) başlangıç konumunu döndürür. |
8 | LEN (STRING) Bir dizenin uzunluğunu döndürür. |
9 | LEN_TRIM (STRING) Sonunda boş karakterler olmadan bir dizenin uzunluğunu döndürür. |
10 | LGE (STRING_A, STRING_B) Sözcüksel olarak büyük veya eşit |
11 | LGT (STRING_A, STRING_B) Sözcüksel olarak büyüktür |
12 | LLE (STRING_A, STRING_B) Sözcüksel olarak küçüktür veya eşittir |
13 | LLT (STRING_A, STRING_B) Sözcüksel olarak daha az |
14 | REPEAT (STRING, NCOPIES) Tekrarlanan birleştirme |
15 | SCAN (STRING, SET [, BACK]) SET'e ait STRING karakterinin en soldaki (GERİ. |
16 | TRIM (STRING) Sondaki boş karakterleri kaldırır |
17 | VERIFY (STRING, SET [, BACK]) Bir dizedeki karakter kümesini doğrular |
Tür İşlevler
Sr.No | İşlev ve Açıklama |
---|---|
1 | KIND (X) Tür türü parametre değerini döndürür. |
2 | SELECTED_INT_KIND (R) Belirtilen üs aralığı için tür parametresi döndürür. |
3 | SELECTED_REAL_KIND ([P, R]) Kesinlik ve aralık verilen gerçek tür parametre değeri |
Mantıksal İşlev
Sr.No | İşlev ve Açıklama |
---|---|
1 | LOGICAL (L [, KIND]) Farklı türdeki parametrelerle mantıksal türdeki nesneler arasında dönüştürme |