aboutsummaryrefslogtreecommitdiffstats
path: root/src/fns.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fns.c')
-rw-r--r--src/fns.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/fns.c b/src/fns.c
index 17a869e1abc..8b25492eaeb 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -1468,19 +1468,17 @@ DEFUN ("nthcdr", Fnthcdr, Snthcdr, 2, 2, 0,
1468 /* Undo any error introduced when LARGE_NUM was substituted for 1468 /* Undo any error introduced when LARGE_NUM was substituted for
1469 N, by adding N - LARGE_NUM to NUM, using arithmetic modulo 1469 N, by adding N - LARGE_NUM to NUM, using arithmetic modulo
1470 CYCLE_LENGTH. */ 1470 CYCLE_LENGTH. */
1471 mpz_t z; /* N mod CYCLE_LENGTH. */ 1471 /* Add N mod CYCLE_LENGTH to NUM. */
1472 mpz_init (z);
1473 if (cycle_length <= ULONG_MAX) 1472 if (cycle_length <= ULONG_MAX)
1474 num += mpz_mod_ui (z, XBIGNUM (n)->value, cycle_length); 1473 num += mpz_mod_ui (mpz[0], XBIGNUM (n)->value, cycle_length);
1475 else 1474 else
1476 { 1475 {
1477 mpz_set_intmax (z, cycle_length); 1476 mpz_set_intmax (mpz[0], cycle_length);
1478 mpz_mod (z, XBIGNUM (n)->value, z); 1477 mpz_mod (mpz[0], XBIGNUM (n)->value, mpz[0]);
1479 intptr_t iz; 1478 intptr_t iz;
1480 mpz_export (&iz, NULL, -1, sizeof iz, 0, 0, z); 1479 mpz_export (&iz, NULL, -1, sizeof iz, 0, 0, mpz[0]);
1481 num += iz; 1480 num += iz;
1482 } 1481 }
1483 mpz_clear (z);
1484 num += cycle_length - large_num % cycle_length; 1482 num += cycle_length - large_num % cycle_length;
1485 } 1483 }
1486 num %= cycle_length; 1484 num %= cycle_length;