Print this page
11210 libm should be cstyle(1ONBLD) clean
*** 20,79 ****
*/
/*
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
*/
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#pragma weak __nextafterf = nextafterf
#include "libm.h"
float
! nextafterf(float x, float y) {
float w;
! int *pw = (int *) &w;
! int *px = (int *) &x;
! int *py = (int *) &y;
int ix, iy, iz;
ix = px[0];
iy = py[0];
if ((ix & ~0x80000000) > 0x7f800000)
return (x * y); /* + -> * for Cheetah */
if ((iy & ~0x80000000) > 0x7f800000)
return (y * x); /* + -> * for Cheetah */
if (ix == iy || (ix | iy) == 0x80000000)
return (y); /* C99 requirement */
! if ((ix & ~0x80000000) == 0)
iz = 1 | (iy & 0x80000000);
! else if (ix > 0) {
if (ix > iy)
iz = ix - 1;
else
iz = ix + 1;
} else {
if (iy < 0 && ix < iy)
iz = ix + 1;
else
iz = ix - 1;
}
pw[0] = iz;
ix = iz & 0x7f800000;
if (ix == 0x7f800000) {
/* raise overflow */
volatile float t;
! *(int *) &t = 0x7f7fffff;
t *= t;
} else if (ix == 0) {
/* raise underflow */
volatile float t;
! *(int *) &t = 0x00800000;
t *= t;
}
return (w);
}
--- 20,88 ----
*/
/*
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
*/
+
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#pragma weak __nextafterf = nextafterf
#include "libm.h"
float
! nextafterf(float x, float y)
! {
float w;
! int *pw = (int *)&w;
! int *px = (int *)&x;
! int *py = (int *)&y;
int ix, iy, iz;
ix = px[0];
iy = py[0];
+
if ((ix & ~0x80000000) > 0x7f800000)
return (x * y); /* + -> * for Cheetah */
+
if ((iy & ~0x80000000) > 0x7f800000)
return (y * x); /* + -> * for Cheetah */
+
if (ix == iy || (ix | iy) == 0x80000000)
return (y); /* C99 requirement */
!
! if ((ix & ~0x80000000) == 0) {
iz = 1 | (iy & 0x80000000);
! } else if (ix > 0) {
if (ix > iy)
iz = ix - 1;
else
iz = ix + 1;
} else {
if (iy < 0 && ix < iy)
iz = ix + 1;
else
iz = ix - 1;
}
+
pw[0] = iz;
ix = iz & 0x7f800000;
+
if (ix == 0x7f800000) {
/* raise overflow */
volatile float t;
! *(int *)&t = 0x7f7fffff;
t *= t;
} else if (ix == 0) {
/* raise underflow */
volatile float t;
! *(int *)&t = 0x00800000;
t *= t;
}
+
return (w);
}