Funções Intrínsecas

O Fortran traz diversas funções nativas para o uso em aritmética, trigonometria, transformação de tipos e outras.

As funções intrínsecas (ou de biblioteca) listadas na Tabela 1 são as mais comumente usadas nos programas quotidianos. Uma lista mais completa pode ser encontrada na documentação do Fortran – FORTRAN 77 Language Reference – Chapter 6 Intrinsic Functions e Fortran 90.

Tabela 1 – Funções intrínsecas básicas.
Função Descrição Tipo de Argumento Tipo do do Retorno
ABS(X) Valor absoluto de x INTEGER ou REAL
COS(X) Coseno de x radianos REAL REAL
EXP(X) Função exponencial REAL REAL
INT(X) Parte inteira de x REAL INTEGER
FLOOR(X) Piso de x REAL INTEGER
FRACTION(X) Mantissa de x REAL REAL
LOG(X) Logaritmo natural de x REAL REAL
MAX(X1, … , Xn) Máximo de um conjunto INTEGER or REAL O mesmo do argumento
MIN(X1, … , Xn) Mínimo de um conjunto INTEGER or REAL O mesmo do argumento
MOD(X, Y) Resto da divisão inteira de x por y INTEGER or REAL O mesmo do argumento
NINT(X) Função de arredondamento REAL INTEGER
REAL(X) Converter valor de z em tipo REAL INTEGER REAL
SIN(X) Seno de x radianos REAL REAL
SQRT(X) Raiz quadrada de x REAL REAL
TAN(X) Tangente de x radianos REAL REAL

Em funções, as variáveis, constantes ou valores que estão entre os parenteses são chamados de argumentos.

Nota: O tipo do retorno da função não é explicito, ou seja o usuário deverá conhecer a documentação da função a fim de identifica-lo para poder fazer atribuições às variáveis de maneira correta.


Funções intrínsecas são algumas funções comuns e importantes que são fornecidos como parte da linguagem Fortran, podem ser classificados como:

  • Funções numéricas
  • Funções aritméticas
  • Funções de consulta numéricos
  • Funções para manipulação de ponto flutuante
  • Funções Bit Manipulation
  • Funções de caracteres
  • Funções de categoria (kind)
  • Funções lógicas
  • Funções para Array

Na coluna nome da função,

  • A representa qualquer tipo de variável numérica
  • R representa um número inteiro ou variável real
  • X e Y representam variáveis reais
  • Z representa variável complexa
  • W representa variável real ou complexo

Funções numéricas

