Continued fraction/Arithmetic/G(matrix ng, continued fraction n1, continued fraction n2): Difference between revisions
Content added Content deleted
Line 1,371: | Line 1,371: | ||
size_t ix; |
size_t ix; |
||
size_t iy; |
size_t iy; |
||
bool |
bool xoverflow; |
||
bool yoverflow; |
|||
}; |
}; |
||
Line 1,428: | Line 1,429: | ||
for (int i = 0; i != 8; i += 1) |
for (int i = 0; i != 8; i += 1) |
||
mpz_init_set (tmp[i], env->ng[i]); |
mpz_init_set (tmp[i], env->ng[i]); |
||
mpz_t *term = (!env-> |
mpz_t *term = (!env->xoverflow) ? cf_ref (env->x, env->ix) : NULL; |
||
env->ix += 1; |
env->ix += 1; |
||
mpz_set (env->ng[ng8a2], tmp[ng8a12]); |
mpz_set (env->ng[ng8a2], tmp[ng8a12]); |
||
Line 1,442: | Line 1,443: | ||
if (ng8_too_big (env->ng)) |
if (ng8_too_big (env->ng)) |
||
{ |
{ |
||
env-> |
env->xoverflow = true; |
||
mpz_set (env->ng[ng8a12], tmp[ng8a12]); |
mpz_set (env->ng[ng8a12], tmp[ng8a12]); |
||
mpz_set (env->ng[ng8a1], tmp[ng8a1]); |
mpz_set (env->ng[ng8a1], tmp[ng8a1]); |
||
Line 1,457: | Line 1,458: | ||
for (int i = 0; i != 8; i += 1) |
for (int i = 0; i != 8; i += 1) |
||
mpz_init_set (tmp[i], env->ng[i]); |
mpz_init_set (tmp[i], env->ng[i]); |
||
mpz_t *term = (!env-> |
mpz_t *term = (!env->yoverflow) ? cf_ref (env->y, env->iy) : NULL; |
||
env->iy += 1; |
env->iy += 1; |
||
mpz_set (env->ng[ng8a1], tmp[ng8a12]); |
mpz_set (env->ng[ng8a1], tmp[ng8a12]); |
||
Line 1,471: | Line 1,472: | ||
if (ng8_too_big (env->ng)) |
if (ng8_too_big (env->ng)) |
||
{ |
{ |
||
env-> |
env->yoverflow = true; |
||
mpz_set (env->ng[ng8a12], tmp[ng8a12]); |
mpz_set (env->ng[ng8a12], tmp[ng8a12]); |
||
mpz_set (env->ng[ng8a2], tmp[ng8a2]); |
mpz_set (env->ng[ng8a2], tmp[ng8a2]); |
||
Line 1,577: | Line 1,578: | ||
env->ix = 0; |
env->ix = 0; |
||
env->iy = 0; |
env->iy = 0; |
||
env-> |
env->xoverflow = false; |
||
env->yoverflow = false; |
|||
return make_cf (return_ng8_term, env); |
return make_cf (return_ng8_term, env); |
||
} |
} |