• Home
  • Raw
  • Download

Lines Matching refs:aSig

259  normalizeFloat32Subnormal( uint32_t aSig, int16 *zExpPtr, uint32_t *zSigPtr )  in normalizeFloat32Subnormal()  argument
263 shiftCount = countLeadingZeros32( aSig ) - 8; in normalizeFloat32Subnormal()
264 *zSigPtr = aSig<<shiftCount; in normalizeFloat32Subnormal()
441 normalizeFloat64Subnormal( uint64_t aSig, int16 *zExpPtr, uint64_t *zSigPtr ) in normalizeFloat64Subnormal() argument
445 shiftCount = countLeadingZeros64( aSig ) - 11; in normalizeFloat64Subnormal()
446 *zSigPtr = aSig<<shiftCount; in normalizeFloat64Subnormal()
613 normalizeFloatx80Subnormal( uint64_t aSig, int32 *zExpPtr, uint64_t *zSigPtr ) in normalizeFloatx80Subnormal() argument
617 shiftCount = countLeadingZeros64( aSig ); in normalizeFloatx80Subnormal()
618 *zSigPtr = aSig<<shiftCount; in normalizeFloatx80Subnormal()
1370 uint32_t aSig; in float32_to_int32() local
1374 aSig = extractFloat32Frac( a ); in float32_to_int32()
1377 if ( ( aExp == 0xFF ) && aSig ) aSign = 0; in float32_to_int32()
1378 if ( aExp ) aSig |= 0x00800000; in float32_to_int32()
1380 aSig64 = aSig; in float32_to_int32()
1401 uint32_t aSig; in float32_to_int32_round_to_zero() local
1405 aSig = extractFloat32Frac( a ); in float32_to_int32_round_to_zero()
1412 if ( ! aSign || ( ( aExp == 0xFF ) && aSig ) ) return 0x7FFFFFFF; in float32_to_int32_round_to_zero()
1417 if ( aExp | aSig ) STATUS(float_exception_flags) |= float_flag_inexact; in float32_to_int32_round_to_zero()
1420 aSig = ( aSig | 0x00800000 )<<8; in float32_to_int32_round_to_zero()
1421 z = aSig>>( - shiftCount ); in float32_to_int32_round_to_zero()
1422 if ( (uint32_t) ( aSig<<( shiftCount & 31 ) ) ) { in float32_to_int32_round_to_zero()
1444 uint32_t aSig; in float32_to_int16_round_to_zero() local
1447 aSig = extractFloat32Frac( a ); in float32_to_int16_round_to_zero()
1454 if ( ! aSign || ( ( aExp == 0xFF ) && aSig ) ) { in float32_to_int16_round_to_zero()
1461 if ( aExp | aSig ) { in float32_to_int16_round_to_zero()
1467 aSig = ( aSig | 0x00800000 )<<8; in float32_to_int16_round_to_zero()
1468 z = aSig>>( - shiftCount ); in float32_to_int16_round_to_zero()
1469 if ( (uint32_t) ( aSig<<( shiftCount & 31 ) ) ) { in float32_to_int16_round_to_zero()
1493 uint32_t aSig; in float32_to_int64() local
1497 aSig = extractFloat32Frac( a ); in float32_to_int64()
1503 if ( ! aSign || ( ( aExp == 0xFF ) && aSig ) ) { in float32_to_int64()
1508 if ( aExp ) aSig |= 0x00800000; in float32_to_int64()
1509 aSig64 = aSig; in float32_to_int64()
1530 uint32_t aSig; in float32_to_int64_round_to_zero() local
1535 aSig = extractFloat32Frac( a ); in float32_to_int64_round_to_zero()
1542 if ( ! aSign || ( ( aExp == 0xFF ) && aSig ) ) { in float32_to_int64_round_to_zero()
1549 if ( aExp | aSig ) STATUS(float_exception_flags) |= float_flag_inexact; in float32_to_int64_round_to_zero()
1552 aSig64 = aSig | 0x00800000; in float32_to_int64_round_to_zero()
1574 uint32_t aSig; in float32_to_float64() local
1577 aSig = extractFloat32Frac( a ); in float32_to_float64()
1581 if ( aSig ) return commonNaNToFloat64( float32ToCommonNaN( a STATUS_VAR ) STATUS_VAR ); in float32_to_float64()
1585 if ( aSig == 0 ) return packFloat64( aSign, 0, 0 ); in float32_to_float64()
1586 normalizeFloat32Subnormal( aSig, &aExp, &aSig ); in float32_to_float64()
1589 return packFloat64( aSign, aExp + 0x380, ( (uint64_t) aSig )<<29 ); in float32_to_float64()
1606 uint32_t aSig; in float32_to_floatx80() local
1609 aSig = extractFloat32Frac( a ); in float32_to_floatx80()
1613 if ( aSig ) return commonNaNToFloatx80( float32ToCommonNaN( a STATUS_VAR ) STATUS_VAR ); in float32_to_floatx80()
1617 if ( aSig == 0 ) return packFloatx80( aSign, 0, 0 ); in float32_to_floatx80()
1618 normalizeFloat32Subnormal( aSig, &aExp, &aSig ); in float32_to_floatx80()
1620 aSig |= 0x00800000; in float32_to_floatx80()
1621 return packFloatx80( aSign, aExp + 0x3F80, ( (uint64_t) aSig )<<40 ); in float32_to_floatx80()
1640 uint32_t aSig; in float32_to_float128() local
1643 aSig = extractFloat32Frac( a ); in float32_to_float128()
1647 if ( aSig ) return commonNaNToFloat128( float32ToCommonNaN( a STATUS_VAR ) STATUS_VAR ); in float32_to_float128()
1651 if ( aSig == 0 ) return packFloat128( aSign, 0, 0, 0 ); in float32_to_float128()
1652 normalizeFloat32Subnormal( aSig, &aExp, &aSig ); in float32_to_float128()
1655 return packFloat128( aSign, aExp + 0x3F80, ( (uint64_t) aSig )<<25, 0 ); in float32_to_float128()
1732 uint32_t aSig, bSig, zSig; in addFloat32Sigs() local
1735 aSig = extractFloat32Frac( a ); in addFloat32Sigs()
1740 aSig <<= 6; in addFloat32Sigs()
1744 if ( aSig ) return propagateFloat32NaN( a, b STATUS_VAR ); in addFloat32Sigs()
1765 aSig |= 0x20000000; in addFloat32Sigs()
1767 shift32RightJamming( aSig, - expDiff, &aSig ); in addFloat32Sigs()
1772 if ( aSig | bSig ) return propagateFloat32NaN( a, b STATUS_VAR ); in addFloat32Sigs()
1777 if (aSig | bSig) { in addFloat32Sigs()
1782 return packFloat32( zSign, 0, ( aSig + bSig )>>6 ); in addFloat32Sigs()
1784 zSig = 0x40000000 + aSig + bSig; in addFloat32Sigs()
1788 aSig |= 0x20000000; in addFloat32Sigs()
1789 zSig = ( aSig + bSig )<<1; in addFloat32Sigs()
1792 zSig = aSig + bSig; in addFloat32Sigs()
1811 uint32_t aSig, bSig, zSig; in subFloat32Sigs() local
1814 aSig = extractFloat32Frac( a ); in subFloat32Sigs()
1819 aSig <<= 7; in subFloat32Sigs()
1824 if ( aSig | bSig ) return propagateFloat32NaN( a, b STATUS_VAR ); in subFloat32Sigs()
1832 if ( bSig < aSig ) goto aBigger; in subFloat32Sigs()
1833 if ( aSig < bSig ) goto bBigger; in subFloat32Sigs()
1844 aSig |= 0x40000000; in subFloat32Sigs()
1846 shift32RightJamming( aSig, - expDiff, &aSig ); in subFloat32Sigs()
1849 zSig = bSig - aSig; in subFloat32Sigs()
1855 if ( aSig ) return propagateFloat32NaN( a, b STATUS_VAR ); in subFloat32Sigs()
1865 aSig |= 0x40000000; in subFloat32Sigs()
1867 zSig = aSig - bSig; in subFloat32Sigs()
1931 uint32_t aSig, bSig; in float32_mul() local
1938 aSig = extractFloat32Frac( a ); in float32_mul()
1946 if ( aSig || ( ( bExp == 0xFF ) && bSig ) ) { in float32_mul()
1957 if ( ( aExp | aSig ) == 0 ) { in float32_mul()
1964 if ( aSig == 0 ) return packFloat32( zSign, 0, 0 ); in float32_mul()
1965 normalizeFloat32Subnormal( aSig, &aExp, &aSig ); in float32_mul()
1972 aSig = ( aSig | 0x00800000 )<<7; in float32_mul()
1974 shift64RightJamming( ( (uint64_t) aSig ) * bSig, 32, &zSig64 ); in float32_mul()
1994 uint32_t aSig, bSig, zSig; in float32_div() local
1998 aSig = extractFloat32Frac( a ); in float32_div()
2006 if ( aSig ) return propagateFloat32NaN( a, b STATUS_VAR ); in float32_div()
2020 if ( ( aExp | aSig ) == 0 ) { in float32_div()
2030 if ( aSig == 0 ) return packFloat32( zSign, 0, 0 ); in float32_div()
2031 normalizeFloat32Subnormal( aSig, &aExp, &aSig ); in float32_div()
2034 aSig = ( aSig | 0x00800000 )<<7; in float32_div()
2036 if ( bSig <= ( aSig + aSig ) ) { in float32_div()
2037 aSig >>= 1; in float32_div()
2040 zSig = ( ( (uint64_t) aSig )<<32 ) / bSig; in float32_div()
2042 zSig |= ( (uint64_t) bSig * zSig != ( (uint64_t) aSig )<<32 ); in float32_div()
2058 uint32_t aSig, bSig; in float32_rem() local
2066 aSig = extractFloat32Frac( a ); in float32_rem()
2072 if ( aSig || ( ( bExp == 0xFF ) && bSig ) ) { in float32_rem()
2090 if ( aSig == 0 ) return a; in float32_rem()
2091 normalizeFloat32Subnormal( aSig, &aExp, &aSig ); in float32_rem()
2094 aSig |= 0x00800000; in float32_rem()
2097 aSig <<= 8; in float32_rem()
2101 aSig >>= 1; in float32_rem()
2103 q = ( bSig <= aSig ); in float32_rem()
2104 if ( q ) aSig -= bSig; in float32_rem()
2106 q = ( ( (uint64_t) aSig )<<32 ) / bSig; in float32_rem()
2109 aSig = ( ( aSig>>1 )<<( expDiff - 1 ) ) - bSig * q; in float32_rem()
2112 aSig >>= 2; in float32_rem()
2117 if ( bSig <= aSig ) aSig -= bSig; in float32_rem()
2118 aSig64 = ( (uint64_t) aSig )<<40; in float32_rem()
2132 aSig = ( ( aSig64>>33 )<<( expDiff - 1 ) ) - bSig * q; in float32_rem()
2135 alternateASig = aSig; in float32_rem()
2137 aSig -= bSig; in float32_rem()
2138 } while ( 0 <= (int32_t) aSig ); in float32_rem()
2139 sigMean = aSig + alternateASig; in float32_rem()
2141 aSig = alternateASig; in float32_rem()
2143 zSign = ( (int32_t) aSig < 0 ); in float32_rem()
2144 if ( zSign ) aSig = - aSig; in float32_rem()
2145 return normalizeRoundAndPackFloat32( aSign ^ zSign, bExp, aSig STATUS_VAR ); in float32_rem()
2159 uint32_t aSig, zSig; in float32_sqrt() local
2163 aSig = extractFloat32Frac( a ); in float32_sqrt()
2167 if ( aSig ) return propagateFloat32NaN( a, float32_zero STATUS_VAR ); in float32_sqrt()
2173 if ( ( aExp | aSig ) == 0 ) return a; in float32_sqrt()
2178 if ( aSig == 0 ) return float32_zero; in float32_sqrt()
2179 normalizeFloat32Subnormal( aSig, &aExp, &aSig ); in float32_sqrt()
2182 aSig = ( aSig | 0x00800000 )<<8; in float32_sqrt()
2183 zSig = estimateSqrt32( aExp, aSig ) + 2; in float32_sqrt()
2189 aSig >>= aExp & 1; in float32_sqrt()
2191 rem = ( ( (uint64_t) aSig )<<32 ) - term; in float32_sqrt()
2245 uint32_t aSig; in float32_exp2() local
2250 aSig = extractFloat32Frac( a ); in float32_exp2()
2255 if ( aSig ) return propagateFloat32NaN( a, float32_zero STATUS_VAR ); in float32_exp2()
2259 if (aSig == 0) return float32_one; in float32_exp2()
2293 uint32_t aSig, zSig, i; in float32_log2() local
2296 aSig = extractFloat32Frac( a ); in float32_log2()
2301 if ( aSig == 0 ) return packFloat32( 1, 0xFF, 0 ); in float32_log2()
2302 normalizeFloat32Subnormal( aSig, &aExp, &aSig ); in float32_log2()
2309 if ( aSig ) return propagateFloat32NaN( a, float32_zero STATUS_VAR ); in float32_log2()
2314 aSig |= 0x00800000; in float32_log2()
2319 aSig = ( (uint64_t)aSig * aSig ) >> 23; in float32_log2()
2320 if ( aSig & 0x01000000 ) { in float32_log2()
2321 aSig >>= 1; in float32_log2()
2558 uint64_t aSig; in float64_to_int32() local
2561 aSig = extractFloat64Frac( a ); in float64_to_int32()
2564 if ( ( aExp == 0x7FF ) && aSig ) aSign = 0; in float64_to_int32()
2565 if ( aExp ) aSig |= LIT64( 0x0010000000000000 ); in float64_to_int32()
2567 if ( 0 < shiftCount ) shift64RightJamming( aSig, shiftCount, &aSig ); in float64_to_int32()
2568 return roundAndPackInt32( aSign, aSig STATUS_VAR ); in float64_to_int32()
2586 uint64_t aSig, savedASig; in float64_to_int32_round_to_zero() local
2590 aSig = extractFloat64Frac( a ); in float64_to_int32_round_to_zero()
2594 if ( ( aExp == 0x7FF ) && aSig ) aSign = 0; in float64_to_int32_round_to_zero()
2598 if ( aExp || aSig ) STATUS(float_exception_flags) |= float_flag_inexact; in float64_to_int32_round_to_zero()
2601 aSig |= LIT64( 0x0010000000000000 ); in float64_to_int32_round_to_zero()
2603 savedASig = aSig; in float64_to_int32_round_to_zero()
2604 aSig >>= shiftCount; in float64_to_int32_round_to_zero()
2605 z = aSig; in float64_to_int32_round_to_zero()
2612 if ( ( aSig<<shiftCount ) != savedASig ) { in float64_to_int32_round_to_zero()
2633 uint64_t aSig, savedASig; in float64_to_int16_round_to_zero() local
2636 aSig = extractFloat64Frac( a ); in float64_to_int16_round_to_zero()
2640 if ( ( aExp == 0x7FF ) && aSig ) { in float64_to_int16_round_to_zero()
2646 if ( aExp || aSig ) { in float64_to_int16_round_to_zero()
2651 aSig |= LIT64( 0x0010000000000000 ); in float64_to_int16_round_to_zero()
2653 savedASig = aSig; in float64_to_int16_round_to_zero()
2654 aSig >>= shiftCount; in float64_to_int16_round_to_zero()
2655 z = aSig; in float64_to_int16_round_to_zero()
2664 if ( ( aSig<<shiftCount ) != savedASig ) { in float64_to_int16_round_to_zero()
2684 uint64_t aSig, aSigExtra; in float64_to_int64() local
2687 aSig = extractFloat64Frac( a ); in float64_to_int64()
2690 if ( aExp ) aSig |= LIT64( 0x0010000000000000 ); in float64_to_int64()
2697 && ( aSig != LIT64( 0x0010000000000000 ) ) ) in float64_to_int64()
2704 aSig <<= - shiftCount; in float64_to_int64()
2707 shift64ExtraRightJamming( aSig, 0, shiftCount, &aSig, &aSigExtra ); in float64_to_int64()
2709 return roundAndPackInt64( aSign, aSig, aSigExtra STATUS_VAR ); in float64_to_int64()
2727 uint64_t aSig; in float64_to_int64_round_to_zero() local
2731 aSig = extractFloat64Frac( a ); in float64_to_int64_round_to_zero()
2734 if ( aExp ) aSig |= LIT64( 0x0010000000000000 ); in float64_to_int64_round_to_zero()
2742 && ( aSig != LIT64( 0x0010000000000000 ) ) ) in float64_to_int64_round_to_zero()
2749 z = aSig<<shiftCount; in float64_to_int64_round_to_zero()
2753 if ( aExp | aSig ) STATUS(float_exception_flags) |= float_flag_inexact; in float64_to_int64_round_to_zero()
2756 z = aSig>>( - shiftCount ); in float64_to_int64_round_to_zero()
2757 if ( (uint64_t) ( aSig<<( shiftCount & 63 ) ) ) { in float64_to_int64_round_to_zero()
2777 uint64_t aSig; in float64_to_float32() local
2781 aSig = extractFloat64Frac( a ); in float64_to_float32()
2785 if ( aSig ) return commonNaNToFloat32( float64ToCommonNaN( a STATUS_VAR ) STATUS_VAR ); in float64_to_float32()
2788 shift64RightJamming( aSig, 22, &aSig ); in float64_to_float32()
2789 zSig = aSig; in float64_to_float32()
2822 uint32_t aSig; in float16_to_float32() local
2826 aSig = extractFloat16Frac(a); in float16_to_float32()
2829 if (aSig) { in float16_to_float32()
2832 return packFloat32(aSign, 0xff, aSig << 13); in float16_to_float32()
2837 if (aSig == 0) { in float16_to_float32()
2841 shiftCount = countLeadingZeros32( aSig ) - 21; in float16_to_float32()
2842 aSig = aSig << shiftCount; in float16_to_float32()
2845 return packFloat32( aSign, aExp + 0x70, aSig << 13); in float16_to_float32()
2852 uint32_t aSig; in float32_to_float16() local
2858 aSig = extractFloat32Frac( a ); in float32_to_float16()
2862 if (aSig) { in float32_to_float16()
2877 if (aExp == 0 && aSig == 0) { in float32_to_float16()
2881 aSig |= 0x00800000; in float32_to_float16()
2891 if (aSig & mask) { in float32_to_float16()
2897 if ((aSig & mask) == increment) { in float32_to_float16()
2898 increment = aSig & (increment << 1); in float32_to_float16()
2911 aSig += increment; in float32_to_float16()
2912 if (aSig >= 0x01000000) { in float32_to_float16()
2913 aSig >>= 1; in float32_to_float16()
2936 aSig >>= -14 - aExp; in float32_to_float16()
2939 return packFloat16(aSign, aExp + 14, aSig >> 13); in float32_to_float16()
2955 uint64_t aSig; in float64_to_floatx80() local
2958 aSig = extractFloat64Frac( a ); in float64_to_floatx80()
2962 if ( aSig ) return commonNaNToFloatx80( float64ToCommonNaN( a STATUS_VAR ) STATUS_VAR ); in float64_to_floatx80()
2966 if ( aSig == 0 ) return packFloatx80( aSign, 0, 0 ); in float64_to_floatx80()
2967 normalizeFloat64Subnormal( aSig, &aExp, &aSig ); in float64_to_floatx80()
2971 aSign, aExp + 0x3C00, ( aSig | LIT64( 0x0010000000000000 ) )<<11 ); in float64_to_floatx80()
2990 uint64_t aSig, zSig0, zSig1; in float64_to_float128() local
2993 aSig = extractFloat64Frac( a ); in float64_to_float128()
2997 if ( aSig ) return commonNaNToFloat128( float64ToCommonNaN( a STATUS_VAR ) STATUS_VAR ); in float64_to_float128()
3001 if ( aSig == 0 ) return packFloat128( aSign, 0, 0, 0 ); in float64_to_float128()
3002 normalizeFloat64Subnormal( aSig, &aExp, &aSig ); in float64_to_float128()
3005 shift128Right( aSig, 0, 4, &zSig0, &zSig1 ); in float64_to_float128()
3096 uint64_t aSig, bSig, zSig; in addFloat64Sigs() local
3099 aSig = extractFloat64Frac( a ); in addFloat64Sigs()
3104 aSig <<= 9; in addFloat64Sigs()
3108 if ( aSig ) return propagateFloat64NaN( a, b STATUS_VAR ); in addFloat64Sigs()
3129 aSig |= LIT64( 0x2000000000000000 ); in addFloat64Sigs()
3131 shift64RightJamming( aSig, - expDiff, &aSig ); in addFloat64Sigs()
3136 if ( aSig | bSig ) return propagateFloat64NaN( a, b STATUS_VAR ); in addFloat64Sigs()
3141 if (aSig | bSig) { in addFloat64Sigs()
3146 return packFloat64( zSign, 0, ( aSig + bSig )>>9 ); in addFloat64Sigs()
3148 zSig = LIT64( 0x4000000000000000 ) + aSig + bSig; in addFloat64Sigs()
3152 aSig |= LIT64( 0x2000000000000000 ); in addFloat64Sigs()
3153 zSig = ( aSig + bSig )<<1; in addFloat64Sigs()
3156 zSig = aSig + bSig; in addFloat64Sigs()
3175 uint64_t aSig, bSig, zSig; in subFloat64Sigs() local
3178 aSig = extractFloat64Frac( a ); in subFloat64Sigs()
3183 aSig <<= 10; in subFloat64Sigs()
3188 if ( aSig | bSig ) return propagateFloat64NaN( a, b STATUS_VAR ); in subFloat64Sigs()
3196 if ( bSig < aSig ) goto aBigger; in subFloat64Sigs()
3197 if ( aSig < bSig ) goto bBigger; in subFloat64Sigs()
3208 aSig |= LIT64( 0x4000000000000000 ); in subFloat64Sigs()
3210 shift64RightJamming( aSig, - expDiff, &aSig ); in subFloat64Sigs()
3213 zSig = bSig - aSig; in subFloat64Sigs()
3219 if ( aSig ) return propagateFloat64NaN( a, b STATUS_VAR ); in subFloat64Sigs()
3229 aSig |= LIT64( 0x4000000000000000 ); in subFloat64Sigs()
3231 zSig = aSig - bSig; in subFloat64Sigs()
3295 uint64_t aSig, bSig, zSig0, zSig1; in float64_mul() local
3300 aSig = extractFloat64Frac( a ); in float64_mul()
3308 if ( aSig || ( ( bExp == 0x7FF ) && bSig ) ) { in float64_mul()
3319 if ( ( aExp | aSig ) == 0 ) { in float64_mul()
3326 if ( aSig == 0 ) return packFloat64( zSign, 0, 0 ); in float64_mul()
3327 normalizeFloat64Subnormal( aSig, &aExp, &aSig ); in float64_mul()
3334 aSig = ( aSig | LIT64( 0x0010000000000000 ) )<<10; in float64_mul()
3336 mul64To128( aSig, bSig, &zSig0, &zSig1 ); in float64_mul()
3356 uint64_t aSig, bSig, zSig; in float64_div() local
3362 aSig = extractFloat64Frac( a ); in float64_div()
3370 if ( aSig ) return propagateFloat64NaN( a, b STATUS_VAR ); in float64_div()
3384 if ( ( aExp | aSig ) == 0 ) { in float64_div()
3394 if ( aSig == 0 ) return packFloat64( zSign, 0, 0 ); in float64_div()
3395 normalizeFloat64Subnormal( aSig, &aExp, &aSig ); in float64_div()
3398 aSig = ( aSig | LIT64( 0x0010000000000000 ) )<<10; in float64_div()
3400 if ( bSig <= ( aSig + aSig ) ) { in float64_div()
3401 aSig >>= 1; in float64_div()
3404 zSig = estimateDiv128To64( aSig, 0, bSig ); in float64_div()
3407 sub128( aSig, 0, term0, term1, &rem0, &rem1 ); in float64_div()
3428 uint64_t aSig, bSig; in float64_rem() local
3434 aSig = extractFloat64Frac( a ); in float64_rem()
3440 if ( aSig || ( ( bExp == 0x7FF ) && bSig ) ) { in float64_rem()
3458 if ( aSig == 0 ) return a; in float64_rem()
3459 normalizeFloat64Subnormal( aSig, &aExp, &aSig ); in float64_rem()
3462 aSig = ( aSig | LIT64( 0x0010000000000000 ) )<<11; in float64_rem()
3466 aSig >>= 1; in float64_rem()
3468 q = ( bSig <= aSig ); in float64_rem()
3469 if ( q ) aSig -= bSig; in float64_rem()
3472 q = estimateDiv128To64( aSig, 0, bSig ); in float64_rem()
3474 aSig = - ( ( bSig>>2 ) * q ); in float64_rem()
3479 q = estimateDiv128To64( aSig, 0, bSig ); in float64_rem()
3483 aSig = ( ( aSig>>1 )<<( expDiff - 1 ) ) - bSig * q; in float64_rem()
3486 aSig >>= 2; in float64_rem()
3490 alternateASig = aSig; in float64_rem()
3492 aSig -= bSig; in float64_rem()
3493 } while ( 0 <= (int64_t) aSig ); in float64_rem()
3494 sigMean = aSig + alternateASig; in float64_rem()
3496 aSig = alternateASig; in float64_rem()
3498 zSign = ( (int64_t) aSig < 0 ); in float64_rem()
3499 if ( zSign ) aSig = - aSig; in float64_rem()
3500 return normalizeRoundAndPackFloat64( aSign ^ zSign, bExp, aSig STATUS_VAR ); in float64_rem()
3514 uint64_t aSig, zSig, doubleZSig; in float64_sqrt() local
3518 aSig = extractFloat64Frac( a ); in float64_sqrt()
3522 if ( aSig ) return propagateFloat64NaN( a, a STATUS_VAR ); in float64_sqrt()
3528 if ( ( aExp | aSig ) == 0 ) return a; in float64_sqrt()
3533 if ( aSig == 0 ) return float64_zero; in float64_sqrt()
3534 normalizeFloat64Subnormal( aSig, &aExp, &aSig ); in float64_sqrt()
3537 aSig |= LIT64( 0x0010000000000000 ); in float64_sqrt()
3538 zSig = estimateSqrt32( aExp, aSig>>21 ); in float64_sqrt()
3539 aSig <<= 9 - ( aExp & 1 ); in float64_sqrt()
3540 zSig = estimateDiv128To64( aSig, 0, zSig<<32 ) + ( zSig<<30 ); in float64_sqrt()
3544 sub128( aSig, 0, term0, term1, &rem0, &rem1 ); in float64_sqrt()
3565 uint64_t aSig, aSig0, aSig1, zSig, i; in float64_log2() local
3568 aSig = extractFloat64Frac( a ); in float64_log2()
3573 if ( aSig == 0 ) return packFloat64( 1, 0x7FF, 0 ); in float64_log2()
3574 normalizeFloat64Subnormal( aSig, &aExp, &aSig ); in float64_log2()
3581 if ( aSig ) return propagateFloat64NaN( a, float64_zero STATUS_VAR ); in float64_log2()
3586 aSig |= LIT64( 0x0010000000000000 ); in float64_log2()
3590 mul64To128( aSig, aSig, &aSig0, &aSig1 ); in float64_log2()
3591 aSig = ( aSig0 << 12 ) | ( aSig1 >> 52 ); in float64_log2()
3592 if ( aSig & LIT64( 0x0020000000000000 ) ) { in float64_log2()
3593 aSig >>= 1; in float64_log2()
3835 uint64_t aSig; in floatx80_to_int32() local
3837 aSig = extractFloatx80Frac( a ); in floatx80_to_int32()
3840 if ( ( aExp == 0x7FFF ) && (uint64_t) ( aSig<<1 ) ) aSign = 0; in floatx80_to_int32()
3843 shift64RightJamming( aSig, shiftCount, &aSig ); in floatx80_to_int32()
3844 return roundAndPackInt32( aSign, aSig STATUS_VAR ); in floatx80_to_int32()
3862 uint64_t aSig, savedASig; in floatx80_to_int32_round_to_zero() local
3865 aSig = extractFloatx80Frac( a ); in floatx80_to_int32_round_to_zero()
3869 if ( ( aExp == 0x7FFF ) && (uint64_t) ( aSig<<1 ) ) aSign = 0; in floatx80_to_int32_round_to_zero()
3873 if ( aExp || aSig ) STATUS(float_exception_flags) |= float_flag_inexact; in floatx80_to_int32_round_to_zero()
3877 savedASig = aSig; in floatx80_to_int32_round_to_zero()
3878 aSig >>= shiftCount; in floatx80_to_int32_round_to_zero()
3879 z = aSig; in floatx80_to_int32_round_to_zero()
3886 if ( ( aSig<<shiftCount ) != savedASig ) { in floatx80_to_int32_round_to_zero()
3907 uint64_t aSig, aSigExtra; in floatx80_to_int64() local
3909 aSig = extractFloatx80Frac( a ); in floatx80_to_int64()
3918 && ( aSig != LIT64( 0x8000000000000000 ) ) ) in floatx80_to_int64()
3927 shift64ExtraRightJamming( aSig, 0, shiftCount, &aSig, &aSigExtra ); in floatx80_to_int64()
3929 return roundAndPackInt64( aSign, aSig, aSigExtra STATUS_VAR ); in floatx80_to_int64()
3947 uint64_t aSig; in floatx80_to_int64_round_to_zero() local
3950 aSig = extractFloatx80Frac( a ); in floatx80_to_int64_round_to_zero()
3955 aSig &= LIT64( 0x7FFFFFFFFFFFFFFF ); in floatx80_to_int64_round_to_zero()
3956 if ( ( a.high != 0xC03E ) || aSig ) { in floatx80_to_int64_round_to_zero()
3958 if ( ! aSign || ( ( aExp == 0x7FFF ) && aSig ) ) { in floatx80_to_int64_round_to_zero()
3965 if ( aExp | aSig ) STATUS(float_exception_flags) |= float_flag_inexact; in floatx80_to_int64_round_to_zero()
3968 z = aSig>>( - shiftCount ); in floatx80_to_int64_round_to_zero()
3969 if ( (uint64_t) ( aSig<<( shiftCount & 63 ) ) ) { in floatx80_to_int64_round_to_zero()
3988 uint64_t aSig; in floatx80_to_float32() local
3990 aSig = extractFloatx80Frac( a ); in floatx80_to_float32()
3994 if ( (uint64_t) ( aSig<<1 ) ) { in floatx80_to_float32()
3999 shift64RightJamming( aSig, 33, &aSig ); in floatx80_to_float32()
4000 if ( aExp || aSig ) aExp -= 0x3F81; in floatx80_to_float32()
4001 return roundAndPackFloat32( aSign, aExp, aSig STATUS_VAR ); in floatx80_to_float32()
4016 uint64_t aSig, zSig; in floatx80_to_float64() local
4018 aSig = extractFloatx80Frac( a ); in floatx80_to_float64()
4022 if ( (uint64_t) ( aSig<<1 ) ) { in floatx80_to_float64()
4027 shift64RightJamming( aSig, 1, &zSig ); in floatx80_to_float64()
4028 if ( aExp || aSig ) aExp -= 0x3C01; in floatx80_to_float64()
4046 uint64_t aSig, zSig0, zSig1; in floatx80_to_float128() local
4048 aSig = extractFloatx80Frac( a ); in floatx80_to_float128()
4051 if ( ( aExp == 0x7FFF ) && (uint64_t) ( aSig<<1 ) ) { in floatx80_to_float128()
4054 shift128Right( aSig<<1, 0, 16, &zSig0, &zSig1 ); in floatx80_to_float128()
4145 uint64_t aSig, bSig, zSig0, zSig1; in addFloatx80Sigs() local
4148 aSig = extractFloatx80Frac( a ); in addFloatx80Sigs()
4155 if ( (uint64_t) ( aSig<<1 ) ) return propagateFloatx80NaN( a, b STATUS_VAR ); in addFloatx80Sigs()
4168 shift64ExtraRightJamming( aSig, 0, - expDiff, &aSig, &zSig1 ); in addFloatx80Sigs()
4173 if ( (uint64_t) ( ( aSig | bSig )<<1 ) ) { in addFloatx80Sigs()
4179 zSig0 = aSig + bSig; in addFloatx80Sigs()
4187 zSig0 = aSig + bSig; in addFloatx80Sigs()
4211 uint64_t aSig, bSig, zSig0, zSig1; in subFloatx80Sigs() local
4215 aSig = extractFloatx80Frac( a ); in subFloatx80Sigs()
4223 if ( (uint64_t) ( ( aSig | bSig )<<1 ) ) { in subFloatx80Sigs()
4236 if ( bSig < aSig ) goto aBigger; in subFloatx80Sigs()
4237 if ( aSig < bSig ) goto bBigger; in subFloatx80Sigs()
4245 shift128RightJamming( aSig, 0, - expDiff, &aSig, &zSig1 ); in subFloatx80Sigs()
4247 sub128( bSig, 0, aSig, zSig1, &zSig0, &zSig1 ); in subFloatx80Sigs()
4253 if ( (uint64_t) ( aSig<<1 ) ) return propagateFloatx80NaN( a, b STATUS_VAR ); in subFloatx80Sigs()
4259 sub128( aSig, 0, bSig, zSig1, &zSig0, &zSig1 ); in subFloatx80Sigs()
4320 uint64_t aSig, bSig, zSig0, zSig1; in floatx80_mul() local
4323 aSig = extractFloatx80Frac( a ); in floatx80_mul()
4331 if ( (uint64_t) ( aSig<<1 ) in floatx80_mul()
4340 if ( ( aExp | aSig ) == 0 ) { in floatx80_mul()
4350 if ( aSig == 0 ) return packFloatx80( zSign, 0, 0 ); in floatx80_mul()
4351 normalizeFloatx80Subnormal( aSig, &aExp, &aSig ); in floatx80_mul()
4358 mul64To128( aSig, bSig, &zSig0, &zSig1 ); in floatx80_mul()
4379 uint64_t aSig, bSig, zSig0, zSig1; in floatx80_div() local
4383 aSig = extractFloatx80Frac( a ); in floatx80_div()
4391 if ( (uint64_t) ( aSig<<1 ) ) return propagateFloatx80NaN( a, b STATUS_VAR ); in floatx80_div()
4404 if ( ( aExp | aSig ) == 0 ) { in floatx80_div()
4417 if ( aSig == 0 ) return packFloatx80( zSign, 0, 0 ); in floatx80_div()
4418 normalizeFloatx80Subnormal( aSig, &aExp, &aSig ); in floatx80_div()
4422 if ( bSig <= aSig ) { in floatx80_div()
4423 shift128Right( aSig, 0, 1, &aSig, &rem1 ); in floatx80_div()
4426 zSig0 = estimateDiv128To64( aSig, rem1, bSig ); in floatx80_div()
4428 sub128( aSig, rem1, term0, term1, &rem0, &rem1 ); in floatx80_div()
6364 uint32_t aSig; in float32_scalbn() local
6367 aSig = extractFloat32Frac( a ); in float32_scalbn()
6372 if ( aSig ) { in float32_scalbn()
6378 aSig |= 0x00800000; in float32_scalbn()
6379 else if ( aSig == 0 ) in float32_scalbn()
6389 aSig <<= 7; in float32_scalbn()
6390 return normalizeRoundAndPackFloat32( aSign, aExp, aSig STATUS_VAR ); in float32_scalbn()
6397 uint64_t aSig; in float64_scalbn() local
6400 aSig = extractFloat64Frac( a ); in float64_scalbn()
6405 if ( aSig ) { in float64_scalbn()
6411 aSig |= LIT64( 0x0010000000000000 ); in float64_scalbn()
6412 else if ( aSig == 0 ) in float64_scalbn()
6422 aSig <<= 10; in float64_scalbn()
6423 return normalizeRoundAndPackFloat64( aSign, aExp, aSig STATUS_VAR ); in float64_scalbn()
6431 uint64_t aSig; in floatx80_scalbn() local
6433 aSig = extractFloatx80Frac( a ); in floatx80_scalbn()
6438 if ( aSig<<1 ) { in floatx80_scalbn()
6444 if (aExp == 0 && aSig == 0) in floatx80_scalbn()
6455 aSign, aExp, aSig, 0 STATUS_VAR ); in floatx80_scalbn()