SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/LIB/XRD38/grib_mf/decfp_mf.F
Go to the documentation of this file.
00001       SUBROUTINE DECFP_MF (PFVAL,KEXP,KMANT)
00002       USE PARKIND1, ONLY : JPRB
00003       USE YOMHOOK , ONLY : LHOOK, DR_HOOK
00004 C
00005 C********************************************************************
00006 C*
00007 C*    NAME      : DECFP
00008 C*
00009 C*    FUNCTION  : DECODE GRIB CODE REPRESENTATION TO
00010 C*                FLOATING POINT NUMBER.
00011 C*
00012 C*    INPUT     : KEXP  - 8 BIT SIGNED EXPONENT
00013 C*                KMANT - 24 BIT MANTISSA
00014 C*
00015 C*    OUTPUT    : PFVAL - FLOATING POINT NUMBER
00016 C*                KEXP  - UNCHANGED
00017 C*                KMANT - UNCHANGED
00018 C*
00019 C*    JOHN HENNESSY , ECMWF , 15TH APRIL 1985
00020 C*
00021 C*    Modified by Jean CLOCHARD, February 1990, to comply with "DOCTOR",
00022 C*    and to get a more straight-forward code.
00023 C*
00024 C********************************************************************
00025 C
00026 #include "precision.h"
00027 C
00028       INTEGER KEXP, KMANT
00029 C
00030       REAL (KIND=JPDBLR) PFVAL
00031 C
00032       REAL (KIND=JPDBLR) ZC16
00033 C
00034       SAVE ZC16
00035       DATA ZC16 / 16. /
00036 C
00037 C      Direct decoding, depending on sign bit, included in KEXP.
00038 C
00039 C
00040       REAL(KIND=JPRB) :: ZHOOK_HANDLE
00041       IF (LHOOK) CALL DR_HOOK('DECFP_MF',0,ZHOOK_HANDLE)
00042       IF (KEXP.LT.128) THEN
00043         PFVAL = KMANT*(ZC16**(KEXP-70))
00044       ELSE
00045         PFVAL = -KMANT*(ZC16**(KEXP-198))
00046       ENDIF
00047 C
00048 C
00049       IF (LHOOK) CALL DR_HOOK('DECFP_MF',1,ZHOOK_HANDLE)
00050       END