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