我想實現一個高效的庫,用於在大整數上按位運算。我已經寫了下面的函數,它覆蓋BTEST
:爲n字節整數實現按位運算的最佳方法
FUNCTION testb_i2b(n,i)
INTEGER(I8B), DIMENSION(0:), INTENT(IN) :: n
INTEGER(I2B), INTENT(IN) :: i
INTEGER(I2B) :: j
LOGICAL :: testb_i2b
j = ISHFT(i,-6)
IF (j .LE. UBOUND(n,1)) THEN
testb_i2b = BTEST(n(j),i-ISHFT(j,6))
ELSE
testb_i2b = .FALSE.
END IF
END FUNCTION testb_i2b
數組n
包含我的大整數的64*(SIZE(n)-1)
位。有沒有更有效的方法來獲得相同的功能?
是您的BTEST太慢?你的問題至少要快一點嗎?對於哪個編譯器? – 2013-03-12 14:15:13
是的,上面的實現成爲我的代碼中的一個瓶頸。我正在使用ifort。 – delete000 2013-03-12 14:23:39