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.)
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.

CONCLUSÕES
Para os casos estudados:
1 - Mesclar códigos escritos em .FOR com códigos em .F90 não leva a grandes diferenças de custo computacional.
2 - Utilizar subrotinas (funções) em diferentes arquivos ou mescladas num mesmo arquivo não leva a grandes diferenças também.
3 - Efetuar as operações diretamente no código principal é mais rápido do que efetuar as operações em subrotinas (funções) à parte. No entanto, à medida que a complexidade das operações aumenta, o custo de chamada da função perde importância.
Portanto, para grandes problemas (com operações complexas) a clareza de código obtida utilizando subrotinas supera de longe o acréscimo de custo computacional.
4 - Para problemas mais complexos (conjunto de operações 3) todos os seis casos apresentaram praticamente o mesmo custo computacional.
-------------------- x ----------------------- x -----------------------