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 |