matlab代码的BBP算法,中间出现最大数为base*bits

function v=huvent(bits)

% for k=0:t

% a=4096.^(t-k).*(2/(8*k + 1) + 1/(6*k + 1) + 2^-1/(12*k + 3) + 2^-8/(6*k + 5) - 2^-5/(6*k + 3) - 2^-4/(12*k + 7) - 2^-5/(8*k + 5) - 2^-8/(12*k + 11));

% a0=a0+a;

% end

M3= 12; b3=[8,1,2;6,1,1;12*2^1,3*2^1,1;6*2^8,5*2^8,1;6*2^5,3*2^5,-1;12*2^4,7*2^4,-1;8*2^5,5*2^5,-1;12*2^8,11*2^8,-1];

%b3 = [24 2 8; 24 3 6; 24 4 -8; 24 6 -3; 24 8 -3; 48 20 1; 192 96 -1; 768 480 -3; 384 256 -3; 384 288 -1; 768 640 -1];

M1 = 4; b1 = [8 1 4; 8 4 -2; 8 5 -1; 8 6 -1];

M5 = 30;b5=[60,3, +6;60*2,5*2, +5;60,6, +3;60*2^2,9*2^2, +3;60*2^3,10*2^3,+5;60*2^6,15*2^6,-1;60*2^6,18*2^6,-3;60*2^8,21*2^8,-3;60*2^11,25*2^11,-5;60*2^11,27*2^11,+3;60*2^13,30*2^13,+1;60*2^14,33*2^14,+3;60*2^16,35*2^16,-5;60*2^17,39*2^17,-3;60*2^18,42*2^18,-3;60*2^21,45*2^21,-1;60*2^23,50*2^23,+5;60*2^23,51*2^23,+3;60*2^24,54*2^24,+3;60*2^26,55*2^26,+5;60*2^26,57*2^26, +3];

M2 = 8; b2 = [16 1 4; 16 4 -2; 16 5 -1; 16 6 -1; 64 36 1; 128 96 -1; 256 208 -1; 256 224 -1];

M4 = 16; b4 = [32 1 4; 32 4 -2; 32 5 -1; 32 6 -1; 128 36 1; 256 96 -1; 512 208 -1; 512 224 -1; 2048 1088 1; 4096 2560 -1; 8192 5376 -1; 8192 5632 -1; 32768 25600 1; 65536 57344 -1; 131072 118784 -1; 131072 122880 -1];

M6 = 10; b6=[8 2 -1;256 192 -1;10 1 4;10 3 -1;160 80 -1;160 112 -1;640 576 1] ;

[bbp(bits, M1, b1) ' ' bbp(bits, M2, b2) ' ' bbp(bits, M3, b3) ' ' bbp(bits, M4, b4) ' ' bbp(bits, M5, b5) ' ' bbp(bits, M6, b6)]

end

function r = expm(p, ak,n)

base=bitshift(1,n);

if ak==1,r=0;return;end

if p<2,r=mod(base^p, ak);return;end

p1 = p;

i = 0;

while p1 > 0

buf(i+1) = mod(p1,base);

p1 = bitshift(p1,-n);

i = i + 1;

end

r=1;

for j=i:-1:2

for m = 1:buf(j)*n

r = mod(r + r, ak);

end

for k = 1:n

p1 = r;

t = r;

r = 0;

while p1>0

r = mod(r + mod(t * mod(p1,base), ak), ak); %最大出现ak*base

t = mod(t * base, ak);

p1 = bitshift(p1,-n);

end

end

end

for m = 1:buf(1)*n

r = mod(r + r, ak);

end

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值