Precisão
DuplaComo mencionado, podemos programar em precisão dúpla.
Para isto, precisamos alterar um pouco o programa. Abaixo, mostramos a
versão de precisão dúpla do codigo acima.
10 20 30 40 50 60 70 123456789
123456789 123456789 123456789 123456789 123456789 123456789 12
| IMPLICIT REAL*8 (A-H,O-Z) | |
| READ(*,*) X | |
| EXACT=DEXP(X) | |
| S=1.D0 | |
| EPS=1.D-7 | |
| N=0 | |
| DSN=1.D0 | |
| 1 | N=N+1 |
| DSN=DSN*X/N | |
| S=S+DSN | |
| IF(DABS(DSN) .GT. EPS*DABS(S)) GO TO 1
ERRO=(S-EXACT)/EXACT |
|
| WRITE(*,100) X, EXACT, S,ERRO | |
| STOP | |
| 100 | FORMAT(F10.4,3E24.15) |
| END |
Na primeira linha, inserimos o comando de declaração, IMPLICIT REAL. Este comando informa a máquina para tratar todas as variáveis que começam letras de A até H e de O até Z como precisão dúpla, mantendo as variáveis inteiras que começam com letras de I até N. Se voce quer a precisão dúpla para inteiros, deve declarar também via
IMPLICIT INTEGER*4 (I,N)
que aumenta o limite de overflow para inteiros.
Quando voce quer especificar apenas algumas variáveis como precisão dúpla, pode usar o comando de declaração,
DOUBLE PRECISION nome1, nome2,.....
Os nomes das funções embutidas devem ser alterados, tipo
DEXP, DABS, etc.
Quando utlizar a declaração de precisão dúpla, deve tomar
bastante cuidado de todas as variáveis sejam tratadas coerentemente com
a declaraçao, em particular, quando comunicar com as funções e subroutinas
(ver subsessão para subroutinas).
Prof. Takeshi Kodama
Ultima Alteração: 04 de novembro de 1996