aboutsummaryrefslogtreecommitdiffstats
path: root/src/floatfns.c
diff options
context:
space:
mode:
authorPaul Eggert2013-06-20 07:15:42 -0700
committerPaul Eggert2013-06-20 07:15:42 -0700
commit89561f72e587677618afa2fd6962704e841e39e8 (patch)
tree9b790c6b916c853df24a72eebd505c38501ccec6 /src/floatfns.c
parent47199123698df3a14acb016c3869075b2d6012d5 (diff)
downloademacs-89561f72e587677618afa2fd6962704e841e39e8.tar.gz
emacs-89561f72e587677618afa2fd6962704e841e39e8.zip
Add log2 support and make log10 obsolete for consistency.
* 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).
Diffstat (limited to 'src/floatfns.c')
-rw-r--r--src/floatfns.c25
1 files changed, 10 insertions, 15 deletions
diff --git a/src/floatfns.c b/src/floatfns.c
index dd6d3dfe582..f3d0936f888 100644
--- a/src/floatfns.c
+++ b/src/floatfns.c
@@ -25,7 +25,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
25/* C89 requires only the following math.h functions, and Emacs omits 25/* C89 requires only the following math.h functions, and Emacs omits
26 the starred functions since we haven't found a use for them: 26 the starred functions since we haven't found a use for them:
27 acos, asin, atan, atan2, ceil, cos, *cosh, exp, fabs, floor, fmod, 27 acos, asin, atan, atan2, ceil, cos, *cosh, exp, fabs, floor, fmod,
28 frexp, ldexp, log, log10, *modf, pow, sin, *sinh, sqrt, tan, *tanh. 28 frexp, ldexp, log, log10 [via (log X 10)], *modf, pow, sin, *sinh,
29 sqrt, tan, *tanh.
29 30
30 C99 and C11 require the following math.h functions in addition to 31 C99 and C11 require the following math.h functions in addition to
31 the C89 functions. Of these, Emacs currently exports only the 32 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/>. */
33 acosh, atanh, cbrt, *copysign, erf, erfc, exp2, expm1, fdim, fma, 34 acosh, atanh, cbrt, *copysign, erf, erfc, exp2, expm1, fdim, fma,
34 fmax, fmin, fpclassify, hypot, ilogb, isfinite, isgreater, 35 fmax, fmin, fpclassify, hypot, ilogb, isfinite, isgreater,
35 isgreaterequal, isinf, isless, islessequal, islessgreater, *isnan, 36 isgreaterequal, isinf, isless, islessequal, islessgreater, *isnan,
36 isnormal, isunordered, lgamma, log1p, log2, *logb (approximately), 37 isnormal, isunordered, lgamma, log1p, *log2 [via (log X 2)], *logb
37 lrint/llrint, lround/llround, nan, nearbyint, nextafter, 38 (approximately), lrint/llrint, lround/llround, nan, nearbyint,
38 nexttoward, remainder, remquo, *rint, round, scalbln, scalbn, 39 nextafter, nexttoward, remainder, remquo, *rint, round, scalbln,
39 signbit, tgamma, trunc. 40 scalbn, signbit, tgamma, trunc.
40 */ 41 */
41 42
42#include <config.h> 43#include <config.h>
@@ -252,21 +253,16 @@ If the optional argument BASE is given, return log ARG using that base. */)
252 253
253 if (b == 10.0) 254 if (b == 10.0)
254 d = log10 (d); 255 d = log10 (d);
256#if HAVE_LOG2
257 else if (b == 2.0)
258 d = log2 (d);
259#endif
255 else 260 else
256 d = log (d) / log (b); 261 d = log (d) / log (b);
257 } 262 }
258 return make_float (d); 263 return make_float (d);
259} 264}
260 265
261DEFUN ("log10", Flog10, Slog10, 1, 1, 0,
262 doc: /* Return the logarithm base 10 of ARG. */)
263 (Lisp_Object arg)
264{
265 double d = extract_float (arg);
266 d = log10 (d);
267 return make_float (d);
268}
269
270DEFUN ("sqrt", Fsqrt, Ssqrt, 1, 1, 0, 266DEFUN ("sqrt", Fsqrt, Ssqrt, 1, 1, 0,
271 doc: /* Return the square root of ARG. */) 267 doc: /* Return the square root of ARG. */)
272 (Lisp_Object arg) 268 (Lisp_Object arg)
@@ -564,7 +560,6 @@ syms_of_floatfns (void)
564 defsubr (&Sexp); 560 defsubr (&Sexp);
565 defsubr (&Sexpt); 561 defsubr (&Sexpt);
566 defsubr (&Slog); 562 defsubr (&Slog);
567 defsubr (&Slog10);
568 defsubr (&Ssqrt); 563 defsubr (&Ssqrt);
569 564
570 defsubr (&Sabs); 565 defsubr (&Sabs);