X-Git-Url: https://ginac.de/CLN/cln.git//cln.git?a=blobdiff_plain;f=src%2Fbase%2Fdigitseq%2Fcl_2DS_recip.cc;h=a6b96c8d6466d061dd81fc3db2ed9a4f7772f84e;hb=22549ef70fee95faab1e9f2adaf710ba9e0bdabf;hp=8ae8621e36c626bcf67d1a9fdf5b525d69ce7f04;hpb=850abfde7f0d985ba01526c346bcd0d733562943;p=cln.git diff --git a/src/base/digitseq/cl_2DS_recip.cc b/src/base/digitseq/cl_2DS_recip.cc index 8ae8621..a6b96c8 100644 --- a/src/base/digitseq/cl_2DS_recip.cc +++ b/src/base/digitseq/cl_2DS_recip.cc @@ -31,7 +31,7 @@ void recip2adic (uintC len, const uintD* a_LSDptr, uintD* dest_LSDptr) // return 2*b-a*b^2 mod 2^(intDsize*2*n). CL_ALLOCA_STACK; var uintL k = 0; // number of Newton steps - var uintL n = len; + var uintC n = len; while (n >= recip2adic_threshold) { n = ceiling(n,2); k++; @@ -47,13 +47,13 @@ void recip2adic (uintC len, const uintD* a_LSDptr, uintD* dest_LSDptr) var uintD* b2_LSDptr; var uintD* prod_LSDptr; num_stack_alloc(len+1,,b2_LSDptr=); - num_stack_alloc(2*(uintL)len,,prod_LSDptr=); + num_stack_alloc(2*len,,prod_LSDptr=); do { // n = ceiling(len/2^k) // Compute n2 = ceiling(len/2^(k-1)), // then n = ceiling(n2/2). k--; - var uintL n2 = ((len-1)>>k)+1; // = 2*n or = 2*n-1 + var uintC n2 = ((len-1)>>k)+1; // = 2*n or = 2*n-1 // Set b := 2*b-a*b^2 mod 2^(intDsize*n2) cl_UDS_mul_square(dest_LSDptr,n,b2_LSDptr); // b^2 cl_UDS_mul(b2_LSDptr,n2,a_LSDptr,n2,prod_LSDptr); // a*b^2