Função Descrição da função
abs(A) Retorna o valor absoluto de um valor A
aimag(Z) Retorna a parte imaginária de um número complexo Z
aint(A [ , Kind ] ) É trunca parte fracionária de um a zero, retornando um número real, todo.
anint(A [, Kind ]) Retorna um valor real, o número inteiro mais próximo ou o número inteiro.
ceiling(A [, Kind ] ) Retorna o menor inteiro maior ou igual a número A.
cmplx(X [, Y, Kind ]) Converte as variáveis X e Y reais para um número complexo X + iy; se Y está ausente, é usado.
conjg(Z) Retorna o complexo conjugado de qualquer Z. número complexo
dble(A) Converte A para um número real de precisão dupla.
dim(X, Y) Retorna a diferença positiva de X e Y.
dprod(X, Y) Retorna o produto real precisão dupla de X e Y.
floor(A [, Kind ]) Ele fornece o maior inteiro menor ou igual a número A.
int(A [, KindA ]) Converte um número (real ou inteiro) para inteiro, truncando a parte real para zero.
max(A1, A2 [, A3, … ]) Retorna o valor máximo dos argumentos, todos os seres da mesma espécie.
min(A1, A2 [, A3, … ]) Retorna o valor mínimo dos argumentos, todos os seres da mesma espécie.
mod(A, P) Ele retorna o resto de uma sobre a divisão de A por P, ambos os argumentos que são do mesmo tipo (A-INT (A / P*P)
modulo(A, P) Retorna um modulo P: (A-FLOOR (A / P*P)
nint(A [, Kind ]) Retorna o número inteiro mais próximo da série A
real(A [, Kind ]) Converte para tipo real
sign(A, B) Basicamente ele transfere o sinal de 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ê compilar e executar o programa acima , 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 aritméticas

Descrição da função

  • ACOS(X) Devolve o co-seno inverso no intervalo (0, π), em radianos.
  • ASEN(X) Devolve o seno inversa no intervalo (-π / 2, π / 2), em radianos.
  • Atan(X) Devolve a tangente inversa no intervalo (-π / 2, π / 2), em radianos.
  • ATAN2(Y, X) Devolve a tangente inversa no intervalo (-π, π), em radianos.
  • COS(X) Retorna o co-seno do argumento em radianos.
  • COSH(X) Devolve o co-seno hiperbólico do argumento em radianos.
  • EXP(X) Retorna o valor exponencial de X.
  • LOG(X) Retorna o valor logarítmica natural de X.
  • LOG10(X) Devolve o logaritmo comum (base 10) valor de X.
  • SIN(X) Retorna o seno do argumento em radianos.
  • SINH(X) Devolve o seno hiperbólico do argumento em radianos.
  • SQRT(X) Retorna a raiz quadrada de X.
  • TAN(X) Retorna a tangente do argumento em radianos.
  • TANH(X) Devolve a tangente hiperbólica de argumento em radianos.

Exemplo

O seguinte programa calcula a posição horizontal e vertical x e y, respectivamente, de um projétil depois de um tempo, t:

em que, x = ut cos(a) e y = ut sen(a) - gt^2 / 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ê compilar e executar o programa acima , produzirá o seguinte resultado:

x: 141.421356  y: -1818.57861  

Funções de consulta numéricas

Estas funções funcionam com um determinado modelo de inteiro e aritmética de ponto flutuante. As funções de regresso propriedades dos números do mesmo tipo que a variável X, o qual pode ser real e, em alguns casos inteiro.

Descrição da função

  • digits(X) Retorna o número de dígitos significativos do modelo.
  • epsilon(X) 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 é igual a real(1.0, kind(X)).
  • huge(X) Devolve o maior número do modelo
  • maxexponent(X) Retorna o expoente máximo do modelo
  • minexponent(X) Retorna o expoente mínimo do modelo
  • precision(X) Retorna a precisão decimal
  • radix(X) Volta a base do modelo
  • range(X) Retorna o intervalo decimal do expoente
  • tiny(X) Retorna o menor número positivo do modelo

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

Descrição da função

  • exponent(X) Devolve a parte expoente de um número de modelo
  • fraction(X) Devolve a parte fracionária de um número
  • nearest(X, S) Devolve o número de processador diferente mais próximo em determinada direção
  • rrspacing(X) Devolve o recíproco do espaçamento relativo dos números de modelo perto de determinado número
  • scale(X, I) Multiplica um verdadeiro pela sua base a uma potência inteira
  • set_exponent(X, I) retorna a parte expoente de um número
  • spacing(X) Retorna o espaçamento absoluta de números de modelo perto de determinado número

Funções de manipulação de bits

Descrição da função

  • bit_size(I) Retorna o número de bits do modelo
  • btest(I, POS) testes Bit
  • iand(I, J) E lógico
  • ibclr(I, POS) Limpar bit
  • ibits(I, POS, LEN) extracção Bit
  • ibset(I, POS) Definir bit
  • ieor(I, J) OU exclusivo
  • ior(I, J) Inclusive OR
  • ishft(I, SHIFT) mudança Logical
  • ishftc(I, Shift [, size ]) mudança Circular
  • not(I) complemento lógico

Funções de caracteres

Descrição da função

  • ACHAR(I) Ele retorna o personagem Ith na seqüência de intercalação ASCII.
  • ADJUSTL(STRING) Ajusta cadeia deixado pela remoção de quaisquer espaços em branco iniciais e inserção de espaços em branco finais
  • ADJUSTR(STRING) Ajusta cadeia direita, removendo espaços em branco finais e inserção de espaços em branco iniciais.
  • CHAR(I [, Kind ]) Devolve o personagem Ith na especi fi sequência c agrupamento máquina
  • IACHAR(C) Devolve a posição do caractere na seqüência de intercalação ASCII.
  • ICHAR(C) Devolve a posição do carácter na máquina (processador) fi cações c seqüência de intercalação.
  • INDEX(String, SUBSTRING [, BACK ]) Devolve a posição mais à esquerda (mais à direita se volta é .TRUE.) A partir de SUBSTRING dentro STRING.
  • LEN(STRING) Devolve o comprimento de uma string.
  • LEN_TRIM(STRING) Devolve o comprimento de uma cadeia sem arrastando caracteres em branco.
  • LGE(STRING_A, STRING_B) lexically maior ou igual
  • LGT(STRING_A, STRING_B) lexically superior
  • LLE(STRING_A, STRING_B) lexically inferior ou igual
  • LLT(STRING_A, STRING_B) lexically menos de
  • REPEAT(String, nCopies) concatenação repetida
  • SCAN(String, SET [, BACK ]) Devolve o índice da mais à esquerda (mais à direita se o argumento back for .true.) Caractere de cadeia que pertencem ao conjunto, ou 0 se nenhum pertence.
  • TRIM(STRING) remove arrastando caracteres em branco
  • verify(String, SET [, BACK ]) Verifica o conjunto de caracteres em uma seqüência

Funções de tipo Kind functions

Descrição da função

  • kind(X) Retorna o valor do parâmetro tipo de espécie.
  • SELECTED_INT_KIND(R) Ele retorna tipo de parâmetro de tipo para especi fi gama ed expoente.
  • SELECTED_REAL_KIND([P, R ]) Valor tipo de parâmetro tipo real, dada a precisão e gama

Função lógica

Descrição da função

  • LÓGICO (L [, Kind ]) Converter entre objetos do tipo lógicas com diferentes parâmetros de tipo Kind

Programa de exemplo do use das funções


IDPFPG-1828