unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* [PATCH] A couple of small patches for 2.0
@ 2011-02-14 22:16 Mark H Weaver
  2011-02-15  8:21 ` Andy Wingo
  0 siblings, 1 reply; 2+ messages in thread
From: Mark H Weaver @ 2011-02-14 22:16 UTC (permalink / raw)
  To: guile-devel

[-- Attachment #1: Type: text/plain, Size: 47 bytes --]

A couple of small patches for 2.0.

    Mark



[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Fix minor errors in docs of division operators --]
[-- Type: text/x-diff, Size: 1569 bytes --]

From ea77cc411665cc64de27896ca45c920e001f7820 Mon Sep 17 00:00:00 2001
From: Mark H Weaver <mhw@netris.org>
Date: Sun, 13 Feb 2011 16:28:34 -0500
Subject: [PATCH 1/2] Fix minor errors in docs of division operators

* doc/ref/api-data.texi (Arithmetic): The R5RS `quotient', `remainder',
  and `modulo' operators are exact-integer-only operators.  `modulo' is
  equivalent to `floor-remainder', not `floor-quotient'.
---
 doc/ref/api-data.texi |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/doc/ref/api-data.texi b/doc/ref/api-data.texi
index a8cce24..5bef926 100644
--- a/doc/ref/api-data.texi
+++ b/doc/ref/api-data.texi
@@ -1308,7 +1308,7 @@ both @var{q} and @var{r}, and is more efficient than computing each
 separately.  Note that @var{r}, if non-zero, will have the same sign
 as @var{y}.
 
-When @var{x} and @var{y} are integers, @code{floor-quotient} is
+When @var{x} and @var{y} are exact integers, @code{floor-remainder} is
 equivalent to the R5RS integer-only operator @code{modulo}.
 
 @lisp
@@ -1365,8 +1365,9 @@ both @var{q} and @var{r}, and is more efficient than computing each
 separately.  Note that @var{r}, if non-zero, will have the same sign
 as @var{x}.
 
-When @var{x} and @var{y} are integers, these operators are equivalent to
-the R5RS integer-only operators @code{quotient} and @code{remainder}.
+When @var{x} and @var{y} are exact integers, these operators are
+equivalent to the R5RS integer-only operators @code{quotient} and
+@code{remainder}.
 
 @lisp
 (truncate-quotient 123 10) @result{} 12
-- 
1.7.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: Use trunc instead of scm_c_truncate --]
[-- Type: text/x-diff, Size: 1981 bytes --]

From 9149bf3cdccf6b281ffd416dacb254a6930fdc3a Mon Sep 17 00:00:00 2001
From: Mark H Weaver <mhw@netris.org>
Date: Mon, 14 Feb 2011 17:10:03 -0500
Subject: [PATCH 2/2] Use trunc instead of scm_c_truncate

* libguile/numbers.c (scm_c_truncate, scm_truncate_number,
  scm_i_inexact_truncate_quotient, scm_i_inexact_truncate_remainder):
  Use trunc directly, now that we have its gnulib module.
---
 libguile/numbers.c |   13 +++----------
 1 files changed, 3 insertions(+), 10 deletions(-)

diff --git a/libguile/numbers.c b/libguile/numbers.c
index 81d689d..59d8e74 100644
--- a/libguile/numbers.c
+++ b/libguile/numbers.c
@@ -2139,7 +2139,7 @@ scm_i_inexact_truncate_quotient (double x, double y)
   if (SCM_UNLIKELY (y == 0))
     scm_num_overflow (s_scm_truncate_quotient);  /* or return a NaN? */
   else
-    return scm_from_double (scm_c_truncate (x / y));
+    return scm_from_double (trunc (x / y));
 }
 
 static SCM
@@ -2274,7 +2274,7 @@ scm_i_inexact_truncate_remainder (double x, double y)
   if (SCM_UNLIKELY (y == 0))
     scm_num_overflow (s_scm_truncate_remainder);  /* or return a NaN? */
   else
-    return scm_from_double (x - y * scm_c_truncate (x / y));
+    return scm_from_double (x - y * trunc (x / y));
 }
 
 static SCM
@@ -8173,14 +8173,7 @@ static SCM scm_divide2real (SCM x, SCM y)
 double
 scm_c_truncate (double x)
 {
-#if HAVE_TRUNC
   return trunc (x);
-#else
-  if (x < 0.0)
-    return ceil (x);
-  else
-    return floor (x);
-#endif
 }
 
 /* scm_c_round is done using floor(x+0.5) to round to nearest and with
@@ -8233,7 +8226,7 @@ SCM_PRIMITIVE_GENERIC (scm_truncate_number, "truncate", 1, 0, 0,
   if (SCM_I_INUMP (x) || SCM_BIGP (x))
     return x;
   else if (SCM_REALP (x))
-    return scm_from_double (scm_c_truncate (SCM_REAL_VALUE (x)));
+    return scm_from_double (trunc (SCM_REAL_VALUE (x)));
   else if (SCM_FRACTIONP (x))
     return scm_truncate_quotient (SCM_FRACTION_NUMERATOR (x),
 				  SCM_FRACTION_DENOMINATOR (x));
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-02-15  8:21 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-14 22:16 [PATCH] A couple of small patches for 2.0 Mark H Weaver
2011-02-15  8:21 ` Andy Wingo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).