Fortran - Funzioni intrinseche

Le funzioni intrinseche sono alcune funzioni comuni e importanti fornite come parte del linguaggio Fortran. Abbiamo già discusso alcune di queste funzioni nei capitoli Array, Characters e String.

Le funzioni intrinseche possono essere classificate come:

  • Funzioni numeriche
  • Funzioni matematiche
  • Funzioni di ricerca numerica
  • Funzioni di manipolazione in virgola mobile
  • Funzioni di manipolazione dei bit
  • Funzioni dei caratteri
  • Funzioni gentili
  • Funzioni logiche
  • Funzioni array.

Abbiamo discusso le funzioni degli array nel capitolo Arrays. Nella sezione seguente forniamo brevi descrizioni di tutte queste funzioni da altre categorie.

Nella colonna del nome della funzione,

  • A rappresenta qualsiasi tipo di variabile numerica
  • R rappresenta una variabile reale o intera
  • X e Y rappresentano variabili reali
  • Z rappresenta la variabile complessa
  • W rappresenta una variabile reale o complessa

Funzioni numeriche

Suor n Descrizione della funzione
1

ABS (A)

Restituisce il valore assoluto di A

2

AIMAG (Z)

Restituisce la parte immaginaria di un numero complesso Z

3

AINT (A [, KIND])

Tronca la parte frazionaria di A verso zero, restituendo un numero intero reale.

4

ANINT (A [, KIND])

Restituisce un valore reale, il numero intero o intero più vicino.

5

CEILING (A [, KIND])

Restituisce il numero intero minimo maggiore o uguale al numero A.

6

CMPLX (X [, Y, KIND])

Converte le variabili reali X e Y in un numero complesso X + iY; se Y è assente, viene utilizzato 0.

7

CONJG (Z)

Restituisce il complesso coniugato di qualsiasi numero complesso Z.

8

DBLE (A)

Converte A in un numero reale a doppia precisione.

9

DIM (X, Y)

Restituisce la differenza positiva di X e Y.

10

DPROD (X, Y)

Restituisce il prodotto reale a doppia precisione di X e Y.

11

FLOOR (A [, KIND])

Fornisce il numero intero più grande minore o uguale al numero A.

12

INT (A [, KIND])

Converte un numero (reale o intero) in intero, troncando la parte reale verso lo zero.

13

MAX (A1, A2 [, A3,...])

Restituisce il valore massimo dagli argomenti, essendo tutti dello stesso tipo.

14

MIN (A1, A2 [, A3,...])

Restituisce il valore minimo dagli argomenti, essendo tutti dello stesso tipo.

15

MOD (A, P)

Restituisce il resto di A sulla divisione per P, essendo entrambi gli argomenti dello stesso tipo (A-INT (A / P) * P)

16

MODULO (A, P)

Restituisce A modulo P: (A-FLOOR (A / P) * P)

17

NINT (A [, KIND])

Restituisce il numero intero più vicino A

18

REAL (A [, KIND])

Converte in caratteri reali

19

SIGN (A, B)

Restituisce il valore assoluto di A moltiplicato per il segno di P. Fondamentalmente trasferisce il segno di B in A.

Esempio

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

Quando compili ed esegui il programma sopra, produce il seguente risultato:

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)

Funzioni matematiche

Suor n Descrizione della funzione
1

ACOS (X)

Restituisce il coseno inverso nell'intervallo (0, π), in radianti.

2

ASIN (X)

Restituisce il seno inverso nell'intervallo (-π / 2, π / 2), in radianti.

3

ATAN (X)

Restituisce la tangente inversa nell'intervallo (-π / 2, π / 2), in radianti.

4

ATAN2 (Y, X)

Restituisce la tangente inversa nell'intervallo (-π, π), in radianti.

5

COS (X)

Restituisce il coseno dell'argomento in radianti.

6

COSH (X)

Restituisce il coseno iperbolico dell'argomento in radianti.

7

EXP (X)

Restituisce il valore esponenziale di X.

8

LOG (X)

Restituisce il valore logaritmico naturale di X.

9

LOG10 (X)

Restituisce il valore logaritmico comune (base 10) di X.

10

SIN (X)

Restituisce il seno dell'argomento in radianti.

11

SINH (X)

Restituisce il seno iperbolico dell'argomento in radianti.

12

SQRT (X)

Restituisce la radice quadrata di X.

13

TAN (X)

Restituisce la tangente dell'argomento in radianti.

14

TANH (X)

Restituisce la tangente iperbolica dell'argomento in radianti.

Esempio

Il seguente programma calcola la posizione orizzontale e verticale xey rispettivamente di un proiettile dopo un tempo, t -

Dove, x = ut cos a e 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

Quando compili ed esegui il programma sopra, produce il seguente risultato:

x: 141.421356  y: -1818.57861

Funzioni di ricerca numerica

