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 |