/[guile]/guile/guile-core/libguile/numbers.c
ViewVC logotype

Diff of /guile/guile-core/libguile/numbers.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.209 by mvo, Wed Nov 19 02:38:37 2003 UTC revision 1.210 by mvo, Wed Nov 19 03:50:26 2003 UTC
# Line 2819  scm_i_fraction_equalp (SCM x, SCM y) Line 2819  scm_i_fraction_equalp (SCM x, SCM y)
2819  {  {
2820    scm_i_fraction_reduce (x);    scm_i_fraction_reduce (x);
2821    scm_i_fraction_reduce (y);    scm_i_fraction_reduce (y);
2822    return SCM_BOOL (scm_equal_p (SCM_FRACTION_NUMERATOR (x), SCM_FRACTION_NUMERATOR (y))    if (SCM_FALSEP (scm_equal_p (SCM_FRACTION_NUMERATOR (x),
2823                     && scm_equal_p (SCM_FRACTION_DENOMINATOR (x), SCM_FRACTION_DENOMINATOR (y)));                                 SCM_FRACTION_NUMERATOR (y)))
2824          || SCM_FALSEP (scm_equal_p (SCM_FRACTION_DENOMINATOR (x),
2825                                      SCM_FRACTION_DENOMINATOR (y))))
2826        return SCM_BOOL_F;
2827      else
2828        return SCM_BOOL_T;
2829  }  }
2830    
2831    
# Line 5217  SCM_DEFINE (scm_rationalize, "rationaliz Line 5222  SCM_DEFINE (scm_rationalize, "rationaliz
5222                SCM_FALSEP                SCM_FALSEP
5223                (scm_gr_p (scm_abs (scm_difference (ex, scm_divide (a, b))),                (scm_gr_p (scm_abs (scm_difference (ex, scm_divide (a, b))),
5224                           err)))                      /* abs(x-a/b) <= err */                           err)))                      /* abs(x-a/b) <= err */
5225              return scm_sum (int_part, scm_divide (a, b)); /* int_part+a/b */              {
5226                  SCM res = scm_sum (int_part, scm_divide (a, b));
5227                  if (SCM_FALSEP (scm_exact_p (x))
5228                      || SCM_FALSEP (scm_exact_p (err)))
5229                    return scm_exact_to_inexact (res);
5230                  else
5231                    return res;
5232                }
5233            rx = scm_divide (scm_difference (rx, tt),  /* rx = 1/(rx - tt) */            rx = scm_divide (scm_difference (rx, tt),  /* rx = 1/(rx - tt) */
5234                             SCM_UNDEFINED);                             SCM_UNDEFINED);
5235            tt = scm_floor (rx);                       /* tt = floor (rx) */            tt = scm_floor (rx);                       /* tt = floor (rx) */

Legend:
Removed from v.1.209  
changed lines
  Added in v.1.210

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26