1 SUBROUTINE compact(PVALCO_COMPACT,KNELEM,KBITEXPONENT,KBITRADICAL,KPACK)
8 INTEGER(KIND=4) :: KNELEM
9 REAL(KIND=8) :: PVALCO_COMPACT(knelem)
10 REAL(KIND=8) :: ZCOEF,VALMIN,VALMAX
11 INTEGER(KIND=4) :: KBITEXPONENT,KBITRADICAL
12 INTEGER(KIND=8) :: KPACK(knelem)
14 REAL(KIND=4) :: ZTMPBUF
15 INTEGER(KIND=4) :: ITMPBUF
16 INTEGER(KIND=8) :: ICMPBUF,ILENGTH
17 INTEGER(KIND=4),
ALLOCATABLE :: IBUF(:)
18 INTEGER(KIND=4) :: IPROMA,IPTRTAB,IPTRBIT,IENDBIT,I4B0,I4B1
19 INTEGER(KIND=2) :: I2B0,I2B1,I2B2,I2B3
21 REAL(KIND=JPRB) :: ZHOOK_HANDLE
23 equivalence(ztmpbuf,itmpbuf)
35 valmin=minval(pvalco_compact(1:knelem))
38 valmax=maxval(pvalco_compact(1:knelem))
41 kpack(1)=ishft(icmpbuf,32)
42 kpack(1)=kpack(1)+i4b0
44 zcoef=(2**kbitradical-1)
47 IF (valmax-valmin<=0.0)
THEN 56 icmpbuf=(pvalco_compact(iproma)-valmin)/(valmax-valmin)*zcoef
60 IF (iptrbit+kbitradical<64)
THEN 61 kpack(iptrtab)=kpack(iptrtab)+ishft(ibits(icmpbuf,0,kbitradical),iptrbit)
62 iptrbit=iptrbit+kbitradical
65 kpack(iptrtab)=kpack(iptrtab)+ishft(ibits(icmpbuf,0,iendbit),iptrbit)
68 kpack(iptrtab)=ibits(icmpbuf,iendbit,kbitradical-iendbit)
69 iptrbit=kbitradical-iendbit
subroutine compact(PVALCO_COMPACT, KNELEM, KBITEXPONENT, KBITRADICAL, KPACK)