Queste funzioni funzionano con un certo modello di aritmetica di numeri interi e virgola mobile. Le funzioni restituiscono proprietà di numeri dello stesso tipo della variabile X, che può essere reale e in alcuni casi intera.

Suor n Descrizione della funzione
1

DIGITS (X)

Restituisce il numero di cifre significative del modello.

2

EPSILON (X)

Restituisce il numero che è quasi trascurabile rispetto a uno. In altre parole, restituisce il valore più piccolo tale che REAL (1.0, KIND (X)) + EPSILON (X) non è uguale a REAL (1.0, KIND (X)).

3

HUGE (X)

Restituisce il numero più alto del modello

4

MAXEXPONENT (X)

Restituisce l'esponente massimo del modello

5

MINEXPONENT (X)

Restituisce l'esponente minimo del modello

6

PRECISION (X)

Restituisce la precisione decimale

7

RADIX (X)

Restituisce la base del modello

8

RANGE (X)

Restituisce l'intervallo esponente decimale

9

TINY (X)

Restituisce il numero positivo più piccolo del modello

Funzioni di manipolazione in virgola mobile

Suor n Descrizione della funzione
1

EXPONENT (X)

Restituisce la parte esponente di un numero di modello

2

FRACTION (X)

Restituisce la parte frazionaria di un numero

3

NEAREST (X, S)

Restituisce il numero di processore diverso più vicino nella direzione data

4

RRSPACING (X)

Restituisce il reciproco della spaziatura relativa dei numeri di modello vicino al numero dato

5

SCALE (X, I)

Moltiplica un reale per la sua base in una potenza intera

6

SET_EXPONENT (X, I)

restituisce la parte esponente di un numero

7

SPACING (X)

Restituisce la spaziatura assoluta dei numeri di modello vicino al numero dato

Funzioni di manipolazione dei bit

Suor n Descrizione della funzione
1

BIT_SIZE (I)

Restituisce il numero di bit del modello

2

BTEST (I, POS)

Test di bit

3

IAND (I, J)

AND logico

4

IBCLR (I, POS)

Un po 'chiaro

5

IBITS (I, POS, LEN)

Estrazione bit

6

IBSET (I, POS)

Imposta bit

7

IEOR (I, J)

Esclusivo o

8

IOR (I, J)

Inclusivo OR

9

ISHFT (I, SHIFT)

Spostamento logico

10

ISHFTC (I, SHIFT [, SIZE])

Spostamento circolare

11

NOT (I)

Complemento logico

Funzioni dei caratteri

Suor n Descrizione della funzione
1

ACHAR (I)

Restituisce il carattere Ith nella sequenza di confronto ASCII.

2

ADJUSTL (STRING)

Regola la stringa sinistra rimuovendo eventuali spazi vuoti iniziali e inserendo spazi vuoti finali

3

ADJUSTR (STRING)

Regola la stringa a destra rimuovendo gli spazi vuoti finali e inserendo quelli iniziali.

4

CHAR (I [, KIND])

Restituisce il I ° carattere nella sequenza di fascicolazione speci fi ca della macchina

5

IACHAR (C)

Restituisce la posizione del carattere nella sequenza di confronto ASCII.

6

ICHAR (C)

Restituisce la posizione del carattere nella sequenza di fascicolazione speci fi ca della macchina (processore).

7

INDEX (STRING, SUBSTRING [, BACK])

Restituisce la posizione iniziale più a sinistra (più a destra se BACK è .TRUE.) Di SUBSTRING all'interno di STRING.

8

LEN (STRING)

Restituisce la lunghezza di una stringa.

9

LEN_TRIM (STRING)

Restituisce la lunghezza di una stringa senza lasciare caratteri vuoti.

10

LGE (STRING_A, STRING_B)

Lexically maggiore o uguale

11

LGT (STRING_A, STRING_B)

Lexically maggiore di

12

LLE (STRING_A, STRING_B)

Lessicamente inferiore o uguale

13

LLT (STRING_A, STRING_B)

Lessicamente inferiore a

14

REPEAT (STRING, NCOPIES)

Concatenazione ripetuta

15

SCAN (STRING, SET [, BACK])

Restituisce l'indice del carattere più a sinistra (più a destra se BACK è .TRUE.) Di STRING che appartiene a SET, o 0 se nessuno appartiene.

16

TRIM (STRING)

Rimuove i caratteri vuoti finali

17

VERIFY (STRING, SET [, BACK])

Verifica il set di caratteri in una stringa

Funzioni gentili

Suor n Descrizione della funzione
1

KIND (X)

Restituisce il valore del parametro di tipo kind.

2

SELECTED_INT_KIND (R)

Restituisce il tipo di parametro di tipo per l'intervallo di esponenti specificato.

3

SELECTED_REAL_KIND ([P, R])

Valore del parametro di tipo reale, precisione e intervallo dati

Funzione logica

Suor n Descrizione della funzione
1

LOGICAL (L [, KIND])

Converte tra oggetti di tipo logico con parametri di tipo diverso