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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? math.c

?? TDK 6521 SOC 芯片 DEMO程序
?? C
?? 第 1 頁 / 共 4 頁
字號:
    if (v > 1)
    {                                   // Proper divisor.
       t.c[ HI ] = *u;                  // Get current MSB of dividend.

       if (*u >= v)
       {                                // MSB of quotient not zero (0).
          *u /= v;                      // Compute partial quotient.
          t.c[ HI ] -= *u * v;          // Subtract partial product from dividend.
       }
       else
          *u = 0;                       // MSB of quotient is zero (0).

       if (n > 1)
       {                                // Dividend at least two bytes wide.
          n--;
          do
          {                             // Now *u < v always.
             t.c[ LO ] = *++u;          // t = u-1:u.
             *u = t.i / v;              // u = t / v; Compute partial quotient.
             t.i -= *u * v;             // Subtract partial product from dividend.
             t.c[ HI ] = t.c[ LO ];     // 
          } while (--n);
       }
    }
}

#if EXTRAS
// Shift (in-place) n-byte 'x' to the right by 's' bits.
uint8r_t s_mask[] = { 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F };

void shift_right (uint8x_t *x, uint8_t n, uint8_t s)
{                                       // Shift right n-byte number right 's' bits.
    uint8_t carry, old_carry;

    s &= 0x07;
    old_carry = 0x00;

    while (n--)
    {
       carry = *x & s_mask[ s ];
       *x++ = old_carry << (8 - s) | (*x >> s);
       old_carry = carry;
    }
}
#endif // EXTRAS.

#if AUTOCAL && \
    (EQUATION != _1ELEMENT_3WIRE \
     && EQUATION != _2ELEMENT_4WIRE_DELTA \
     && EQUATION != _2ELEMENT_4WIRE_WYE)
// Calculates the absolute (positive) value of 'x'.
void abs_x (uint8x_t *x, uint8x_t *x0, uint8_t n)            
{                                       // Take absolute value of n-byte 'x0' to 'x'.          
    if (*x0 > 0x7F)
    {
        complement_x (x, x0, n);
        add_1 (x, n, 1);
    }
    else
        memcpy_xx (x, x0, n);
}

// Calculates the twos complement value of 'x'.
void complement_x (uint8x_t *x, uint8x_t *x0, uint8_t n)
{                                       // Take ones-complement of n-byte 'x0' to 'x'.
    while (n--)
        *x++ = *x0++ ^ 0xFF;
}
#endif // EXTRAS.

#if EEPROM && I2C_INT
#pragma save
#pragma NOAREGS
// returns the log base 2 of k
uint8_t log2 (uint16_t k) small reentrant
{
    uint8_t l = 0;
    
    if (0 == k)
       return (0xFFFF);

    while (0x0000 == (k & 0x8000))
    {
       k <<= 1;
       l++;
    }       
    return (15 - l);
}
#pragma restore
#endif // EEPROM.

#if EXTRAS
#pragma save
#pragma NOAREGS
// returns the maximum of a and b
uint32_t lmax (uint32_t a, uint32_t b) small reentrant
{
    return (a > b ? a : b);
}
#pragma restore

#pragma save
#pragma NOAREGS
// returns the minimum of a and b
uint32_t lmin (uint32_t a, uint32_t b) small reentrant
{
    return (a < b ? a : b);
}
#pragma restore
#endif // EXTRAS.

#if PROFILE || (PULSE_SOURCE && ABS_VALUE)
#pragma save
#pragma NOAREGS
// returns the absolute (positive) value of 'x'.
int32_t labsx (int32_t x) small reentrant
{
    return (x < 0 ? -x : x);
}
#pragma restore
#endif

#if PHASE_ANGLES
//  Domain of following equation is |tan(theta)| <= 1.
//
//  atan(tan(theta)) = -3/10 + 62 * tan(theta) - 100/6 * tan(theta)^2 degrees.
//  accurate to less than one degree (about 0.1 degree)
//
//  atan(y/x) = -3/10 + 62 * (y/x) - 100/6 * (y/x)^2 degrees.
//            = -3/10 + (y/x) * [62  - 100/6 * (y/x)] degrees.
//            = -3/10 + (y/x) * [62  - 50/3 *  (y/x)] degrees.
//
//  atan(y/x) * 1000  = [62000 - ((y * 1000 / x) * 50 / 3)] * y / x - 300 mDegrees.
//                    = [62000 - ((y * 50000 / x) / 3)] * y / x - 300 mDegrees.
//                    = [62000 -  (y * 16667 / x)] * y / x - 300 mDegrees.
//  
//  Scale y and x so that y < x < 2^16. 
//  
#define NINETY       90000
#define ONE_EIGHTY  180000
#define THREE_SIXTY 360000

uint32_t latan2 (int32_t sy, int32_t sx)
{                                       // Range (0, 360) degrees. 
    bool signY, signX, exchange;
    uint16_t *y, *x;
    uint32_t a;

    if (signY = (sy < 0))
       sy = -sy;
    
    if (signX = (sx < 0))
       sx = -sx;

    if (exchange = (sy > sx))
    {                                   // Exchange values.
       x = (uint16_t *) &sy;    y = (uint16_t *) &sx;
    }
    else
    {
       x = (uint16_t *) &sx;    y = (uint16_t *) &sy;
    }
                                        // Point to MSBs.
    if (0 == *x)
    {
       x++;  y++;                       // Point to 'real' MSBs.
    }
    
    if (0 == *x)
    {
       x++;  y++;                       // Point to 'real' MSBs.
    }
    
    a = (62000 - ((uint32_t) *y * 16667) / *x) * *y / *x - 300;
                                        // [0, 45] degrees.
    if (exchange)
       a = NINETY  - a;                 // (45, 90] degrees.

    if (signX)
       a = ONE_EIGHTY - a;              // (90, 180] degrees.

    if (signY)
       a = THREE_SIXTY - a;             // (0, -180) degrees.
 
    return (a);
}
#endif

#if 0
#if CALIBRATION
//---------------------------------------------------------------------------//
// Returns the 32-bit square root of 32-bit argument 'y'.
// The most  significant two bytes of result are the integer part,
// the least significant two bytes of result are the fractional part.
uint32_t sqrt4_4 (int32_t y)        // Sqrt (y << 32).
{                                       
    #if OUTPUTS_DATA_SPACE == OUTPUTS_IN_IDATA
    uint8_t idata x[8];
    #else
    uint8_t pdata x[8];
    #endif

    if (y < 0)                          // If noise, set to zero.
       return (0);  
    else
    {
       * (uint32i_t *) &x[0] = y;       // x = y scaled by 2^32.
       * (uint32i_t *) &x[4] = 0;       
       return (sqrt8_4 (x));             // Result is sqrt(y) scaled by 2^16.
    }
}
#endif // RMS_VALUES.
#endif

#if 0
#if VA_ELEMENT || VA_SUMS || CALIBRATION
//===========================================================================//
/*
    square = TWOto30;                   // = 2^30.

    square_root  = TWOto30;             // = 1000 0000 0000 0000 * 2^15.
    square += TWOto28 + square_root;    // = 1000 0000 0000 0000 * 2^15.
                                               
    square_root >>= 1;                  // = 0100 0000 0000 0000 * 2^15.
    square_root += TWOto28;             // = 0110 0000 0000 0000 * 2^15.
    square += TWOto26 + square_root;    // = 1100 0000 0000 0000 * 2^14.

    square_root >>= 1;                  // = 0011 0000 0000 0000 * 2^15.
    square_root += TWOto26;             // = 0011 1000 0000 0000 * 2^15.
    square += TWOto24 + square_root;    // = 1110 0000 0000 0000 * 2^13.

    square_root >>= 1;                  // = 0001 1100 0000 0000 * 2^15.
    square_root += TWOto24;             // = 0001 1110 0000 0000 * 2^15.
    square += TWOto22 + square_root;    // = 1111 0000 0000 0000 * 2^12.
    .............................................................................
*/

