comparison src/floatfns.c @ 2205:c021f53fe7e5

* floatfns.c (logb): Add extern declaration for this. * floatfns.c (Flogb): Under SYSV, implement this using frexp.
author Jim Blandy <jimb@redhat.com>
date Mon, 15 Mar 1993 20:17:07 +0000
parents 6741f5f8ed54
children e94a593c3952
comparison
equal deleted inserted replaced
2204:41258d6c3eee 2205:c021f53fe7e5
52 Lisp_Object Qarith_error; 52 Lisp_Object Qarith_error;
53 53
54 #ifdef LISP_FLOAT_TYPE 54 #ifdef LISP_FLOAT_TYPE
55 55
56 #include <math.h> 56 #include <math.h>
57
58 /* These declarations are omitted on some systems, like Ultrix. */
59 extern double logb ();
57 60
58 #if defined(DOMAIN) && defined(SING) && defined(OVERFLOW) 61 #if defined(DOMAIN) && defined(SING) && defined(OVERFLOW)
59 /* If those are defined, then this is probably a `matherr' machine. */ 62 /* If those are defined, then this is probably a `matherr' machine. */
60 # ifndef HAVE_MATHERR 63 # ifndef HAVE_MATHERR
61 # define HAVE_MATHERR 64 # define HAVE_MATHERR
618 "Returns the integer not greater than the base 2 log of the magnitude of ARG.\n\ 621 "Returns the integer not greater than the base 2 log of the magnitude of ARG.\n\
619 This is the same as the exponent of a float.") 622 This is the same as the exponent of a float.")
620 (arg) 623 (arg)
621 Lisp_Object arg; 624 Lisp_Object arg;
622 { 625 {
623 #ifdef USG
624 error ("SYSV apparently doesn't have a logb function; what to do?");
625 #else
626 Lisp_Object val; 626 Lisp_Object val;
627 int value; 627 int value;
628 double f = extract_float (arg); 628 double f = extract_float (arg);
629 629
630 #ifdef USG
631 {
632 int exp;
633
634 IN_FLOAT (frexp (f, &exp), "logb", arg);
635 XSET (val, Lisp_Int, exp-1);
636 }
637 #else
630 IN_FLOAT (value = logb (f), "logb", arg); 638 IN_FLOAT (value = logb (f), "logb", arg);
631 XSET (val, Lisp_Int, value); 639 XSET (val, Lisp_Int, value);
640 #endif
641
632 return val; 642 return val;
633 #endif
634 } 643 }
635 644
636 /* the rounding functions */ 645 /* the rounding functions */
637 646
638 DEFUN ("ceiling", Fceiling, Sceiling, 1, 1, 0, 647 DEFUN ("ceiling", Fceiling, Sceiling, 1, 1, 0,