Use NVs in POSIX math, not doubles.
Abigail [Thu, 17 Aug 2000 20:49:18 +0000 (20:49 +0000)]
Subject: [ID 20000817.014] POSIX & modfl
Message-Id: <20000817204918.23123.qmail@foad.org>

p4raw-id: //depot/perl@6686

ext/POSIX/POSIX.xs
ext/POSIX/typemap

index b8b80d4..473610f 100644 (file)
@@ -538,24 +538,6 @@ mini_mktime(struct tm *ptm)
        ptm->tm_wday = (jday + WEEKDAY_BIAS) % 7;
 }
 
-#ifdef HAS_LONG_DOUBLE
-#  if LONG_DOUBLESIZE > DOUBLESIZE
-#    undef HAS_LONG_DOUBLE  /* XXX until we figure out how to use them */
-#  endif
-#endif
-
-#ifndef HAS_LONG_DOUBLE 
-#ifdef LDBL_MAX
-#undef LDBL_MAX
-#endif
-#ifdef LDBL_MIN
-#undef LDBL_MIN
-#endif
-#ifdef LDBL_EPSILON
-#undef LDBL_EPSILON
-#endif
-#endif
-
 static int
 not_here(char *s)
 {
@@ -564,11 +546,7 @@ not_here(char *s)
 }
 
 static
-#if defined(HAS_LONG_DOUBLE) && (LONG_DOUBLESIZE > DOUBLESIZE)
-long double
-#else
-double
-#endif
+NV
 constant(char *name, int arg)
 {
     errno = 0;
@@ -1528,7 +1506,7 @@ constant(char *name, int arg)
     case 'H':
        if (strEQ(name, "HUGE_VAL"))
 #if defined(USE_LONG_DOUBLE) && defined(HUGE_VALL)
-         /* HUGE_VALL is admittedly non-POSIX but if are using long doubles
+         /* HUGE_VALL is admittedly non-POSIX but if we are using long doubles
           * we might as well use long doubles. --jhi */
            return HUGE_VALL;
 #endif
@@ -3020,7 +2998,7 @@ setcc(termios_ref, ccix, cc)
 
 MODULE = POSIX         PACKAGE = POSIX
 
-double
+NV
 constant(name,arg)
        char *          name
        int             arg
@@ -3309,73 +3287,73 @@ setlocale(category, locale = 0)
        RETVAL
 
 
-double
+NV
 acos(x)
-       double          x
+       NV              x
 
-double
+NV
 asin(x)
-       double          x
+       NV              x
 
-double
+NV
 atan(x)
-       double          x
+       NV              x
 
-double
+NV
 ceil(x)
-       double          x
+       NV              x
 
-double
+NV
 cosh(x)
-       double          x
+       NV              x
 
-double
+NV
 floor(x)
-       double          x
+       NV              x
 
-double
+NV
 fmod(x,y)
-       double          x
-       double          y
+       NV              x
+       NV              y
 
 void
 frexp(x)
-       double          x
+       NV              x
     PPCODE:
        int expvar;
        /* (We already know stack is long enough.) */
        PUSHs(sv_2mortal(newSVnv(frexp(x,&expvar))));
        PUSHs(sv_2mortal(newSViv(expvar)));
 
-double
+NV
 ldexp(x,exp)
-       double          x
+       NV              x
        int             exp
 
-double
+NV
 log10(x)
-       double          x
+       NV              x
 
 void
 modf(x)
-       double          x
+       NV              x
     PPCODE:
-       double intvar;
+       NV intvar;
        /* (We already know stack is long enough.) */
        PUSHs(sv_2mortal(newSVnv(Perl_modf(x,&intvar))));
        PUSHs(sv_2mortal(newSVnv(intvar)));
 
-double
+NV
 sinh(x)
-       double          x
+       NV              x
 
-double
+NV
 tan(x)
-       double          x
+       NV              x
 
-double
+NV
 tanh(x)
-       double          x
+       NV              x
 
 SysRet
 sigaction(sig, action, oldaction = 0)
index 63e41c7..baf9bfc 100644 (file)
@@ -5,6 +5,7 @@ Time_t                  T_NV
 Gid_t                  T_NV
 Off_t                  T_NV
 Dev_t                  T_NV
+NV                     T_NV
 fd                     T_IV
 speed_t                        T_IV
 tcflag_t               T_IV