#define TWOto62 0x40
// Returns the 32-bit square root of the 64-bit argument 'x'.
uint32_t sqrt8_4 (uint8p_t *x) 
{
    uint8_t xdata square[8], square_root[8], square_tmp[8];
    uint8_t xdata TWOto2M[8];
    uint8_t M1;                                             // M + 1.

    memset_x (square, 0x00, sizeof (square));               // square = 0;
    memset_x (square_root, 0x00, sizeof (square_root));
                                                            // square_root = 0;
    if (x[0] >= TWOto62)
    {
       square[0]      = TWOto62;
       square_root[0] = TWOto62;                            // square_root * 2^31.
    }

    TWOto2M[0] = TWOto62;                                   // TWOto2M = 2^62.
    memset_x (&TWOto2M[1], 0x00, sizeof (TWOto2M) - 1);

    M1 = 31;
    do
    {
       memset_x (square_tmp, 0x00, sizeof (square_tmp));    // square_tmp  = 0.
       add8_8 (square_tmp, TWOto2M);                        // square_tmp += TWOto2M. 
       add8_8 (square_tmp, square_root);                    // square_tmp += square_root.
       add8_8 (square_tmp, square);                         // square_tmp += square.
       shift_right8_1 (square_root);                        // square_root >>= 1.
       
       if (memcmp_px (x, square_tmp, sizeof (square_tmp)) >= 0)
       {
          memcpy_xx (square, square_tmp, sizeof (square));
          add8_8 (square_root, TWOto2M);
       }

       shift_right8_2 (TWOto2M);                            // TWOto2M >>= 2.
    } while (--M1);

    shift_right8_1 (square_root);

    return (* (uint32_t *) &square_root[4]);
}

// Shift 64-bit 'x' right 1 bit.
#if MATH_FAST
void shift_right8_1 (uint8x_t *x)       // Shift right 8-byte number right 1-bit.
{
    uint8_t carry_a, carry_b;

    carry_a = *x << 7;      *x =           (*x >> 1);  x++;
    carry_b = *x << 7;      *x = carry_a | (*x >> 1);  x++;
    carry_a = *x << 7;      *x = carry_b | (*x >> 1);  x++;
    carry_b = *x << 7;      *x = carry_a | (*x >> 1);  x++;
    carry_a = *x << 7;      *x = carry_b | (*x >> 1);  x++;
    carry_b = *x << 7;      *x = carry_a | (*x >> 1);  x++;
    carry_a = *x << 7;      *x = carry_b | (*x >> 1);  x++;
    carry_b = *x << 7;      *x = carry_a | (*x >> 1);
}
#else
void shift_right8_1 (uint8x_t *x)       // Shift right 8-byte number right 1-bit.
{
    uint8_t n = 8;
    uint8_t carry_a = 0;
    uint8_t carry_b;

    do
    {
        carry_b = *x << 7;
        *x = carry_a | (*x >> 1);
        carry_a = carry_b;
        x++;
    } while (--n);
}
#endif // MATH_FAST.

