亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? softfloat.c

?? linux-2.4.29操作系統(tǒng)的源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
the inexact exception raised if the abstract input cannot be representedexactly.  If the abstract value is too large, however, the overflow andinexact exceptions are raised and an infinity or maximal finite value isreturned.  If the abstract value is too small, the input value is rounded toa subnormal number, and the underflow and inexact exceptions are raised ifthe abstract input cannot be represented exactly as a subnormal double-precision floating-point number.    The input significand `zSig' has its binary point between bits 62and 61, which is 10 bits to the left of the usual location.  This shiftedsignificand must be normalized or smaller.  If `zSig' is not normalized,`zExp' must be 0; in that case, the result returned is a subnormal number,and it must not require rounding.  In the usual case that `zSig' isnormalized, `zExp' must be 1 less than the ``true'' floating-point exponent.The handling of underflow and overflow follows the IEC/IEEE Standard forBinary Floating-point Arithmetic.-------------------------------------------------------------------------------*/static float64 roundAndPackFloat64( flag zSign, int16 zExp, bits64 zSig ){    int8 roundingMode;    flag roundNearestEven;    int16 roundIncrement, roundBits;    flag isTiny;    roundingMode = float_rounding_mode;    roundNearestEven = ( roundingMode == float_round_nearest_even );    roundIncrement = 0x200;    if ( ! roundNearestEven ) {        if ( roundingMode == float_round_to_zero ) {            roundIncrement = 0;        }        else {            roundIncrement = 0x3FF;            if ( zSign ) {                if ( roundingMode == float_round_up ) roundIncrement = 0;            }            else {                if ( roundingMode == float_round_down ) roundIncrement = 0;            }        }    }    roundBits = zSig & 0x3FF;    if ( 0x7FD <= (bits16) zExp ) {        if (    ( 0x7FD < zExp )             || (    ( zExp == 0x7FD )                  && ( (sbits64) ( zSig + roundIncrement ) < 0 ) )           ) {            //register int lr = __builtin_return_address(0);            //printk("roundAndPackFloat64 called from 0x%08x\n",lr);            float_raise( float_flag_overflow | float_flag_inexact );            return packFloat64( zSign, 0x7FF, 0 ) - ( roundIncrement == 0 );        }        if ( zExp < 0 ) {            isTiny =                   ( float_detect_tininess == float_tininess_before_rounding )                || ( zExp < -1 )                || ( zSig + roundIncrement < LIT64( 0x8000000000000000 ) );            shift64RightJamming( zSig, - zExp, &zSig );            zExp = 0;            roundBits = zSig & 0x3FF;            if ( isTiny && roundBits ) float_raise( float_flag_underflow );        }    }    if ( roundBits ) float_exception_flags |= float_flag_inexact;    zSig = ( zSig + roundIncrement )>>10;    zSig &= ~ ( ( ( roundBits ^ 0x200 ) == 0 ) & roundNearestEven );    if ( zSig == 0 ) zExp = 0;    return packFloat64( zSign, zExp, zSig );}/*-------------------------------------------------------------------------------Takes an abstract floating-point value having sign `zSign', exponent `zExp',and significand `zSig', and returns the proper double-precision floating-point value corresponding to the abstract input.  This routine is just like`roundAndPackFloat64' except that `zSig' does not have to be normalized inany way.  In all cases, `zExp' must be 1 less than the ``true'' floating-point exponent.-------------------------------------------------------------------------------*/static float64 normalizeRoundAndPackFloat64( flag zSign, int16 zExp, bits64 zSig ){    int8 shiftCount;    shiftCount = countLeadingZeros64( zSig ) - 1;    return roundAndPackFloat64( zSign, zExp - shiftCount, zSig<<shiftCount );}#ifdef FLOATX80/*-------------------------------------------------------------------------------Returns the fraction bits of the extended double-precision floating-pointvalue `a'.-------------------------------------------------------------------------------*/INLINE bits64 extractFloatx80Frac( floatx80 a ){    return a.low;}/*-------------------------------------------------------------------------------Returns the exponent bits of the extended double-precision floating-pointvalue `a'.-------------------------------------------------------------------------------*/INLINE int32 extractFloatx80Exp( floatx80 a ){    return a.high & 0x7FFF;}/*-------------------------------------------------------------------------------Returns the sign bit of the extended double-precision floating-point value`a'.-------------------------------------------------------------------------------*/INLINE flag extractFloatx80Sign( floatx80 a ){    return a.high>>15;}/*-------------------------------------------------------------------------------Normalizes the subnormal extended double-precision floating-point valuerepresented by the denormalized significand `aSig'.  The normalized exponentand significand are stored at the locations pointed to by `zExpPtr' and`zSigPtr', respectively.-------------------------------------------------------------------------------*/static void normalizeFloatx80Subnormal( bits64 aSig, int32 *zExpPtr, bits64 *zSigPtr ){    int8 shiftCount;    shiftCount = countLeadingZeros64( aSig );    *zSigPtr = aSig<<shiftCount;    *zExpPtr = 1 - shiftCount;}/*-------------------------------------------------------------------------------Packs the sign `zSign', exponent `zExp', and significand `zSig' into anextended double-precision floating-point value, returning the result.-------------------------------------------------------------------------------*/INLINE floatx80 packFloatx80( flag zSign, int32 zExp, bits64 zSig ){    floatx80 z;    z.low = zSig;    z.high = ( ( (bits16) zSign )<<15 ) + zExp;    return z;}/*-------------------------------------------------------------------------------Takes an abstract floating-point value having sign `zSign', exponent `zExp',and extended significand formed by the concatenation of `zSig0' and `zSig1',and returns the proper extended double-precision floating-point valuecorresponding to the abstract input.  Ordinarily, the abstract value isrounded and packed into the extended double-precision format, with theinexact exception raised if the abstract input cannot be representedexactly.  If the abstract value is too large, however, the overflow andinexact exceptions are raised and an infinity or maximal finite value isreturned.  If the abstract value is too small, the input value is rounded toa subnormal number, and the underflow and inexact exceptions are raised ifthe abstract input cannot be represented exactly as a subnormal extendeddouble-precision floating-point number.    If `roundingPrecision' is 32 or 64, the result is rounded to the samenumber of bits as single or double precision, respectively.  Otherwise, theresult is rounded to the full precision of the extended double-precisionformat.    The input significand must be normalized or smaller.  If the inputsignificand is not normalized, `zExp' must be 0; in that case, the resultreturned is a subnormal number, and it must not require rounding.  Thehandling of underflow and overflow follows the IEC/IEEE Standard for BinaryFloating-point Arithmetic.-------------------------------------------------------------------------------*/static floatx80 roundAndPackFloatx80(     int8 roundingPrecision, flag zSign, int32 zExp, bits64 zSig0, bits64 zSig1 ){    int8 roundingMode;    flag roundNearestEven, increment, isTiny;    int64 roundIncrement, roundMask, roundBits;    roundingMode = float_rounding_mode;    roundNearestEven = ( roundingMode == float_round_nearest_even );    if ( roundingPrecision == 80 ) goto precision80;    if ( roundingPrecision == 64 ) {        roundIncrement = LIT64( 0x0000000000000400 );        roundMask = LIT64( 0x00000000000007FF );    }    else if ( roundingPrecision == 32 ) {        roundIncrement = LIT64( 0x0000008000000000 );        roundMask = LIT64( 0x000000FFFFFFFFFF );    }    else {        goto precision80;    }    zSig0 |= ( zSig1 != 0 );    if ( ! roundNearestEven ) {        if ( roundingMode == float_round_to_zero ) {            roundIncrement = 0;        }        else {            roundIncrement = roundMask;            if ( zSign ) {                if ( roundingMode == float_round_up ) roundIncrement = 0;            }            else {                if ( roundingMode == float_round_down ) roundIncrement = 0;            }        }    }    roundBits = zSig0 & roundMask;    if ( 0x7FFD <= (bits32) ( zExp - 1 ) ) {        if (    ( 0x7FFE < zExp )             || ( ( zExp == 0x7FFE ) && ( zSig0 + roundIncrement < zSig0 ) )           ) {            goto overflow;        }        if ( zExp <= 0 ) {            isTiny =                   ( float_detect_tininess == float_tininess_before_rounding )                || ( zExp < 0 )                || ( zSig0 <= zSig0 + roundIncrement );            shift64RightJamming( zSig0, 1 - zExp, &zSig0 );            zExp = 0;            roundBits = zSig0 & roundMask;            if ( isTiny && roundBits ) float_raise( float_flag_underflow );            if ( roundBits ) float_exception_flags |= float_flag_inexact;            zSig0 += roundIncrement;            if ( (sbits64) zSig0 < 0 ) zExp = 1;            roundIncrement = roundMask + 1;            if ( roundNearestEven && ( roundBits<<1 == roundIncrement ) ) {                roundMask |= roundIncrement;            }            zSig0 &= ~ roundMask;            return packFloatx80( zSign, zExp, zSig0 );        }    }    if ( roundBits ) float_exception_flags |= float_flag_inexact;    zSig0 += roundIncrement;    if ( zSig0 < roundIncrement ) {        ++zExp;        zSig0 = LIT64( 0x8000000000000000 );    }    roundIncrement = roundMask + 1;    if ( roundNearestEven && ( roundBits<<1 == roundIncrement ) ) {        roundMask |= roundIncrement;    }    zSig0 &= ~ roundMask;    if ( zSig0 == 0 ) zExp = 0;    return packFloatx80( zSign, zExp, zSig0 ); precision80:    increment = ( (sbits64) zSig1 < 0 );    if ( ! roundNearestEven ) {        if ( roundingMode == float_round_to_zero ) {            increment = 0;        }        else {            if ( zSign ) {                increment = ( roundingMode == float_round_down ) && zSig1;            }            else {                increment = ( roundingMode == float_round_up ) && zSig1;            }        }    }    if ( 0x7FFD <= (bits32) ( zExp - 1 ) ) {        if (    ( 0x7FFE < zExp )             || (    ( zExp == 0x7FFE )                  && ( zSig0 == LIT64( 0xFFFFFFFFFFFFFFFF ) )                  && increment                )           ) {            roundMask = 0; overflow:            float_raise( float_flag_overflow | float_flag_inexact );            if (    ( roundingMode == float_round_to_zero )                 || ( zSign && ( roundingMode == float_round_up ) )                 || ( ! zSign && ( roundingMode == float_round_down ) )               ) {                return packFloatx80( zSign, 0x7FFE, ~ roundMask );            }            return packFloatx80( zSign, 0x7FFF, LIT64( 0x8000000000000000 ) );        }        if ( zExp <= 0 ) {            isTiny =                   ( float_detect_tininess == float_tininess_before_rounding )                || ( zExp < 0 )                || ! increment                || ( zSig0 < LIT64( 0xFFFFFFFFFFFFFFFF ) );            shift64ExtraRightJamming( zSig0, zSig1, 1 - zExp, &zSig0, &zSig1 );            zExp = 0;            if ( isTiny && zSig1 ) float_raise( float_flag_underflow );            if ( zSig1 ) float_exception_flags |= float_flag_inexact;            if ( roundNearestEven ) {                increment = ( (sbits64) zSig1 < 0 );            }            else {                if ( zSign ) {                    increment = ( roundingMode == float_round_down ) && zSig1;                }                else {                    increment = ( roundingMode == float_round_up ) && zSig1;                }            }            if ( increment ) {                ++zSig0;                zSig0 &= ~ ( ( zSig1 + zSig1 == 0 ) & roundNearestEven );                if ( (sbits64) zSig0 < 0 ) zExp = 1;            }            return packFloatx80( zSign, zExp, zSig0 );        }    }    if ( zSig1 ) float_exception_flags |= float_flag_inexact;    if ( increment ) {        ++zSig0;        if ( zSig0 == 0 ) {            ++zExp;            zSig0 = LIT64( 0x8000000000000000 );        }        else {            zSig0 &= ~ ( ( zSig1 + zSig1 == 0 ) & roundNearestEven );        }    }    else {        if ( zSig0 == 0 ) zExp = 0;    }        return packFloatx80( zSign, zExp, zSig0 );}/*-------------------------------------------------------------------------------Takes an abstract floating-point value having sign `zSign', exponent`zExp', and significand formed by the concatenation of `zSig0' and `zSig1',and returns the proper extended double-precision floating-point valuecorresponding to the abstract input.  This routine is just like`roundAndPackFloatx80' except that the input significand does not have to benormalized.-------------------------------------------------------------------------------*/static floatx80 normalizeRoundAndPackFloatx80(     int8 roundingPrecision, flag zSign, int32 zExp, bits64 zSig0, bits64 zSig1 ){    int8 shiftCount;    if ( zSig0 == 0 ) {        zSig0 = zSig1;        zSig1 = 0;        zExp -= 64;    }    shiftCount = countLeadingZeros64( zSig0 );    shortShift128Left( zSig0, zSig1, shiftCount, &zSig0, &zSig1 );    zExp -= shiftCount;    return        roundAndPackFloatx80( roundingPrecision, zSign, zExp, zSig0, zSig1 );

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情中文不卡| 91麻豆精品国产91久久久久| 欧美高清精品3d| 日本一区二区免费在线| 日韩成人伦理电影在线观看| 91丝袜美女网| 国产日韩欧美不卡| 日韩av中文字幕一区二区三区| eeuss鲁片一区二区三区| 欧美成人国产一区二区| 亚洲综合久久av| 成人免费看的视频| 精品美女在线播放| 日韩精品乱码免费| 欧美三级电影一区| 中文字幕一区日韩精品欧美| 麻豆91免费观看| 欧美日韩国产在线播放网站| 国产精品色噜噜| 国产精品1区2区3区在线观看| 日韩一卡二卡三卡| 午夜久久电影网| 欧美午夜寂寞影院| 亚洲免费在线视频| 99国产精品视频免费观看| 国产日韩精品视频一区| 国产在线精品免费| 欧美精品一区二区久久婷婷| 免费精品视频在线| 国产69精品一区二区亚洲孕妇| 中文字幕欧美三区| 在线成人av网站| 久久精品99国产精品| 久久午夜免费电影| 大陆成人av片| 亚洲精品水蜜桃| 欧美福利视频一区| 国产老妇另类xxxxx| 亚洲女人小视频在线观看| 免费在线看一区| 成人免费观看视频| 国产日本一区二区| 国产成人精品免费视频网站| 中文字幕国产一区二区| 性做久久久久久久久| 欧美成人三级电影在线| 成人国产免费视频| 日韩av一区二| 国产亚洲成aⅴ人片在线观看| 99re8在线精品视频免费播放| 亚洲主播在线观看| 国产亚洲精品aa| 在线视频欧美精品| 国产美女主播视频一区| 亚洲另类一区二区| 日韩一区二区免费电影| 成人免费毛片aaaaa**| 日韩影院在线观看| 一区二区高清在线| 中文字幕国产一区| 久久亚洲精精品中文字幕早川悠里| 精品99一区二区三区| 国产乱一区二区| 五月婷婷综合网| 天使萌一区二区三区免费观看| 久久丁香综合五月国产三级网站 | 国产精品少妇自拍| 狠狠色综合色综合网络| 欧美三日本三级三级在线播放| 亚洲成人av福利| 欧美成人伊人久久综合网| 国产河南妇女毛片精品久久久| 国产精品伦一区| 欧美日韩中文一区| 美腿丝袜亚洲综合| 欧美性受极品xxxx喷水| 91在线观看美女| 成人性生交大片免费看中文| 免费在线观看日韩欧美| 免费高清成人在线| 国产精品日产欧美久久久久| 91精品国产高清一区二区三区蜜臀| 色婷婷综合在线| 色av综合在线| 精品国产免费人成在线观看| 国产精品乱子久久久久| 国产精品一区二区果冻传媒| 欧美日韩亚洲高清一区二区| 一区二区国产盗摄色噜噜| 成人妖精视频yjsp地址| 精品免费国产一区二区三区四区| 亚洲一二三四区| 在线亚洲一区观看| 一区二区三区高清在线| 欧美性生交片4| 国产美女在线观看一区| 国产成人精品免费| 日韩精品一区二区三区在线| 午夜成人在线视频| 欧美日韩一级视频| 午夜激情一区二区三区| 欧美撒尿777hd撒尿| 亚洲欧美精品午睡沙发| 91猫先生在线| 亚洲精品国产第一综合99久久| proumb性欧美在线观看| 亚洲欧美一区二区视频| 99久久精品免费看| 国产精品久久久久久亚洲毛片| 国产不卡在线一区| 中文字幕在线不卡一区| 成人97人人超碰人人99| 亚洲黄色录像片| 欧美精品777| 精品一区二区综合| 国产情人综合久久777777| 成人av网址在线| 怡红院av一区二区三区| 欧美在线观看视频一区二区| 午夜精品一区二区三区免费视频 | 成人黄色片在线观看| 综合久久一区二区三区| 欧美日韩一级片在线观看| 奇米色777欧美一区二区| 久久网站热最新地址| 91社区在线播放| 日韩国产欧美三级| 欧美三级电影网| 亚洲欧洲一区二区在线播放| 精品一区二区三区日韩| 欧美日韩视频在线第一区 | 国产精品女同互慰在线看| 国产一区二区三区电影在线观看| 亚洲丝袜自拍清纯另类| 日韩欧美色综合网站| 在线观看亚洲成人| 91麻豆国产福利在线观看| 国产一区二区三区高清播放| 久久精品一区二区三区av| 国产精品456| 亚洲狠狠爱一区二区三区| 99riav一区二区三区| 中文字幕av资源一区| 激情五月激情综合网| 日韩一区二区免费电影| 日产精品久久久久久久性色| 欧美在线三级电影| www.性欧美| 日韩欧美亚洲国产另类| 午夜精品久久久久久久| 欧美日本乱大交xxxxx| 色综合天天综合色综合av| 性做久久久久久免费观看欧美| 91麻豆自制传媒国产之光| 99精品欧美一区二区三区小说| 人禽交欧美网站| 蜜桃久久久久久久| 老司机免费视频一区二区三区| 日韩成人av影视| 美脚の诱脚舐め脚责91| 久久精品国产久精国产| 精品一区二区免费视频| 国产自产高清不卡| 国产成人自拍高清视频在线免费播放| 国产一区二区三区免费观看| 国产美女精品一区二区三区| 极品美女销魂一区二区三区| 国产中文字幕一区| 国产二区国产一区在线观看| 成人精品国产福利| 一本在线高清不卡dvd| 在线观看免费亚洲| 欧美日韩一区二区三区视频| 欧美精品一级二级| 日韩欧美国产成人一区二区| 久久夜色精品一区| 亚洲国产精品av| 亚洲日本在线视频观看| 亚洲成人免费看| 美腿丝袜亚洲一区| 国产日韩欧美一区二区三区乱码 | 国产一区不卡视频| 国产aⅴ精品一区二区三区色成熟| fc2成人免费人成在线观看播放| 色婷婷精品大视频在线蜜桃视频| 欧美日韩一区 二区 三区 久久精品| 91麻豆精品久久久久蜜臀| 精品福利在线导航| 中文字幕在线不卡国产视频| 亚洲午夜激情网页| 久久福利视频一区二区| 成人在线一区二区三区| 欧美伊人精品成人久久综合97| 欧美一区二区视频观看视频| 久久久国产精品不卡| 亚洲精品日韩综合观看成人91| 天涯成人国产亚洲精品一区av| 极品瑜伽女神91| 91美女蜜桃在线| 日韩精品一区二区在线|