SURFEX v8.1
General documentation of Surfex
Surfex_Git2
src
LIB
XRD44
grib_mf
decfp_mf.F
Go to the documentation of this file.
1
SUBROUTINE
decfp_mf
(PFVAL,KEXP,KMANT)
2
USE
parkind1
, ONLY
:
jprb
3
USE
yomhook
, ONLY
:
lhook
,
dr_hook
4
USE
lfi_precision
5
!
6
!********************************************************************
7
!*
8
!* NAME : DECFP
9
!*
10
!* FUNCTION : DECODE GRIB CODE REPRESENTATION TO
11
!* FLOATING POINT NUMBER.
12
!*
13
!* INPUT : KEXP - 8 BIT SIGNED EXPONENT
14
!* KMANT - 24 BIT MANTISSA
15
!*
16
!* OUTPUT : PFVAL - FLOATING POINT NUMBER
17
!* KEXP - UNCHANGED
18
!* KMANT - UNCHANGED
19
!*
20
!* JOHN HENNESSY , ECMWF , 15TH APRIL 1985
21
!*
22
!* Modified by Jean CLOCHARD, February 1990, to comply with "DOCTOR",
23
!* and to get a more straight-forward code.
24
!*
25
!********************************************************************
26
!
27
IMPLICIT NONE
28
!
29
INTEGER (KIND=JPLIKM)
:: KEXP
30
INTEGER (KIND=JPLIKM)
:: KMANT
31
!
32
REAL (KIND=JPDBLD)
:: PFVAL
33
!
34
REAL (KIND=JPDBLD)
:: ZC16
35
!
36
SAVE
zc16
37
DATA
zc16 / 16.0_jpdbld /
38
!
39
! Direct decoding, depending on sign bit, included in KEXP.
40
!
41
!
42
REAL(KIND=JPRB)
:: ZHOOK_HANDLE
43
IF
(
lhook
)
CALL
dr_hook
(
'DECFP_MF'
,0,zhook_handle)
44
IF
(kexp.LT.128)
THEN
45
pfval = kmant*(zc16**(kexp-70))
46
ELSE
47
pfval = -kmant*(zc16**(kexp-198))
48
ENDIF
49
!
50
!
51
IF
(
lhook
)
CALL
dr_hook
(
'DECFP_MF'
,1,zhook_handle)
52
ENDSUBROUTINE
decfp_mf
yomhook::dr_hook
Definition:
yomhook.F90:20
parkind1::jprb
integer, parameter jprb
Definition:
parkind1.F90:32
yomhook::lhook
logical lhook
Definition:
yomhook.F90:15
parkind1
Definition:
parkind1.F90:1
decfp_mf
subroutine decfp_mf(PFVAL, KEXP, KMANT)
Definition:
decfp_mf.F:2
yomhook
Definition:
yomhook.F90:1
lfi_precision
Definition:
lfi_precision.F90:1
Generated on Tue Jan 16 2018 16:23:21 for SURFEX v8.1 by
1.8.13