X-Git-Url: https://ginac.de/CLN/cln.git//cln.git?a=blobdiff_plain;f=src%2Finteger%2Fbitwise%2Fcl_I_ldbxtest.cc;h=1bbc5719d3f0a34b9900cd5f1619208569e900d3;hb=665c18cd376d8d8c5a8eafb30681a3f9f46d4a99;hp=007a968bd37d3948877665d434052e7ca5cf26ae;hpb=353bb28da69bf2c10e74d11a8a2b1e4ea315cb0e;p=cln.git diff --git a/src/integer/bitwise/cl_I_ldbxtest.cc b/src/integer/bitwise/cl_I_ldbxtest.cc index 007a968..1bbc571 100644 --- a/src/integer/bitwise/cl_I_ldbxtest.cc +++ b/src/integer/bitwise/cl_I_ldbxtest.cc @@ -20,11 +20,11 @@ bool ldb_extract_test (const cl_I& x, uintC p, uintC q) var uintC len; var const uintD* LSDptr; I_to_NDS_nocopy(x, MSDptr=,len=,LSDptr=,true, { return false; } ); // NDS zu x bilden - // MSDptr erhöhen und len erniedrigen, so daß len = ceiling(q/intDsize) wird: + // MSDptr erhöhen und len erniedrigen, so daß len = ceiling(q/intDsize) wird: { var uintC qD = ceiling(q,intDsize); // ceiling(q/intDsize) // wegen q<=l ist qD = ceiling(q/intDsize) <= ceiling((l+1)/intDsize) = len, also - // paßt qD ebenso wie len in ein uintC. - MSDptr = MSDptr mspop (len - qD); // MSDptr um len-qD Digits erhöhen + // paßt qD ebenso wie len in ein uintC. + MSDptr = MSDptr mspop (len - qD); // MSDptr um len-qD Digits erhöhen len = qD; // len um len-qD erniedrigen } // LSDptr und len um floor(p/intDsize) erniedrigen: @@ -32,17 +32,17 @@ bool ldb_extract_test (const cl_I& x, uintC p, uintC q) LSDptr = LSDptr lspop pD; len -= pD; } - // Jetzt enthält MSDptr/len/LSDptr genau die maßgeblichen Digits. + // Jetzt enthält MSDptr/len/LSDptr genau die maßgeblichen Digits. if (len==0) return false; // len=0 -> keine Bits abzutesten q = ((q-1)%intDsize); // q := intDsize - (intDsize*ceiling(q/intDsize) - q) - 1 p = p%intDsize; // p := p - intDsize*floor(p/intDsize) // Jetzt ist 0 <= q < intDsize, 0 <= p < intDsize. - // Vom ersten Digit müssen die vorderen intDsize-1-q Bits unberücksichtigt bleiben. + // Vom ersten Digit müssen die vorderen intDsize-1-q Bits unberücksichtigt bleiben. // Ein AND 2^(q+1)-1 erreicht dies. - // Vom letzten Digit müssen die hinteren p Bits unberücksichtigt bleiben. + // Vom letzten Digit müssen die hinteren p Bits unberücksichtigt bleiben. // Ein AND -2^p erreicht dies. if (--len==0) - // 1 Digit maßgeblich, wird von beiden Seiten angeschnitten: + // 1 Digit maßgeblich, wird von beiden Seiten angeschnitten: // Ein AND 2^(q+1)-2^p erreicht dies. if (!(((uintD)(bitm(q+1)-bit(p)) & mspref(MSDptr,0)) == 0)) return true;