]> git.eshelyaron.com Git - emacs.git/commitdiff
Add log2 support and make log10 obsolete for consistency.
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 20 Jun 2013 14:15:42 +0000 (07:15 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 20 Jun 2013 14:15:42 +0000 (07:15 -0700)
* configure.ac (log2): Check for this function.
* doc/lispref/numbers.texi (Math Functions): Remove obsolete function log10.
* lisp/subr.el (log10): Move here from C code, and declare as obsolete.
All uses of (log10 X) replaced with (log X 10).
* src/floatfns.c (Flog) [HAVE_LOG2]: Use log2 if available and if the
base is 2; this is more accurate.
(Flog10): Move to Lisp (marked obsolete there).

12 files changed:
ChangeLog
configure.ac
doc/lispref/ChangeLog
doc/lispref/numbers.texi
etc/NEWS
lisp/ChangeLog
lisp/allout.el
lisp/calc/calc.el
lisp/subr.el
lisp/textmodes/rst.el
src/ChangeLog
src/floatfns.c

index f73ab05e910ea2f9abf8fde2cc50d23fd862838b..097a099b56fac2fcc63fd5d164c5734ce2f88775 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-06-20  RĂ¼diger Sonderfeld <ruediger@c-plusplus.de>
+
+       * configure.ac (log2): Check for this function.
+
 2013-06-19  Juanma Barranquero  <lekktu@gmail.com>
 
        * .bzrignore: Add GNU GLOBAL files.
index a16a52d43ad65fbad210c3e044eea9a3a2be307c..6e5c888b4378165f4b2cff9569b526b4158a6328 100644 (file)
@@ -3235,7 +3235,7 @@ gai_strerror mkstemp getline getdelim sync \
 difftime posix_memalign \
 getpwent endpwent getgrent endgrent \
 touchlock \
-cfmakeraw cfsetspeed copysign __executable_start)
+cfmakeraw cfsetspeed copysign __executable_start log2)
 
 ## Eric Backus <ericb@lsid.hp.com> says, HP-UX 9.x on HP 700 machines
 ## has a broken `rint' in some library versions including math library
index 65fc76d15f5c34670334d020f8c5dd7d66547075..c00d3392908f784779924a8b593ba3885b895f62 100644 (file)
@@ -1,3 +1,7 @@
+2013-06-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * numbers.texi (Math Functions): Remove obsolete function log10.
+
 2013-06-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * modes.texi (Mode Line Data, Properties in Mode): Advertise `keymap'
index eeebac6bf722dfaf06f8827916b4a467fb4d52f9..2b6f31b670b50a55437331d6837a10a56d6d0663 100644 (file)
@@ -1156,11 +1156,6 @@ This function returns the logarithm of @var{arg}, with base
 returns a NaN.
 @end defun
 
-@defun log10 arg
-This function returns the logarithm of @var{arg}, with base 10:
-@code{(log10 @var{x})} @equiv{} @code{(log @var{x} 10)}.
-@end defun
-
 @defun expt x y
 This function returns @var{x} raised to power @var{y}.  If both
 arguments are integers and @var{y} is positive, the result is an
index a2f96f4bf92ad3c62b0a253785ee4917b9f80286..475b4b26fdbf793d8300c8a2c2d5048cf427291f 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -469,6 +469,7 @@ file using `set-file-extended-attributes'.
 ** New macro with-eval-after-load.  Like eval-after-load, but better behaved.
 
 ** Obsoleted functions:
+*** `log10'
 *** `dont-compile'
 *** `lisp-complete-symbol'
 *** `field-complete'
index 0a9187435f1141f097f1b08015dd927604ac7e5c..1bfad0f9179909d322203d90c7eb0e64e01ee911 100644 (file)
@@ -1,3 +1,8 @@
+2013-06-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * subr.el (log10): Move here from C code, and declare as obsolete.
+       All uses of (log10 X) replaced with (log X 10).
+
 2013-06-20  Juanma Barranquero  <lekktu@gmail.com>
 
        * emacs-lisp/tabulated-list.el (tabulated-list-format): Fix typo.
index 1e4134b3ccffcbd694892d423cceb15a8a82a8f8..a0d61eb6f35e28b743453f01a6480e23b482b882 100644 (file)
@@ -5342,7 +5342,7 @@ Optional arg CONTEXT indicates interior levels to include."
                        (cons (make-string
                               (1+ (truncate (if (zerop (car flat-index))
                                                 1
-                                              (log10 (car flat-index)))))
+                                              (log (car flat-index) 10))))
                               ? )
                              result)))
            (setq flat-index (cdr flat-index)))
@@ -5382,7 +5382,7 @@ Optional arg CONTEXT indicates interior levels to include."
                        (cons (make-string
                               (1+ (truncate (if (zerop (car flat-index))
                                                 1
-                                              (log10 (car flat-index)))))
+                                              (log (car flat-index) 10))))
                               ? )
                              result)))
            (setq flat-index (cdr flat-index)))
index bd5c9089bccaefb8ce0c64ac2a62e812d2c9bca7..8a17ad7ce30ebae7b59c9d2e9efdcdf9c5ce91e7 100644 (file)
@@ -2485,7 +2485,7 @@ the United States."
 
 
 (defconst math-bignum-digit-length
-  (truncate (/ (log10 (/ most-positive-fixnum 2)) 2))
+  (truncate (/ (log (/ most-positive-fixnum 2) 10) 2))
   "The length of a \"digit\" in Calc bignums.
 If a big integer is of the form (bigpos N0 N1 ...), this is the
 length of the allowable Emacs integers N0, N1,...
index eba99b839e6dcdb4eb7feb9311817c55bd3e9fa3..b8a6202380557f8a22cec06cc3d9b97117c50574 100644 (file)
@@ -1206,6 +1206,11 @@ is converted into a string by expressing it in decimal."
   (declare (obsolete make-hash-table "22.1"))
   (make-hash-table :test (or test 'eql)))
 
+(defun log10 (x)
+  "Return (log X 10), the log base 10 of X."
+  (declare (obsolete log "24.4"))
+  (log x 10))
+
 ;; These are used by VM and some old programs
 (defalias 'focus-frame 'ignore "")
 (make-obsolete 'focus-frame "it does nothing." "22.1")
index 01981175e1d1a2eb84951a0ee6418701ecf55cd0..a841ec39314120c7288453035eb46f562062e182 100644 (file)
@@ -2419,8 +2419,8 @@ level to align."
                 ;; for the numbers.
                 (if (cdr node)
                     (setq fmt (format "%%-%dd"
-                                      (1+ (floor (log10 (length
-                                                        (cdr node))))))))))
+                                      (1+ (floor (log (length (cdr node))
+                                                     10))))))))
 
           (dolist (child (cdr node))
             (rst-toc-insert-node child
index 68138e46b6b0e2f1c28961c88940b475112cde53..c503da29732fa90ad86efba9037ca9f53d676d9e 100644 (file)
@@ -1,3 +1,12 @@
+2013-06-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * floatfns.c (Flog10): Move to Lisp (marked obsolete there).
+
+2013-06-20  RĂ¼diger Sonderfeld <ruediger@c-plusplus.de>
+
+       * floatfns.c (Flog) [HAVE_LOG2]: Use log2 if available and if the
+       base is 2; this is more accurate.
+
 2013-06-19  Juanma Barranquero  <lekktu@gmail.com>
 
        * sound.c (string_default): Move to !WINDOWSNT section.
index dd6d3dfe582a6352c6ed2985d577eb9828c8f4b4..f3d0936f88866c52bbc4135134cd7bea5772fbff 100644 (file)
@@ -25,7 +25,8 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 /* C89 requires only the following math.h functions, and Emacs omits
    the starred functions since we haven't found a use for them:
    acos, asin, atan, atan2, ceil, cos, *cosh, exp, fabs, floor, fmod,
-   frexp, ldexp, log, log10, *modf, pow, sin, *sinh, sqrt, tan, *tanh.
+   frexp, ldexp, log, log10 [via (log X 10)], *modf, pow, sin, *sinh,
+   sqrt, tan, *tanh.
 
    C99 and C11 require the following math.h functions in addition to
    the C89 functions.  Of these, Emacs currently exports only the
@@ -33,10 +34,10 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
    acosh, atanh, cbrt, *copysign, erf, erfc, exp2, expm1, fdim, fma,
    fmax, fmin, fpclassify, hypot, ilogb, isfinite, isgreater,
    isgreaterequal, isinf, isless, islessequal, islessgreater, *isnan,
-   isnormal, isunordered, lgamma, log1p, log2, *logb (approximately),
-   lrint/llrint, lround/llround, nan, nearbyint, nextafter,
-   nexttoward, remainder, remquo, *rint, round, scalbln, scalbn,
-   signbit, tgamma, trunc.
+   isnormal, isunordered, lgamma, log1p, *log2 [via (log X 2)], *logb
+   (approximately), lrint/llrint, lround/llround, nan, nearbyint,
+   nextafter, nexttoward, remainder, remquo, *rint, round, scalbln,
+   scalbn, signbit, tgamma, trunc.
  */
 
 #include <config.h>
@@ -252,21 +253,16 @@ If the optional argument BASE is given, return log ARG using that base.  */)
 
       if (b == 10.0)
        d = log10 (d);
+#if HAVE_LOG2
+      else if (b == 2.0)
+       d = log2 (d);
+#endif
       else
        d = log (d) / log (b);
     }
   return make_float (d);
 }
 
-DEFUN ("log10", Flog10, Slog10, 1, 1, 0,
-       doc: /* Return the logarithm base 10 of ARG.  */)
-  (Lisp_Object arg)
-{
-  double d = extract_float (arg);
-  d = log10 (d);
-  return make_float (d);
-}
-
 DEFUN ("sqrt", Fsqrt, Ssqrt, 1, 1, 0,
        doc: /* Return the square root of ARG.  */)
   (Lisp_Object arg)
@@ -564,7 +560,6 @@ syms_of_floatfns (void)
   defsubr (&Sexp);
   defsubr (&Sexpt);
   defsubr (&Slog);
-  defsubr (&Slog10);
   defsubr (&Ssqrt);
 
   defsubr (&Sabs);