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

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libm/common/m9x/llround.c
          +++ new/usr/src/lib/libm/common/m9x/llround.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 __llround = llround
  31   32  #if defined(__sparcv9) || defined(__amd64)
  32   33  #pragma weak lround = llround
  33   34  #pragma weak __lround = llround
  34   35  #endif
↓ open down ↓ 3 lines elided ↑ open up ↑
  38   39   * ties away from zero, and converts the result to a 64 bit signed
  39   40   * integer.
  40   41   *
  41   42   * If x is NaN, infinite, or so large that the nearest integer
  42   43   * would exceed 64 bits, the invalid operation exception is raised.
  43   44   */
  44   45  
  45   46  #include "libm.h"
  46   47  
  47   48  long long
  48      -llround(double x) {
       49 +llround(double x)
       50 +{
  49   51          union {
  50   52                  unsigned i[2];
  51   53                  double d;
  52   54          } xx;
       55 +
  53   56          unsigned hx, sx, i;
  54   57  
  55   58          xx.d = x;
  56   59          hx = xx.i[HIWORD] & ~0x80000000;
  57   60          sx = xx.i[HIWORD] & 0x80000000;
  58   61  
  59      -        if (hx < 0x43300000) { /* |x| < 2^52 */
       62 +        if (hx < 0x43300000) {          /* |x| < 2^52 */
  60   63                  /* handle |x| < 1 */
  61   64                  if (hx < 0x3ff00000) {
  62   65                          if (hx >= 0x3fe00000)
  63   66                                  return (sx ? -1LL : 1LL);
       67 +
  64   68                          return (0LL);
  65   69                  }
  66   70  
  67   71                  /* round x at the integer bit */
  68   72                  if (hx < 0x41300000) {
  69   73                          i = 1 << (0x412 - (hx >> 20));
  70   74                          xx.i[HIWORD] = (xx.i[HIWORD] + i) & ~(i | (i - 1));
  71   75                          xx.i[LOWORD] = 0;
  72   76                  } else {
  73   77                          i = 1 << (0x432 - (hx >> 20));
  74   78                          xx.i[LOWORD] += i;
       79 +
  75   80                          if (xx.i[LOWORD] < i)
  76   81                                  xx.i[HIWORD]++;
       82 +
  77   83                          xx.i[LOWORD] &= ~(i | (i - 1));
  78   84                  }
  79   85          }
  80   86  
  81   87          /* now x is nan, inf, or integral */
  82      -        return ((long long) xx.d);
       88 +        return ((long long)xx.d);
  83   89  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX