Print this page




  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 
  22 /*
  23  * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
  24  */
  25 /*
  26  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  27  * Use is subject to license terms.
  28  */
  29 
  30 #if defined(ELFOBJ)
  31 #pragma weak cbrtl = __cbrtl
  32 #endif
  33 
  34 #include "libm.h"

  35 
  36 static const double d_one = 1.0;
  37 
  38 long double
  39 cbrtl(long double x) {
  40         long double s, t, r, w, y;
  41         double dx, dy;
  42         int *py = (int *) &dy;
  43         int n, m, m3, n0, sx;
  44 
  45         if (!finitel(x))
  46                 return (x + x);
  47         if (iszerol(x))
  48                 return (x);
  49         n0 = 0;
  50         if (*((int *) &d_one) == 0)
  51                 n0 = 1;
  52         sx = signbitl(x);
  53         x = fabsl(x);
  54         n = ilogbl(x);


  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 
  22 /*
  23  * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
  24  */
  25 /*
  26  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  27  * Use is subject to license terms.
  28  */
  29 
  30 #if defined(ELFOBJ)
  31 #pragma weak cbrtl = __cbrtl
  32 #endif
  33 
  34 #include "libm.h"
  35 #include "longdouble.h"
  36 
  37 static const double d_one = 1.0;
  38 
  39 long double
  40 cbrtl(long double x) {
  41         long double s, t, r, w, y;
  42         double dx, dy;
  43         int *py = (int *) &dy;
  44         int n, m, m3, n0, sx;
  45 
  46         if (!finitel(x))
  47                 return (x + x);
  48         if (iszerol(x))
  49                 return (x);
  50         n0 = 0;
  51         if (*((int *) &d_one) == 0)
  52                 n0 = 1;
  53         sx = signbitl(x);
  54         x = fabsl(x);
  55         n = ilogbl(x);