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.

FunçãoDescriçãoTipo de ArgumentoTipo do do Retorno
ABS(X)Valor absoluto de xINTEGER ou REAL
COS(X)Coseno de x radianosREALREAL
EXP(X)Função exponencialREALREAL
INT(X)Parte inteira de xREALINTEGER
FLOOR(X)Piso de xREALINTEGER
FRACTION(X)Mantissa de xREALREAL
LOG(X)Logaritmo natural de xREALREAL
MAX(X1, … , Xn)Máximo de um conjuntoINTEGER or REALO mesmo do argumento
MIN(X1, … , Xn)Mínimo de um conjuntoINTEGER or REALO mesmo do argumento
MOD(X, Y)Resto da divisão inteira de x por yINTEGER or REALO mesmo do argumento
NINT(X)Função de arredondamentoREALINTEGER
REAL(X)Converter valor de z em tipo REALINTEGERREAL
SIN(X)Seno de x radianosREALREAL
SQRT(X)Raiz quadrada de xREALREAL
TAN(X)Tangente de x radianosREALREAL

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çãoDescriçã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

PROGRAM exemplos_de_funcoes
REAL :: x, y
INTEGER :: z
!———————————————————————–
! Valor absoluto de x
! Tipos de argumento(s) : INTEGER or REAL
! Tipo de retorno : O mesmo do argumento
print *, ‘Valor absoluto de x’
x = -50.58
print *,x
y = ABS(x)
print *, y
!———————————————————————–
! Coseno de x radianos
! Tipos de argumento(s) : REAL
! Tipo de retorno : REAL
print *, ‘Coseno de x radianos’
x = 70
print *,x
y = COS(X)
print *, y
!———————————————————————–
! Função exponencial
! Tipos de argumento(s) : REAL
! Tipo de retorno : REAL
print *, ‘Função exponencial’
x = 2
print *,x
y = EXP(X) ! x é o expoente da constante neperiano
print *, y
!———————————————————————–
! Parte inteira de x
! Tipos de argumento(s) : REAL
! Tipo de retorno : INTEGER
print *, ‘Parte inteira de x’
x = 2.718281828
print *,x
z = INT(x)
print *,z
!———————————————————————–
! Piso de x
! Tipos de argumento(s) : REAL
! Tipo de retorno : INTEGER
print *, ‘Piso de x’
x = 2.718281828
print *,x
z = FLOOR(x)
print *,z
!———————————————————————–
! Mantissa de x
! Tipos de argumento(s) : REAL
! Tipo de retorno : REAL
print *, ‘Mantissa de x’
x = 2.718281828
print *,x
y = FRACTION(x)
print *,y
!———————————————————————–
! Logaritmo natural de x
! Tipos de argumento(s) : REAL
! Tipo de retorno : REAL
print *, ‘Logaritmo natural de x’
x = 2.718281828
print *,x
y = LOG(x)
print *,y
!———————————————————————–
! Máximo de um conjunto
! Tipos de argumento(s) : INTEGER or REAL
! Tipo de retorno : O mesmo do argumento
print *, ‘Máximo de um conjunto’
print *, MAX(x, y)
! Obs.: tanto para MAX e MIN pode usar apenas um tipo de argumento
!———————————————————————–
! Mínimo de um conjunto
! Tipos de argumento(s) : INTEGER or REAL
! Tipo de retorno : O mesmo do argumento
print *, ‘Mínimo de um conjunto’
print *, MIN(x, y)
!———————————————————————–
! Resto da divisão inteira de x por y
! Tipos de argumento(s) : INTEGER or REAL
! Tipo de retorno : O mesmo do argumento
print *, ‘Resto da divisão inteira de x por y’
x = 21
print *, x
y = 8
print *, y
print *, MOD(X,Y) ! Não faz diferença se é maiúsculo ou minúsculo
!———————————————————————–
! Função de arredondamento
! Tipos de argumento(s) : REAL
! Tipo de retorno : INTEGER
print *, ‘Função de arredondamento’
x = 2.4 ! Tente x = 2.5
print *, x
z = NINT (x)
print *, z
!———————————————————————–
! Converter valor de z em tipo REAL
! Tipos de argumento(s) : INTEGER
! Tipo de retorno : REAL
print *, ‘Converter valor de z em tipo REAL’
z = 133
print *, z
x = REAL(z)
print *,x
!———————————————————————–
! Seno de x radianos
! Tipos de argumento(s) : REAL
! Tipo de retorno : REAL
print *, ‘Seno de x radianos’
x = 70
print *, x
y = SIN(x)
print *, y
!———————————————————————–
! Raiz quadrada de x
! Tipos de argumento(s) : REAL
! Tipo de retorno : REAl
print *, ‘Raiz quadrada de x’
x = 144
print *, x
y = SQRT (x)
print *, y
!———————————————————————–
! Tangente de x radianos
! Tipos de argumento(s) : REAL
! Tipo de retorno :
print *, ‘Tangente de x radianos’
x = 70
print *, x
y = TAN(x)
print *, y
!———————————————————————–
END

view rawexemplo_de_funcoes.f90 hosted with 

❤

 by GitHub


IDPFPG-1828

Crie um site ou blog no WordPress.com

%d blogueiros gostam disto: