Nesse caso, para determinar se X é par, tem-se:
!PARA O CASO DE X REAL:
IF ( MOD( X , 2.D0) == 0 ) THEN ! -> X é PAR!
!PARA O CASO DE X INTEIRO:
IF ( MOD( X , 2) == 0 ) THEN ! -> X é PAR!
Caso contrário, X é ÍMPAR.
Blog para discussão sobre dúvidas e outros aspectos de programação, preferencialmente em Linguagem FORTRAN. (Autorizada a reprodução, desde que citada a fonte.)
| Reações: |
| Reações: |
OBSERVAÇÃO: Primeiro de tudo, não esqueça que o acoplamento deste cronômetro ao seu código deixará sua aplicação um pouco mais lenta!
ACOPLANDO O CRONÔMETRO À SUA APLICAÇÃO
O primeiro passo é baixar o código fonte (um projeto completo utilizando o cronômetro, mostrado na figura acima), para isto basta clicar aqui e baixar o arquivo .zip hospedado no rapidshare!
No exemplo, o cronômetro foi inserido em um projeto FORTRAN CONSOLE APPLICATION. Tudo foi desenvolvido em Compaq Visual Fortran 6.6.
Após baixar os arquivos, copie ATUALIZA_CRON.F90, CRONOMETRO_DIALOG.rc e RESOURCE.fd para a pasta do seu projeto.
(Procedimento verificado apenas em CVF 6.6)
Com seu projeto aberto no CVF, clique no menu Project, vá em Add to Project e clique em Files. Adicione os arquivos CRONOMETRO_DIALOG.rc e RESOURCE.fd.
Na subrotina que você quer cronometrar, insira as definições para utilizar o cronômetro:
!******************************************************************
! DEFINIÇÕES PARA UTILIZAR O CRONÔMETRO
USE DFPORT !PARA USAR A FUNÇÃO TIMEF
USE DFLOGM
INCLUDE 'RESOURCE.FD'
TYPE (DIALOG) DLG
LOGICAL RETLOG
REAL*8 :: TEMPO
!******************************************************************
E logo após a definição das variáveis de sua subrotina, insira o código para inicializar o cronômetro:
!*******************************************************************
!INICIALIZANDO O CRONÔMETRO
RETLOG = DLGINIT(101,DLG) !INICIALIZANDO A CAIXA DE DIÁLOGO
IRET = DLGMODELESS(DLG) !IMPRIMINDO A CAIXA NA TELA (NÃO MODAL)
TEMPO = TIMEF() !INICIALIZANDO A CONTAGEM DO TEMPO
!*******************************************************************
PRONTO!!!
Agora é só chamar a subrotina que atualiza o tempo dentro dos principais loops da subrotina a ser cronometrada:
CALL ATUALIZACRON(DLG) !ATUALIZAR TEMPO MOSTRADO NA CAIXA DE DIÁLOGO
O CRONÔMETRO PODE SER MODIFICADO E MELHORADO CONFORME SUAS NECESSIDADES.
Para modificá-lo, vá em ResourceView e clique duas vezes em IDD_DIALOGTEMPO. A aba ResourceView fica imediatamente abaixo de onde aparecem os nomes dos arquivos do seu projeto.
Os resultados estão resumidos no seguinte gráfico:
Para os dois casos estudados, MATMUL foi cerca de 5 vezes mais lento que DGEMM.
CONCLUSÕES
Caso você tenha acesso à biblioteca IMSL, vale a pena gastar um pouco de tempo substituindo a função MATMUL pela DGEMM em todos os seus programas que utilizem multiplicação de matrizes.
Caso não tenha acesso a esta biblioteca, vale a pena ver se há outra subrotina que você possa utilizar no lugar da MATMUL e fazer uma breve comparação entre elas.
| Reações: |