Fortran - Funciones intrínsecas
Las funciones intrínsecas son algunas funciones comunes e importantes que se proporcionan como parte del lenguaje Fortran. Ya hemos discutido algunas de estas funciones en los capítulos Arrays, Characters y String.
Las funciones intrínsecas se pueden clasificar como:
- Funciones numéricas
- Funciones Matemáticas
- Funciones de consulta numérica
- Funciones de manipulación de punto flotante
- Funciones de manipulación de bits
- Funciones de los personajes
- Funciones amables
- Funciones lógicas
- Funciones de matriz.
Hemos discutido las funciones de matriz en el capítulo Matrices. En la siguiente sección proporcionamos breves descripciones de todas estas funciones de otras categorías.
En la columna del nombre de la función,
- A representa cualquier tipo de variable numérica
- R representa una variable real o entera
- X e Y representan variables reales
- Z representa variable compleja
- W representa variable real o compleja
Funciones numéricas
No Señor | Función descriptiva |
---|---|
1 | ABS (A) Devuelve el valor absoluto de A |
2 | AIMAG (Z) Devuelve la parte imaginaria de un número complejo Z |
3 | AINT (A [, KIND]) Trunca la parte fraccionaria de A hacia cero, devolviendo un número entero real. |
4 | ANINT (A [, KIND]) Devuelve un valor real, el entero o número entero más cercano. |
5 | CEILING (A [, KIND]) Devuelve el menor número entero mayor o igual que el número A. |
6 | CMPLX (X [, Y, KIND]) Convierte las variables reales X e Y en un número complejo X + iY; si Y está ausente, se usa 0. |
7 | CONJG (Z) Devuelve el conjugado complejo de cualquier número complejo Z. |
8 | DBLE (A) Convierte A en un número real de doble precisión. |
9 | DIM (X, Y) Devuelve la diferencia positiva de X e Y. |
10 | DPROD (X, Y) Devuelve el producto real de doble precisión de X e Y. |
11 | FLOOR (A [, KIND]) Proporciona el mayor número entero menor o igual que el número A. |
12 | INT (A [, KIND]) Convierte un número (real o entero) en entero, truncando la parte real hacia cero. |
13 | MAX (A1, A2 [, A3,...]) Devuelve el valor máximo de los argumentos, todos del mismo tipo. |
14 | MIN (A1, A2 [, A3,...]) Devuelve el valor mínimo de los argumentos, todos del mismo tipo. |
15 | MOD (A, P) Devuelve el resto de A en la división por P, siendo ambos argumentos del mismo tipo (A-INT (A / P) * P) |
dieciséis | MODULO (A, P) Devuelve A módulo P: (A-FLOOR (A / P) * P) |
17 | NINT (A [, KIND]) Devuelve el entero más cercano del número A |
18 | REAL (A [, KIND]) Se convierte en tipo real |
19 | SIGN (A, B) Devuelve el valor absoluto de A multiplicado por el signo de P. Básicamente transfiere el signo de B a A. |
Ejemplo
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
Cuando compila y ejecuta el programa anterior, produce el siguiente resultado:
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)
Funciones Matemáticas
No Señor | Función descriptiva |
---|---|
1 | ACOS (X) Devuelve el coseno inverso en el rango (0, π), en radianes. |
2 | ASIN (X) Devuelve el seno inverso en el rango (-π / 2, π / 2), en radianes. |
3 | ATAN (X) Devuelve la tangente inversa en el rango (-π / 2, π / 2), en radianes. |
4 | ATAN2 (Y, X) Devuelve la tangente inversa en el rango (-π, π), en radianes. |
5 | COS (X) Devuelve el coseno del argumento en radianes. |
6 | COSH (X) Devuelve el coseno hiperbólico del argumento en radianes. |
7 | EXP (X) Devuelve el valor exponencial de X. |
8 | LOG (X) Devuelve el valor logarítmico natural de X. |
9 | LOG10 (X) Devuelve el valor logarítmico común (base 10) de X. |
10 | SIN (X) Devuelve el seno del argumento en radianes. |
11 | SINH (X) Devuelve el seno hiperbólico del argumento en radianes. |
12 | SQRT (X) Devuelve la raíz cuadrada de X. |
13 | TAN (X) Devuelve la tangente del argumento en radianes. |
14 | TANH (X) Devuelve la tangente hiperbólica del argumento en radianes. |
Ejemplo
El siguiente programa calcula la posición horizontal y vertical xey respectivamente de un proyectil después de un tiempo, t -
Donde, x = ut cos ay 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
Cuando compila y ejecuta el programa anterior, produce el siguiente resultado:
x: 141.421356 y: -1818.57861
Funciones de consulta numérica
Estas funciones funcionan con un determinado modelo de aritmética de números enteros y de coma flotante. Las funciones devuelven propiedades de números del mismo tipo que la variable X, que pueden ser reales y en algunos casos enteros.
No Señor | Función descriptiva |
---|---|
1 | DIGITS (X) Devuelve el número de dígitos significativos del modelo. |
2 | EPSILON (X) Devuelve el número que es casi insignificante en comparación con uno. En otras palabras, devuelve el valor más pequeño tal que REAL (1.0, KIND (X)) + EPSILON (X) no es igual a REAL (1.0, KIND (X)). |
3 | HUGE (X) Devuelve el mayor número del modelo. |
4 | MAXEXPONENT (X) Devuelve el máximo exponente del modelo. |
5 | MINEXPONENT (X) Devuelve el exponente mínimo del modelo. |
6 | PRECISION (X) Devuelve la precisión decimal |
7 | RADIX (X) Devuelve la base del modelo |
8 | RANGE (X) Devuelve el rango del exponente decimal |
9 | TINY (X) Devuelve el número positivo más pequeño del modelo. |
Funciones de manipulación de punto flotante
No Señor | Función descriptiva |
---|---|
1 | EXPONENT (X) Devuelve la parte del exponente de un número de modelo. |
2 | FRACTION (X) Devuelve la parte fraccionaria de un número. |
3 | NEAREST (X, S) Devuelve el número de procesador diferente más cercano en la dirección dada |
4 | RRSPACING (X) Devuelve el recíproco del espaciado relativo de los números de modelo cerca del número dado |
5 | SCALE (X, I) Multiplica un real por su base a una potencia entera. |
6 | SET_EXPONENT (X, I) devuelve la parte exponente de un número |
7 | SPACING (X) Devuelve el espaciado absoluto de los números de modelo cerca del número dado |
Funciones de manipulación de bits
No Señor | Función descriptiva |
---|---|
1 | BIT_SIZE (I) Devuelve el número de bits del modelo. |
2 | BTEST (I, POS) Prueba de bits |
3 | IAND (I, J) Y lógico |
4 | IBCLR (I, POS) Poco claro |
5 | IBITS (I, POS, LEN) Extracción de bits |
6 | IBSET (I, POS) Establecer bit |
7 | IEOR (I, J) Exclusivo o |
8 | IOR (I, J) O inclusivo |
9 | ISHFT (I, SHIFT) Cambio lógico |
10 | ISHFTC (I, SHIFT [, SIZE]) Desplazamiento circular |
11 | NOT (I) Complemento lógico |
Funciones de los personajes
No Señor | Función descriptiva |
---|---|
1 | ACHAR (I) Devuelve el carácter I en la secuencia de clasificación ASCII. |
2 | ADJUSTL (STRING) Ajusta la cuerda a la izquierda quitando los espacios en blanco iniciales e insertando espacios en blanco finales |
3 | ADJUSTR (STRING) Ajusta la cuerda a la derecha quitando los espacios en blanco finales e insertando los espacios en blanco iniciales. |
4 | CHAR (I [, KIND]) Devuelve el carácter I en la secuencia de clasificación específica de la máquina. |
5 | IACHAR (C) Devuelve la posición del carácter en la secuencia de clasificación ASCII. |
6 | ICHAR (C) Devuelve la posición del carácter en la secuencia de clasificación específica de la máquina (procesador). |
7 | INDEX (STRING, SUBSTRING [, BACK]) Devuelve la posición inicial más a la izquierda (más a la derecha si BACK es .TRUE.) De SUBSTRING dentro de STRING. |
8 | LEN (STRING) Devuelve la longitud de una cadena. |
9 | LEN_TRIM (STRING) Devuelve la longitud de una cadena sin dejar caracteres en blanco. |
10 | LGE (STRING_A, STRING_B) Lexically mayor o igual |
11 | LGT (STRING_A, STRING_B) Lexically mayor que |
12 | LLE (STRING_A, STRING_B) Léxicamente menor o igual |
13 | LLT (STRING_A, STRING_B) Lexically menor que |
14 | REPEAT (STRING, NCOPIES) Concatenación repetida |
15 | SCAN (STRING, SET [, BACK]) Devuelve el índice del carácter más a la izquierda (más a la derecha si BACK es .TRUE.) De STRING que pertenece a SET, o 0 si ninguno pertenece. |
dieciséis | TRIM (STRING) Elimina los caracteres en blanco finales |
17 | VERIFY (STRING, SET [, BACK]) Verifica el conjunto de caracteres en una cadena |
Funciones amables
No Señor | Función descriptiva |
---|---|
1 | KIND (X) Devuelve el valor del parámetro de tipo de tipo. |
2 | SELECTED_INT_KIND (R) Devuelve un tipo de parámetro de tipo para un rango de exponente especificado. |
3 | SELECTED_REAL_KIND ([P, R]) Valor de parámetro de tipo real, precisión y rango dados |
Función lógica
No Señor | Función descriptiva |
---|---|
1 | LOGICAL (L [, KIND]) Convertir entre objetos de tipo lógico con diferentes parámetros de tipo |