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 |