392 |
/* both are bignums */ |
/* both are bignums */ |
393 |
if (SCM_EQ_P (numerator, denominator)) |
if (SCM_EQ_P (numerator, denominator)) |
394 |
return SCM_MAKINUM(1); |
return SCM_MAKINUM(1); |
395 |
int divisible_p = mpz_divisible_p (SCM_I_BIG_MPZ (numerator), |
if (mpz_divisible_p (SCM_I_BIG_MPZ (numerator), |
396 |
SCM_I_BIG_MPZ (denominator)); |
SCM_I_BIG_MPZ (denominator))) |
|
if (divisible_p) |
|
397 |
return scm_divide(numerator, denominator); |
return scm_divide(numerator, denominator); |
398 |
else return scm_double_cell (scm_tc16_fraction, (scm_t_bits)numerator, (scm_t_bits)denominator, 0); |
else |
399 |
|
return scm_double_cell (scm_tc16_fraction, |
400 |
|
(scm_t_bits)numerator, |
401 |
|
(scm_t_bits)denominator, 0); |
402 |
} |
} |
403 |
} |
} |
404 |
else SCM_WRONG_TYPE_ARG (1, numerator); |
else SCM_WRONG_TYPE_ARG (1, numerator); |