Divisão de Inteiros#
Fortran faz distinção entre aritmética de ponto flutuante e inteiro. É importante notar que a divisão para inteiros é sempre usando aritmética de inteiros. Além disso, enquanto Fortran usa o padrão de ordem de operações (p.ex. multiplicação e divisão precede adição e subtração na ausência de parênteses), operações com a mesma precedência são avaliados da esquerda para a direita. Veja o seguinte exemplo para divisão de inteiros de um número impar:
integer :: n
n = 3
print *, n / 2 ! prints 1
print *, n*(n + 1)/2 ! prints 6
print *, n/2*(n + 1) ! prints 4 (left-to-right evaluation order)
n = -3
print *, n / 2 ! prints -1
Seja cuidadoso ao escolher quando quer utilizar a aritmética de inteiro nesse contexto. Se ao invés você quiser usar aritmética de ponteiro flutuante, garante que você tenha convertido os reais antes de usar o operador de divisão, ou separe os inteiros com uma multiplicação por 1.0_dp
:
integer :: n
n = 3
print *, real(n, dp) / 2 ! prints 1.5
print *, n * 1.0_dp / 2 ! prints 1.5
n = -3
print *, real(n, dp) / 2 ! prints -1.5
print *, n * 1.0_dp / 2 ! prints -1.5