Fortran - funções intrínsecas

As funções intrínsecas são algumas funções comuns e importantes fornecidas como parte da linguagem Fortran. Já discutimos algumas dessas funções nos capítulos Arrays, Characters e String.

As funções intrínsecas podem ser categorizadas como -

  • Funções Numéricas
  • Funções Matemáticas
  • Funções de pesquisa numérica
  • Funções de manipulação de ponto flutuante
  • Funções de manipulação de bits
  • Funções de personagem
  • Funções de tipo
  • Funções Lógicas
  • Funções de matriz.

Discutimos as funções de array no capítulo Arrays. Na seção a seguir, fornecemos breves descrições de todas essas funções de outras categorias.

Na coluna do nome da função,

  • A representa qualquer tipo de variável numérica
  • R representa uma variável real ou inteira
  • X e Y representam variáveis ​​reais
  • Z representa variável complexa
  • W representa variável real ou complexa

Funções Numéricas

Sr. Não Descrição da função
1

ABS (A)

Ele retorna o valor absoluto de A

2

AIMAG (Z)

Ele retorna a parte imaginária de um número complexo Z

3

AINT (A [, KIND])

Ele trunca a parte fracionária de A em direção a zero, retornando um número real inteiro.

4

ANINT (A [, KIND])

Ele retorna um valor real, o número inteiro ou inteiro mais próximo.

5

CEILING (A [, KIND])

Ele retorna o menor número inteiro maior ou igual ao número A.

6

CMPLX (X [, Y, KIND])

Ele converte as variáveis ​​reais X e Y em um número complexo X + iY; se Y estiver ausente, 0 é usado.

7

CONJG (Z)

Ele retorna o conjugado complexo de qualquer número complexo Z.

8

DBLE (A)

Ele converte A em um número real de precisão dupla.

9

DIM (X, Y)

Ele retorna a diferença positiva de X e Y.

10

DPROD (X, Y)

Ele retorna o produto real de precisão dupla de X e Y.

11

FLOOR (A [, KIND])

Ele fornece o maior número inteiro menor ou igual ao número A.

12

INT (A [, KIND])

Ele converte um número (real ou inteiro) em inteiro, truncando a parte real para zero.

13

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

Ele retorna o valor máximo dos argumentos, todos sendo do mesmo tipo.

14

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

Ele retorna o valor mínimo dos argumentos, todos sendo do mesmo tipo.

15

MOD (A, P)

Ele retorna o resto de A na divisão por P, ambos os argumentos sendo do mesmo tipo (A-INT (A / P) * P)

16

MODULO (A, P)

Ele retorna A módulo P: (A-FLOOR (A / P) * P)

17

NINT (A [, KIND])

Ele retorna o número inteiro mais próximo do número A

18

REAL (A [, KIND])

Converte em tipo real

19

SIGN (A, B)

Ele retorna o valor absoluto de A multiplicado pelo sinal de P. Basicamente, ele transfere o sinal de B para A.

Exemplo

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 você compila e executa o programa acima, ele produz o seguinte 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)

Funções Matemáticas

Sr. Não Descrição da função
1

ACOS (X)

Ele retorna o cosseno inverso no intervalo (0, π), em radianos.

2

ASIN (X)

Ele retorna o seno inverso no intervalo (-π / 2, π / 2), em radianos.

3

ATAN (X)

Ele retorna a tangente inversa no intervalo (-π / 2, π / 2), em radianos.

4

ATAN2 (Y, X)

Ele retorna a tangente inversa no intervalo (-π, π), em radianos.

5

COS (X)

Ele retorna o cosseno do argumento em radianos.

6

COSH (X)

Ele retorna o cosseno hiperbólico do argumento em radianos.

7

EXP (X)

Ele retorna o valor exponencial de X.

8

LOG (X)

Ele retorna o valor logarítmico natural de X.

9

LOG10 (X)

Ele retorna o valor logarítmico comum (base 10) de X.

10

SIN (X)

Ele retorna o seno de argumento em radianos.

11

SINH (X)

Ele retorna o seno hiperbólico do argumento em radianos.

12

SQRT (X)

Ele retorna a raiz quadrada de X.

13

TAN (X)

Ele retorna a tangente do argumento em radianos.

14

TANH (X)

Ele retorna a tangente hiperbólica do argumento em radianos.

Exemplo

O programa a seguir calcula a posição horizontal e vertical xey, respectivamente, de um projétil após um tempo, t -

Onde, x = ut cos a e y = ut sen 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 você compila e executa o programa acima, ele produz o seguinte resultado -

x: 141.421356  y: -1818.57861

Funções de pesquisa numérica

Essas funções funcionam com um certo modelo de aritmética de inteiros e de ponto flutuante. As funções retornam propriedades de números do mesmo tipo da variável X, que podem ser reais e, em alguns casos, inteiros.

Sr. Não Descrição da função
1

DIGITS (X)

Ele retorna o número de dígitos significativos do modelo.

2

EPSILON (X)

Ele retorna o número que é quase insignificante em comparação com um. Em outras palavras, ele retorna o menor valor tal que REAL (1.0, KIND (X)) + EPSILON (X) não seja igual a REAL (1.0, KIND (X)).

3

HUGE (X)

Ele retorna o maior número do modelo

4

MAXEXPONENT (X)

Ele retorna o expoente máximo do modelo

5

MINEXPONENT (X)

Ele retorna o expoente mínimo do modelo

6

PRECISION (X)

Devolve a precisão decimal

7

RADIX (X)

Ele retorna a base do modelo

8

RANGE (X)

Ele retorna o intervalo do expoente decimal

9

TINY (X)

Ele retorna o menor número positivo do modelo

Funções de manipulação de ponto flutuante

Sr. Não Descrição da função
1

EXPONENT (X)

Ele retorna a parte expoente de um número de modelo

2

FRACTION (X)

Ele retorna a parte fracionária de um número

3

NEAREST (X, S)

Ele retorna o número de processador diferente mais próximo em determinada direção

4

RRSPACING (X)

Ele retorna o recíproco do espaçamento relativo dos números do modelo próximo ao número fornecido

5

SCALE (X, I)

Ele multiplica um real por sua base em uma potência inteira

6

SET_EXPONENT (X, I)

retorna a parte expoente de um número

7

SPACING (X)

Ele retorna o espaçamento absoluto dos números do modelo próximo ao número fornecido

Funções de manipulação de bits

Sr. Não Descrição da função
1

BIT_SIZE (I)

Ele retorna o número de bits do modelo

2

BTEST (I, POS)

Teste de bits

3

IAND (I, J)

E lógico

4

IBCLR (I, POS)

Bit claro

5

IBITS (I, POS, LEN)

Extração de bits

6

IBSET (I, POS)

Definir bit

7

IEOR (I, J)

Exclusivo ou

8

IOR (I, J)

Inclusive OU

9

ISHFT (I, SHIFT)

Mudança lógica

10

ISHFTC (I, SHIFT [, SIZE])

Mudança circular

11

NOT (I)

Complemento lógico

Funções de personagem

Sr. Não Descrição da função
1

ACHAR (I)

Ele retorna o Iº caractere na seqüência de intercalação ASCII.

2

ADJUSTL (STRING)

Ele ajusta a string deixada removendo quaisquer espaços em branco à esquerda e inserindo espaços em branco à direita

3

ADJUSTR (STRING)

Ele ajusta a string corretamente, removendo os espaços em branco à direita e inserindo os espaços em branco à esquerda.

4

CHAR (I [, KIND])

Ele retorna o Iº caractere na sequência de intercalação específica da máquina

5

IACHAR (C)

Ele retorna a posição do caractere na seqüência de intercalação ASCII.

6

ICHAR (C)

Ele retorna a posição do caractere na seqüência de intercalação específica da máquina (processador).

7

INDEX (STRING, SUBSTRING [, BACK])

Ele retorna a posição inicial mais à esquerda (mais à direita se BACK for .TRUE.) De SUBSTRING em STRING.

8

LEN (STRING)

Ele retorna o comprimento de uma string.

9

LEN_TRIM (STRING)

Ele retorna o comprimento de uma string sem caracteres em branco à direita.

10

LGE (STRING_A, STRING_B)

Lexicamente maior ou igual

11

LGT (STRING_A, STRING_B)

Lexicamente maior que

12

LLE (STRING_A, STRING_B)

Lexicamente menor ou igual

13

LLT (STRING_A, STRING_B)

Lexicamente menos que

14

REPEAT (STRING, NCOPIES)

Concatenação repetida

15

SCAN (STRING, SET [, BACK])

Ele retorna o índice do caractere mais à esquerda (mais à direita se BACK for .TRUE.) De STRING que pertence a SET, ou 0 se nenhum pertence.

16

TRIM (STRING)

Remove os caracteres em branco à direita

17

VERIFY (STRING, SET [, BACK])

Verifica o conjunto de caracteres em uma string

Funções de tipo

Sr. Não Descrição da função
1

KIND (X)

Ele retorna o valor do parâmetro do tipo de tipo.

2

SELECTED_INT_KIND (R)

Ele retorna uma espécie de parâmetro de tipo para o intervalo de expoente especificado.

3

SELECTED_REAL_KIND ([P, R])

Valor de parâmetro de tipo de tipo real, dada a precisão e intervalo

Função Lógica

Sr. Não Descrição da função
1

LOGICAL (L [, KIND])

Converta entre objetos de tipo lógico com diferentes parâmetros de tipo de tipo