大きな整数に対するビット単位の演算用の効率的なライブラリを実装したいと考えています。をオーバーライドする次の関数を作成しましたBTEST
。
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)
同じ機能を得るより効率的な方法はありますか?