diff options
Diffstat (limited to 'lib/msun')
-rw-r--r-- | lib/msun/src/s_cbrt.c | 13 | ||||
-rw-r--r-- | lib/msun/src/s_cbrtf.c | 13 |
2 files changed, 14 insertions, 12 deletions
diff --git a/lib/msun/src/s_cbrt.c b/lib/msun/src/s_cbrt.c index 4b140c7..853337b 100644 --- a/lib/msun/src/s_cbrt.c +++ b/lib/msun/src/s_cbrt.c @@ -63,12 +63,13 @@ cbrt(double x) * subtraction virtually to keep e >= 0 so that ordinary integer * division rounds towards minus infinity; this is also efficient. */ - if(hx<0x00100000) /* subnormal number */ - {SET_HIGH_WORD(t,0x43500000); /* set t= 2**54 */ - t*=x; GET_HIGH_WORD(high,t); SET_HIGH_WORD(t,high/3+B2); - } - else - SET_HIGH_WORD(t,hx/3+B1); + if(hx<0x00100000) { /* subnormal number */ + SET_HIGH_WORD(t,0x43500000); /* set t= 2**54 */ + t*=x; + GET_HIGH_WORD(high,t); + SET_HIGH_WORD(t,high/3+B2); + } else + SET_HIGH_WORD(t,hx/3+B1); /* new cbrt to 23 bits; may be implemented in single precision */ r=t*t/x; diff --git a/lib/msun/src/s_cbrtf.c b/lib/msun/src/s_cbrtf.c index 6de11e5..3af0e40 100644 --- a/lib/msun/src/s_cbrtf.c +++ b/lib/msun/src/s_cbrtf.c @@ -52,12 +52,13 @@ cbrtf(float x) SET_FLOAT_WORD(x,hx); /* x <- |x| */ /* rough cbrt to 5 bits */ - if(hx<0x00800000) /* subnormal number */ - {SET_FLOAT_WORD(t,0x4b800000); /* set t= 2**24 */ - t*=x; GET_FLOAT_WORD(high,t); SET_FLOAT_WORD(t,high/3+B2); - } - else - SET_FLOAT_WORD(t,hx/3+B1); + if(hx<0x00800000) { /* subnormal number */ + SET_FLOAT_WORD(t,0x4b800000); /* set t= 2**24 */ + t*=x; + GET_FLOAT_WORD(high,t); + SET_FLOAT_WORD(t,high/3+B2); + } else + SET_FLOAT_WORD(t,hx/3+B1); /* new cbrt to 23 bits */ r=t*t/x; |