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