Optimize and simplify fractions code.
authorMark H Weaver <mhw@netris.org>
Sun, 3 Mar 2013 09:34:50 +0000 (04:34 -0500)
committerMark H Weaver <mhw@netris.org>
Tue, 12 Mar 2013 19:39:16 +0000 (15:39 -0400)
commita285b18ca820e089e2e5d02f8ed07a1e341dffc3
treee824116e47ca02fae2f192e50aaf45bab4c552a0
parentd2df3950a905f7acab70633717beddfd90455b68
Optimize and simplify fractions code.

* libguile/numbers.c (scm_exact_integer_quotient,
  scm_i_make_ratio_already_reduced): New static functions.

  (scm_i_make_ratio): Rewrite in terms of
  'scm_i_make_ratio_already_reduced'.

  (scm_integer_expt): Optimize fraction case.

  (scm_abs, scm_magnitude, scm_difference, do_divide): Use
  'scm_i_make_ratio_already_reduced'.

* test-suite/tests/numbers.test (expt, integer-expt): Add tests.
libguile/numbers.c
test-suite/tests/numbers.test