X-Git-Url: https://ginac.de/CLN/cln.git//cln.git?a=blobdiff_plain;f=src%2Finteger%2Fbitwise%2Fcl_I_mkfx.cc;h=9df0edfaca85af2f9851933bba2bc00630a01501;hb=c84c6db5d56829d69083c819688a973867694a2a;hp=dd6b4239afc626d7f67742e30cf3d5fa2d66b366;hpb=976a13157ca8d274a5bcbdac662cac538091e92c;p=cln.git diff --git a/src/integer/bitwise/cl_I_mkfx.cc b/src/integer/bitwise/cl_I_mkfx.cc index dd6b423..9df0edf 100644 --- a/src/integer/bitwise/cl_I_mkfx.cc +++ b/src/integer/bitwise/cl_I_mkfx.cc @@ -15,7 +15,7 @@ namespace cln { -const cl_I mkf_extract (const cl_I& x, uintL p, uintL q) +const cl_I mkf_extract (const cl_I& x, uintC p, uintC q) { CL_ALLOCA_STACK; var const uintD* MSDptr; @@ -23,20 +23,20 @@ const cl_I mkf_extract (const cl_I& x, uintL p, uintL q) var const uintD* LSDptr; I_to_NDS_nocopy(x, MSDptr=,len=,LSDptr=,cl_true, { return 0; } ); // NDS zu x bilden // MSDptr erhöhen und len erniedrigen, so daß len = ceiling(q/intDsize) wird: - { var uintL qD = ceiling(q,intDsize); // ceiling(q/intDsize) + { 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 ((uintL)len - qD); // MSDptr um len-qD Digits erhöhen + MSDptr = MSDptr mspop (len - qD); // MSDptr um len-qD Digits erhöhen len = qD; // len um len-qD erniedrigen } // Platz (len Digits) für die neue UDS bereitstellen: var uintD* newMSDptr; - num_stack_alloc_1((uintL)len, newMSDptr = ,); // Platz belegen - {var uintL pD = p/intDsize; // floor(p/intDsize), paßt in ein uintC + num_stack_alloc_1(len, newMSDptr = ,); // Platz belegen + {var uintC pD = p/intDsize; // floor(p/intDsize), paßt in ein uintC // Kopiere len-pD Digits aus der DS zu x heraus: - var uintD* midptr = copy_loop_msp(MSDptr,newMSDptr,len-(uintC)pD); + var uintD* midptr = copy_loop_msp(MSDptr,newMSDptr,len-pD); // Lösche p-intDsize*floor(p/intDsize) Bits im Digit unterhalb von midptr: - {var uintL p_D = p%intDsize; + {var uintC p_D = p%intDsize; if (!(p_D==0)) { lspref(midptr,0) &= minus_bit(p_D); } } // Lösche pD Digits darüber: