File indexing completed on 2018-03-02 18:36:11 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
d7dd491794 Jean*0001 #include "CPP_EEOPTIONS.h"
0002
0003 subroutine MDS_BYTESWAPR8( n, arr )
0004
4d40368441 Jean*0005
d7dd491794 Jean*0006
4d40368441 Jean*0007
d7dd491794 Jean*0008
0009
0010
0011 implicit none
9c4e526255 Dimi*0012
0013 #ifdef FAST_BYTESWAP
0014
0015
0016 integer n
0017 integer(kind=8) arr(n),i64,i1
0018
0019
0020 integer i
0021
0022 i64(i1) = ishft(i1 .and. z'ff00000000000000',-56).or.
0023 & ishft(i1 .and. z'00ff000000000000',-40).or.
0024 & ishft(i1 .and. z'0000ff0000000000',-24).or.
0025 & ishft(i1 .and. z'000000ff00000000', -8).or.
0026 & ishft(i1 .and. z'00000000ff000000', 8).or.
0027 & ishft(i1 .and. z'0000000000ff0000', 24).or.
0028 & ishft(i1 .and. z'000000000000ff00', 40).or.
0029 & ishft(i1 .and. z'00000000000000ff', 56)
0030 do i=1,n
0031 arr(i) = i64(arr(i))
0032 enddo
0033
0034 #else /* FAST_BYTESWAP */
0035
d7dd491794 Jean*0036
0037 integer n
0038 character*(*) arr
9c4e526255 Dimi*0039
d7dd491794 Jean*0040
0041 integer i
0042 character*(1) cc
9c4e526255 Dimi*0043
d7dd491794 Jean*0044 do i=1,8*n,8
0045 cc=arr(i:i)
0046 arr(i:i)=arr(i+7:i+7)
0047 arr(i+7:i+7)=cc
0048 cc=arr(i+1:i+1)
0049 arr(i+1:i+1)=arr(i+6:i+6)
0050 arr(i+6:i+6)=cc
0051 cc=arr(i+2:i+2)
0052 arr(i+2:i+2)=arr(i+5:i+5)
0053 arr(i+5:i+5)=cc
0054 cc=arr(i+3:i+3)
0055 arr(i+3:i+3)=arr(i+4:i+4)
0056 arr(i+4:i+4)=cc
0057 enddo
9c4e526255 Dimi*0058
0059 #endif /* FAST_BYTESWAP */
0060
d7dd491794 Jean*0061 return
0062 end