// Shift 64-bit 'x' right 2 bits.
#if MATH_FAST

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区不卡| 欧美在线视频你懂得| 日韩网站在线看片你懂的| 偷拍日韩校园综合在线| 91.com在线观看| 蜜桃91丨九色丨蝌蚪91桃色| 欧美一级免费大片| 精品亚洲成av人在线观看| 久久色在线视频| 9i看片成人免费高清| 一区二区三区免费观看| 精品视频色一区| 蜜臀va亚洲va欧美va天堂 | 99久久精品国产观看| 国产精品成人午夜| 欧美日韩视频在线第一区 | 精品伊人久久久久7777人| 日韩一区二区三区免费看| 国产一区免费电影| 国产精品丝袜久久久久久app| 99re免费视频精品全部| 婷婷六月综合网| 欧美高清在线一区| 欧美日韩精品三区| 国产高清久久久| 亚洲影院在线观看| 欧美v亚洲v综合ⅴ国产v| 成人精品一区二区三区中文字幕| 一区二区三区丝袜| 欧美国产精品专区| 在线欧美一区二区| 国产一区二区h| 一区二区三区四区高清精品免费观看 | 国产精品国产三级国产普通话蜜臀| 97久久人人超碰| 免费观看久久久4p| 中文字幕亚洲一区二区av在线| 91麻豆精品国产91久久久久久| 成人小视频在线| 日本va欧美va精品发布| 亚洲天堂免费在线观看视频| 精品捆绑美女sm三区| 欧美色男人天堂| 豆国产96在线|亚洲| 日韩一区欧美二区| 亚洲色图欧美激情| 国产三级一区二区三区| 4hu四虎永久在线影院成人| 97精品电影院| 精品无人码麻豆乱码1区2区| 一区二区三区日韩欧美精品| 国产蜜臀av在线一区二区三区| 欧美丰满高潮xxxx喷水动漫| 99re热视频这里只精品| 国产高清精品久久久久| 图片区小说区区亚洲影院| 中文字幕佐山爱一区二区免费| 精品国产一区二区三区不卡| 欧美精品精品一区| 在线免费视频一区二区| 97se亚洲国产综合自在线观| 国产一区二区三区四 | 国产精品一区二区不卡| 蜜桃av一区二区三区| 亚洲午夜精品在线| 日韩毛片视频在线看| 日本一区二区三区dvd视频在线| 日韩精品一区二区三区中文精品 | 日本在线不卡一区| 一级特黄大欧美久久久| 亚洲天堂久久久久久久| 一区二区中文视频| 中文字幕一区在线观看| 亚洲欧洲精品一区二区三区不卡| 国产三级三级三级精品8ⅰ区| xnxx国产精品| 久久久精品免费免费| 2022国产精品视频| 精品国精品自拍自在线| 日韩精品一区二区三区蜜臀| 欧美成人三级在线| 日韩免费观看2025年上映的电影| 日韩欧美视频一区| 精品日韩在线一区| 国产性色一区二区| 中文字幕av一区 二区| 亚洲欧洲成人自拍| 一区二区三区欧美在线观看| 亚洲成人资源在线| 青草国产精品久久久久久| 久久国产精品区| 久久精品国产精品亚洲红杏 | 国产精品久久久久婷婷| 亚洲欧美日韩电影| 亚洲成人黄色影院| 麻豆成人综合网| 东方欧美亚洲色图在线| 成人18视频在线播放| 欧洲人成人精品| 日韩一区二区三区在线视频| 久久免费视频色| 自拍视频在线观看一区二区| 亚洲成在人线在线播放| 久久99国产精品麻豆| 韩日精品视频一区| 99视频在线精品| 欧美另类一区二区三区| 久久久综合精品| 亚洲欧洲综合另类| 丝袜美腿一区二区三区| 国产一区欧美二区| 欧洲一区在线电影| 日韩三级电影网址| 国产精品久久久久久久久动漫| 一区二区视频在线看| 天涯成人国产亚洲精品一区av| 国产毛片一区二区| 色综合色综合色综合| 69堂亚洲精品首页| 亚洲特级片在线| 久久精品国产一区二区三 | 99精品在线观看视频| 欧美日韩另类国产亚洲欧美一级| 精品国产百合女同互慰| 亚洲乱码精品一二三四区日韩在线| 丝袜亚洲另类丝袜在线| 不卡在线视频中文字幕| 日韩限制级电影在线观看| 亚洲欧洲综合另类| 国产一级精品在线| 欧美日韩久久久一区| 国产精品视频一二三| 美女视频第一区二区三区免费观看网站| 国产91在线观看丝袜| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲成av人片一区二区梦乃| 风流少妇一区二区| 日韩三级中文字幕| 亚洲精品乱码久久久久久| 国模一区二区三区白浆| 欧美网站大全在线观看| 日本一区二区三区四区在线视频| 日日摸夜夜添夜夜添国产精品| 色综合久久综合网97色综合| 久久亚洲春色中文字幕久久久| 视频一区欧美日韩| 91麻豆精品秘密| 中文字幕成人av| 激情综合网av| 日韩欧美电影在线| 婷婷久久综合九色综合伊人色| 日本精品一区二区三区高清 | 日韩欧美国产电影| 五月婷婷久久丁香| 欧美视频一区在线| 亚洲免费毛片网站| 91视频观看视频| 国产精品亲子乱子伦xxxx裸| 激情都市一区二区| 26uuu亚洲综合色欧美| 丝袜美腿亚洲综合| 欧美精品三级在线观看| 一区二区三区在线免费视频| 97久久超碰国产精品电影| 国产精品久久午夜| 成人午夜视频网站| 国产精品免费人成网站| 成人h精品动漫一区二区三区| 久久蜜桃av一区精品变态类天堂| 精品系列免费在线观看| 久久日韩精品一区二区五区| 国产精品综合二区| 国产夜色精品一区二区av| 国产伦精品一区二区三区免费| 26uuu亚洲综合色| 国产成人啪免费观看软件| 日本一区二区在线不卡| av不卡在线播放| 一区二区三区四区五区视频在线观看| 色综合色综合色综合| 午夜欧美在线一二页| 欧美一区二区三区在线观看视频| 日本中文在线一区| 欧美α欧美αv大片| 国产成人在线看| 最新国产成人在线观看| 在线观看亚洲一区| 日韩福利电影在线| 久久久久久免费网| 97精品电影院| 午夜国产精品一区| 精品国产一二三| 91亚洲永久精品| 日本大胆欧美人术艺术动态 | 国产精品久久久久7777按摩| 色94色欧美sute亚洲线路一久| 午夜视频久久久久久| 久久综合视频网| 91麻豆产精品久久久久久| 视频一区二区国产|