Fortran - Fonctions intrinsèques
Les fonctions intrinsèques sont des fonctions courantes et importantes fournies dans le cadre du langage Fortran. Nous avons déjà discuté de certaines de ces fonctions dans les chapitres Arrays, Characters et String.
Les fonctions intrinsèques peuvent être classées comme suit:
- Fonctions numériques
- Fonctions mathématiques
- Fonctions d'interrogation numérique
- Fonctions de manipulation en virgule flottante
- Fonctions de manipulation de bits
- Fonctions de caractères
- Fonctions Kind
- Fonctions logiques
- Fonctions de tableau.
Nous avons discuté des fonctions de tableau dans le chapitre Arrays. Dans la section suivante, nous fournissons de brèves descriptions de toutes ces fonctions à partir d'autres catégories.
Dans la colonne du nom de la fonction,
- A représente tout type de variable numérique
- R représente une variable réelle ou entière
- X et Y représentent des variables réelles
- Z représente une variable complexe
- W représente une variable réelle ou complexe
Fonctions numériques
Sr.Non | Description de la fonction |
---|---|
1 | ABS (A) Il renvoie la valeur absolue de A |
2 | AIMAG (Z) Il renvoie la partie imaginaire d'un nombre complexe Z |
3 | AINT (A [, KIND]) Il tronque une partie fractionnaire de A vers zéro, renvoyant un nombre entier réel. |
4 | ANINT (A [, KIND]) Il renvoie une valeur réelle, l'entier ou le nombre entier le plus proche. |
5 | CEILING (A [, KIND]) Il renvoie le plus petit entier supérieur ou égal au nombre A. |
6 | CMPLX (X [, Y, KIND]) Il convertit les variables réelles X et Y en un nombre complexe X + iY; si Y est absent, 0 est utilisé. |
sept | CONJG (Z) Il renvoie le conjugué complexe de tout nombre complexe Z. |
8 | DBLE (A) Il convertit A en un nombre réel à double précision. |
9 | DIM (X, Y) Il renvoie la différence positive de X et Y. |
dix | DPROD (X, Y) Il renvoie le produit réel double précision de X et Y. |
11 | FLOOR (A [, KIND]) Il fournit le plus grand entier inférieur ou égal au nombre A. |
12 | INT (A [, KIND]) Il convertit un nombre (réel ou entier) en entier, tronquant la partie réelle vers zéro. |
13 | MAX (A1, A2 [, A3,...]) Il renvoie la valeur maximale des arguments, tous étant du même type. |
14 | MIN (A1, A2 [, A3,...]) Il renvoie la valeur minimale des arguments, tous étant du même type. |
15 | MOD (A, P) Il renvoie le reste de A divisé par P, les deux arguments étant du même type (A-INT (A / P) * P) |
16 | MODULO (A, P) Il renvoie A modulo P: (A-FLOOR (A / P) * P) |
17 | NINT (A [, KIND]) Il renvoie l'entier le plus proche du nombre A |
18 | REAL (A [, KIND]) Il se convertit en type réel |
19 | SIGN (A, B) Il renvoie la valeur absolue de A multipliée par le signe de P. Fondamentalement, il transfère le signe de de B à A. |
Exemple
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
Lorsque vous compilez et exécutez le programme ci-dessus, il produit le résultat suivant -
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)
Fonctions mathématiques
Sr.Non | Description de la fonction |
---|---|
1 | ACOS (X) Il renvoie le cosinus inverse dans la plage (0, π), en radians. |
2 | ASIN (X) Il renvoie le sinus inverse dans la plage (-π / 2, π / 2), en radians. |
3 | ATAN (X) Il renvoie la tangente inverse dans l'intervalle (-π / 2, π / 2), en radians. |
4 | ATAN2 (Y, X) Il renvoie la tangente inverse dans l'intervalle (-π, π), en radians. |
5 | COS (X) Il renvoie le cosinus de l'argument en radians. |
6 | COSH (X) Il renvoie le cosinus hyperbolique de l'argument en radians. |
sept | EXP (X) Il renvoie la valeur exponentielle de X. |
8 | LOG (X) Il renvoie la valeur logarithmique naturelle de X. |
9 | LOG10 (X) Il renvoie la valeur logarithmique commune (base 10) de X. |
dix | SIN (X) Il renvoie le sinus de l'argument en radians. |
11 | SINH (X) Il renvoie le sinus hyperbolique de l'argument en radians. |
12 | SQRT (X) Il renvoie la racine carrée de X. |
13 | TAN (X) Il renvoie la tangente de l'argument en radians. |
14 | TANH (X) Il renvoie la tangente hyperbolique de l'argument en radians. |
Exemple
Le programme suivant calcule respectivement la position horizontale et verticale x et y d'un projectile après un temps, t -
Où, x = ut cos a et 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
Lorsque vous compilez et exécutez le programme ci-dessus, il produit le résultat suivant -
x: 141.421356 y: -1818.57861
Fonctions d'interrogation numérique
Ces fonctions fonctionnent avec un certain modèle d'arithmétique en nombres entiers et en virgule flottante. Les fonctions renvoient des propriétés de nombres du même type que la variable X, qui peuvent être réels et dans certains cas entiers.
Sr.Non | Description de la fonction |
---|---|
1 | DIGITS (X) Il renvoie le nombre de chiffres significatifs du modèle. |
2 | EPSILON (X) Il renvoie le nombre qui est presque négligeable par rapport à un. En d'autres termes, il renvoie la plus petite valeur telle que REAL (1.0, KIND (X)) + EPSILON (X) n'est pas égal à REAL (1.0, KIND (X)). |
3 | HUGE (X) Il renvoie le plus grand nombre du modèle |
4 | MAXEXPONENT (X) Il renvoie l'exposant maximum du modèle |
5 | MINEXPONENT (X) Il renvoie l'exposant minimum du modèle |
6 | PRECISION (X) Il renvoie la précision décimale |
sept | RADIX (X) Il renvoie la base du modèle |
8 | RANGE (X) Il renvoie la plage d'exposants décimaux |
9 | TINY (X) Il renvoie le plus petit nombre positif du modèle |
Fonctions de manipulation en virgule flottante
Sr.Non | Description de la fonction |
---|---|
1 | EXPONENT (X) Il renvoie la partie exposant d'un numéro de modèle |
2 | FRACTION (X) Il renvoie la partie fractionnaire d'un nombre |
3 | NEAREST (X, S) Il renvoie le numéro de processeur différent le plus proche dans une direction donnée |
4 | RRSPACING (X) Il renvoie l'inverse de l'espacement relatif des numéros de modèle près du nombre donné |
5 | SCALE (X, I) Il multiplie un réel par sa base en une puissance entière |
6 | SET_EXPONENT (X, I) il renvoie la partie exposante d'un nombre |
sept | SPACING (X) Il renvoie l'espacement absolu des numéros de modèle près du nombre donné |
Fonctions de manipulation de bits
Sr.Non | Description de la fonction |
---|---|
1 | BIT_SIZE (I) Il renvoie le nombre de bits du modèle |
2 | BTEST (I, POS) Test de bits |
3 | IAND (I, J) ET logique |
4 | IBCLR (I, POS) Effacer le bit |
5 | IBITS (I, POS, LEN) Extraction de bits |
6 | IBSET (I, POS) Définir le bit |
sept | IEOR (I, J) OU exclusif |
8 | IOR (I, J) OU inclusif |
9 | ISHFT (I, SHIFT) Changement logique |
dix | ISHFTC (I, SHIFT [, SIZE]) Décalage circulaire |
11 | NOT (I) Complément logique |
Fonctions de caractères
Sr.Non | Description de la fonction |
---|---|
1 | ACHAR (I) Elle renvoie le caractère I de la séquence de classement ASCII. |
2 | ADJUSTL (STRING) Il ajuste la chaîne à gauche en supprimant tous les blancs de début et en insérant des blancs de fin |
3 | ADJUSTR (STRING) Il ajuste la chaîne à droite en supprimant les blancs de fin et en insérant les blancs de début. |
4 | CHAR (I [, KIND]) Il renvoie le caractère I dans la séquence de classement spéci fi que de la machine |
5 | IACHAR (C) Il renvoie la position du caractère dans la séquence de classement ASCII. |
6 | ICHAR (C) Il renvoie la position du caractère dans la séquence de classement spéci fi que de la machine (processeur). |
sept | INDEX (STRING, SUBSTRING [, BACK]) Il renvoie la position de départ la plus à gauche (la plus à droite si BACK est .TRUE.) De SUBSTRING dans STRING. |
8 | LEN (STRING) Il renvoie la longueur d'une chaîne. |
9 | LEN_TRIM (STRING) Il renvoie la longueur d'une chaîne sans caractères vides de fin. |
dix | LGE (STRING_A, STRING_B) Lexicalement supérieur ou égal |
11 | LGT (STRING_A, STRING_B) Lexiquement supérieur à |
12 | LLE (STRING_A, STRING_B) Lexicalement inférieur ou égal |
13 | LLT (STRING_A, STRING_B) Lexiquement inférieur à |
14 | REPEAT (STRING, NCOPIES) Concaténation répétée |
15 | SCAN (STRING, SET [, BACK]) Il renvoie l'index du caractère le plus à gauche (le plus à droite si BACK est .TRUE.) De STRING qui appartient à SET, ou 0 si aucun n'appartient. |
16 | TRIM (STRING) Supprime les caractères vides de fin |
17 | VERIFY (STRING, SET [, BACK]) Vérifie le jeu de caractères dans une chaîne |
Fonctions Kind
Sr.Non | Description de la fonction |
---|---|
1 | KIND (X) Il renvoie la valeur du paramètre de type kind. |
2 | SELECTED_INT_KIND (R) Il renvoie le type de paramètre de type pour la plage d'exposants spécifiée. |
3 | SELECTED_REAL_KIND ([P, R]) Valeur du paramètre de type réel, précision et plage données |
Fonction logique
Sr.Non | Description de la fonction |
---|---|
1 | LOGICAL (L [, KIND]) Conversion entre objets de type logique avec différents paramètres de type kind |