aboutsummaryrefslogtreecommitdiff
path: root/src/cm/custom.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cm/custom.c')
-rw-r--r--src/cm/custom.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/cm/custom.c b/src/cm/custom.c
index fd58364..da80329 100644
--- a/src/cm/custom.c
+++ b/src/cm/custom.c
@@ -74,14 +74,13 @@ static void custom_quadr_next(custom_quadr_t *quadr) {
if (equalii(quadr->i, imax) || quadr->nprimes == 0) {
quadr->nprimes = custom_add_primes(quadr->r, quadr->order, &(quadr->Sp),
quadr->nprimes);
+ imax = int2n(quadr->nprimes);
}
+ pari_sp btop = avma;
while (true) {
- imax = int2n(quadr->nprimes);
-
while (cmpii(quadr->i, imax) < 0) {
// debug_log("i %Pi", quadr->i);
- pari_sp btop = avma;
GEN pprod = gen_1;
bits_t *ibits = bits_from_i_len(quadr->i, quadr->nprimes);
for (size_t j = 0; j < quadr->nprimes; ++j) {
@@ -100,8 +99,7 @@ static void custom_quadr_next(custom_quadr_t *quadr) {
GEN x;
GEN y;
if (!cornacchia2(absp, quadr->order, &x, &y)) {
- avma = btop;
- quadr->i = addis(quadr->i, 1);
+ quadr->i = gerepileupto(btop, addis(quadr->i, 1));
// debug_log("Cornacchia fail");
continue;
}
@@ -124,14 +122,16 @@ static void custom_quadr_next(custom_quadr_t *quadr) {
return;
}
}
- avma = btop;
- quadr->i = addis(quadr->i, 1);
+ quadr->i = gerepileupto(btop, addis(quadr->i, 1));
}
quadr->r = addis(quadr->r, 1);
quadr->nprimes = custom_add_primes(quadr->r, quadr->order, &(quadr->Sp),
quadr->nprimes);
rlog2 = sqri(mulii(addis(quadr->r, 1), logN));
+ imax = int2n(quadr->nprimes);
+
+ btop = avma;
}
}