Print this page
11210 libm should be cstyle(1ONBLD) clean

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libm/common/Q/remainderl.c
          +++ new/usr/src/lib/libm/common/Q/remainderl.c
↓ open down ↓ 14 lines elided ↑ open up ↑
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23   23   * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
  24   24   */
       25 +
  25   26  /*
  26   27   * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  27   28   * Use is subject to license terms.
  28   29   */
  29   30  
  30   31  #pragma weak __remainderl = remainderl
  31   32  
  32   33  #include "libm.h"
  33   34  #include "longdouble.h"
  34   35  
  35   36  /*
  36   37   * remainderl(x,p)
  37   38   *      returns  x REM p  =  x - [x/p]*p as if in infinite
  38   39   *      precise arithmetic, where [x/p] is the (inifinite bit)
  39   40   *      integer nearest x/p (in half way case choose the even one).
  40   41   * Method :
  41   42   *      Based on fmodl() return x-[x/p]chopped*p exactly.
  42   43   */
  43   44  
  44      -#define HFMAX   5.948657476786158825428796633140035080982e+4931L
  45      -#define DBMIN   6.724206286224187012525355634643505205196e-4932L
       45 +#define HFMAX           5.948657476786158825428796633140035080982e+4931L
       46 +#define DBMIN           6.724206286224187012525355634643505205196e-4932L
  46   47  
  47      -static const long double
  48      -        zero = 0.0L,
       48 +static const long double zero = 0.0L,
  49   49          half = 0.5L,
  50   50          hfmax = HFMAX,  /* half of the maximum number */
  51   51          dbmin = DBMIN;  /* double of the minimum (normal) number */
  52   52  
  53   53  long double
  54      -remainderl(long double x, long double p) {
       54 +remainderl(long double x, long double p)
       55 +{
  55   56          long double hp;
  56   57          int sx;
  57   58  
  58   59          if (isnanl(p))
  59   60                  return (x + p);
       61 +
  60   62          if (!finitel(x))
  61   63                  return (x - x);
       64 +
  62   65          p = fabsl(p);
       66 +
  63   67          if (p <= hfmax)
  64   68                  x = fmodl(x, p + p);
       69 +
  65   70          sx = signbitl(x);
  66   71          x = fabsl(x);
       72 +
  67   73          if (p < dbmin) {
  68   74                  if (x + x > p) {
  69   75                          if (x == p)
  70   76                                  x = zero;
  71   77                          else
  72      -                                x -= p; /* avoid x-x=-0 in RM mode */
       78 +                                x -= p;         /* avoid x-x=-0 in RM mode */
       79 +
  73   80                          if (x + x >= p)
  74   81                                  x -= p;
  75   82                  }
  76   83          } else {
  77   84                  hp = half * p;
       85 +
  78   86                  if (x > hp) {
  79   87                          if (x == p)
  80   88                                  x = zero;
  81   89                          else
  82      -                                x -= p; /* avoid x-x=-0 in RM mode */
       90 +                                x -= p;         /* avoid x-x=-0 in RM mode */
       91 +
  83   92                          if (x >= hp)
  84   93                                  x -= p;
  85   94                  }
  86   95          }
       96 +
  87   97          return (sx == 0 ? x : -x);
  88   98  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX