Raymond Toy pushed to branch issue-425-correctly-rounded-math-functions at cmucl / cmucl

Commits:

3 changed files:

Changes:

  • src/code/irrat.lisp
    ... ... @@ -214,9 +214,7 @@
    214 214
       (y1 double-float :out))
    
    215 215
     
    
    216 216
     (declaim (inline %%sincos))
    
    217
    -(alien:def-alien-routine (#-core-math "lisp_sincos"
    
    218
    -			  #+core-math "cr_sincos"
    
    219
    -			  %%sincos)
    
    217
    +(alien:def-alien-routine ("lisp_sincos" %%sincos)
    
    220 218
       c-call:void
    
    221 219
       (x double-float)
    
    222 220
       (s double-float :out)
    

  • src/lisp/irrat.c
    ... ... @@ -31,6 +31,7 @@ extern double cr_pow(double, double);
    31 31
     extern double cr_hypot(double, double);
    
    32 32
     extern double cr_log1p(double);
    
    33 33
     extern double cr_expm1(double);
    
    34
    +extern void cr_sincos(double, double *, double *);
    
    34 35
     #endif
    
    35 36
     
    
    36 37
     
    
    ... ... @@ -243,3 +244,15 @@ lisp_scalbn(double x, int n)
    243 244
     {
    
    244 245
         return fdlibm_scalbn(x, n);
    
    245 246
     }
    
    247
    +
    
    248
    +void
    
    249
    +lisp_sincos (double x, double *s, double *c)
    
    250
    +{
    
    251
    +#ifdef FEATURE_CORE_MATH
    
    252
    +    cr_sincos(x, s, c);
    
    253
    +#else    
    
    254
    +    extern void cmucl_sincos(double, double*, double*);
    
    255
    +
    
    256
    +    cmucl_sincos(x, s, c);
    
    257
    +#endif
    
    258
    +}

  • src/lisp/sincos.c
    ... ... @@ -13,7 +13,7 @@
    13 13
      * reduction just once.
    
    14 14
      */
    
    15 15
     void
    
    16
    -lisp_sincos (double x, double *s, double *c)
    
    16
    +cmucl_sincos (double x, double *s, double *c)
    
    17 17
     {
    
    18 18
         int ix;
    
    19 19
         union { int i[2]; double d; } ux;