Bitslicing
在計算之前獲取取冪結果的位長
我在這樣的環境中工作,
pow(a,b)
通過模冪 (modexp(a,b,m)
) 計算比直接求冪更便宜。為此,我需要最小模值,以便函式僅返回函式呼叫的求冪部分。是否存在一種有效的算法來計算 的位長/最高位集
a^b
,我們只知道這些值(結果尚未計算)?或者如果不是,一種盡可能接近它的算法?在這種情況下,唯一的要求是近似值 >= 實際位長。
如果 $ a\in\mathbb N^* $ 有 $ \ell $ 位和 $ b\in\mathbb N^* $ , 然後 $ a^b $ 最多有 $ b,\ell $ 位。
更確切地說, $ a^b $ 正好有 $ \lfloor b\log_2(a)\rfloor+1 $ 位。
這一切都源於 $ \log_2(a^b)=b\log_2 a $ .