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

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

?? mathhalf.c

?? GSM半數(shù)率源代碼(VSELP) GSM半數(shù)率源代碼(VSELP)
?? C
?? 第 1 頁 / 共 4 頁
字號(hào):
/***************************************************************************
 *
 *   File Name:  mathhalf.c
 *
 *   Purpose:  Contains functions which implement the primitive
 *     arithmetic operations.
 *
 *      The functions in this file are listed below.  Some of them are
 *      defined in terms of other basic operations.  One of the
 *      routines, saturate() is static.  This is not a basic
 *      operation, and is not referenced outside the scope of this
 *      file.
 *
 *
 *       abs_s()
 *       add()
 *       divide_s()
 *       extract_h()
 *       extract_l()
 *       L_abs()
 *       L_add()
 *       L_deposit_h()
 *       L_deposit_l()
 *       L_mac()
 *       L_msu()
 *       L_mult()
 *       L_negate()
 *       L_shift_r()
 *       L_shl()
 *       L_shr()
 *       L_sub()
 *       mac_r()
 *       msu_r()
 *       mult()
 *       mult_r()
 *       negate()
 *       norm_l()
 *       norm_s()
 *       round()
 *       saturate()
 *       shift_r()
 *       shl()
 *       shr()
 *       sub()
 *
 **************************************************************************/

/*_________________________________________________________________________
 |                                                                         |
 |                            Include Files                                |
 |_________________________________________________________________________|
*/

#include "typedefs.h"
#include "mathhalf.h"

/***************************************************************************
 *
 *   FUNCTION NAME: saturate
 *
 *   PURPOSE:
 *
 *     Limit the 32 bit input to the range of a 16 bit word.
 *
 *
 *   INPUTS:
 *
 *     L_var1
 *                     32 bit long signed integer (Longword) whose value
 *                     falls in the range
 *                     0x8000 0000 <= L_var1 <= 0x7fff ffff.
 *
 *   OUTPUTS:
 *
 *     none
 *
 *   RETURN VALUE:
 *
 *     swOut
 *                     16 bit short signed integer (Shortword) whose value
 *                     falls in the range
 *                     0xffff 8000 <= swOut <= 0x0000 7fff.
 *
 *   KEYWORDS: saturation, limiting, limit, saturate, 16 bits
 *
 *************************************************************************/

static Shortword saturate(Longword L_var1)
{
  Shortword swOut;

  if (L_var1 > SW_MAX)
  {
    swOut = SW_MAX;
  }
  else if (L_var1 < SW_MIN)
  {
    swOut = SW_MIN;
  }
  else
    swOut = (Shortword) L_var1;        /* automatic type conversion */
  return (swOut);
}

/***************************************************************************
 *
 *   FUNCTION NAME: abs_s
 *
 *   PURPOSE:
 *
 *     Take the absolute value of the 16 bit input.  An input of
 *     -0x8000 results in a return value of 0x7fff.
 *
 *   INPUTS:
 *
 *     var1
 *                     16 bit short signed integer (Shortword) whose value
 *                     falls in the range 0xffff 8000 <= var1 <= 0x0000 7fff.
 *
 *   OUTPUTS:
 *
 *     none
 *
 *   RETURN VALUE:
 *
 *     swOut
 *                     16 bit short signed integer (Shortword) whose value
 *                     falls in the range
 *                     0x0000 0000 <= swOut <= 0x0000 7fff.
 *
 *   IMPLEMENTATION:
 *
 *     Take the absolute value of the 16 bit input.  An input of
 *     -0x8000 results in a return value of 0x7fff.
 *
 *   KEYWORDS: absolute value, abs
 *
 *************************************************************************/

Shortword abs_s(Shortword var1)
{
  Shortword swOut;

  if (var1 == SW_MIN)
  {
    swOut = SW_MAX;
  }
  else
  {
    if (var1 < 0)
      swOut = -var1;
    else
      swOut = var1;
  }
  return (swOut);
}

/***************************************************************************
 *
 *   FUNCTION NAME: add
 *
 *   PURPOSE:
 *
 *     Perform the addition of the two 16 bit input variable with
 *     saturation.
 *
 *   INPUTS:
 *
 *     var1
 *                     16 bit short signed integer (Shortword) whose value
 *                     falls in the range 0xffff 8000 <= var1 <= 0x0000 7fff.
 *     var2
 *                     16 bit short signed integer (Shortword) whose value
 *                     falls in the range 0xffff 8000 <= var2 <= 0x0000 7fff.
 *
 *   OUTPUTS:
 *
 *     none
 *
 *   RETURN VALUE:
 *
 *     swOut
 *                     16 bit short signed integer (Shortword) whose value
 *                     falls in the range
 *                     0xffff 8000 <= swOut <= 0x0000 7fff.
 *
 *   IMPLEMENTATION:
 *
 *     Perform the addition of the two 16 bit input variable with
 *     saturation.
 *
 *     swOut = var1 + var2
 *
 *     swOut is set to 0x7fff if the operation results in an
 *     overflow.  swOut is set to 0x8000 if the operation results
 *     in an underflow.
 *
 *   KEYWORDS: add, addition
 *
 *************************************************************************/

Shortword add(Shortword var1, Shortword var2)
{
  Longword L_sum;
  Shortword swOut;

  L_sum = (Longword) var1 + var2;
  swOut = saturate(L_sum);
  return (swOut);
}

/***************************************************************************
 *
 *   FUNCTION NAME: divide_s
 *
 *   PURPOSE:
 *
 *     Divide var1 by var2.  Note that both must be positive, and
 *     var1 >=  var2.  The output is set to 0 if invalid input is
 *     provided.
 *
 *   INPUTS:
 *
 *     var1
 *                     16 bit short signed integer (Shortword) whose value
 *                     falls in the range 0xffff 8000 <= var1 <= 0x0000 7fff.
 *     var2
 *                     16 bit short signed integer (Shortword) whose value
 *                     falls in the range 0xffff 8000 <= var2 <= 0x0000 7fff.
 *
 *   OUTPUTS:
 *
 *     none
 *
 *   RETURN VALUE:
 *
 *     swOut
 *                     16 bit short signed integer (Shortword) whose value
 *                     falls in the range
 *                     0xffff 8000 <= swOut <= 0x0000 7fff.
 *
 *   IMPLEMENTATION:
 *
 *     In the case where var1==var2 the function returns 0x7fff.  The output
 *     is undefined for invalid inputs.  This implementation returns zero
 *     and issues a warning via stdio if invalid input is presented.
 *
 *   KEYWORDS: divide
 *
 *************************************************************************/

Shortword divide_s(Shortword var1, Shortword var2)
{
  Longword L_div;
  Shortword swOut;

  if (var1 < 0 || var2 < 0 || var1 > var2)
  {
    /* undefined output for invalid input into divide_s */
    return (0);
  }

  if (var1 == var2)
    return (0x7fff);

  L_div = ((0x00008000L * (Longword) var1) / (Longword) var2);
  swOut = saturate(L_div);
  return (swOut);
}

/***************************************************************************
 *
 *   FUNCTION NAME: extract_h
 *
 *   PURPOSE:
 *
 *     Extract the 16 MS bits of a 32 bit Longword.  Return the 16 bit
 *     number as a Shortword.  This is used as a "truncation" of a fractional
 *     number.
 *
 *   INPUTS:
 *
 *     L_var1
 *                     32 bit long signed integer (Longword) whose value
 *                     falls in the range
 *                     0x8000 0000 <= L_var1 <= 0x7fff ffff.
 *
 *   OUTPUTS:
 *
 *     none
 *
 *   RETURN VALUE:
 *
 *     swOut
 *                     16 bit short signed integer (Shortword) whose value
 *                     falls in the range
 *                     0xffff 8000 <= swOut <= 0x0000 7fff.
 *
 *   IMPLEMENTATION:
 *
 *   KEYWORDS: assign, truncate
 *
 *************************************************************************/

Shortword extract_h(Longword L_var1)
{
  Shortword var2;

  var2 = (Shortword) (0x0000ffffL & (L_var1 >> 16));
  return (var2);
}

/***************************************************************************
 *
 *   FUNCTION NAME: extract_l
 *
 *   PURPOSE:
 *
 *     Extract the 16 LS bits of a 32 bit Longword.  Return the 16 bit
 *     number as a Shortword.  The upper portion of the input Longword
 *     has no impact whatsoever on the output.
 *
 *   INPUTS:
 *
 *     L_var1
 *                     32 bit long signed integer (Longword) whose value
 *                     falls in the range
 *                     0x8000 0000 <= L_var1 <= 0x7fff ffff.
 *
 *   OUTPUTS:
 *
 *     none
 *
 *   RETURN VALUE:
 *
 *     swOut
 *                     16 bit short signed integer (Shortword) whose value
 *                     falls in the range
 *                     0xffff 8000 <= swOut <= 0x0000 7fff.
 *
 *
 *   KEYWORDS: extract, assign
 *
 *************************************************************************/

Shortword extract_l(Longword L_var1)
{
  Shortword var2;

  var2 = (Shortword) (0x0000ffffL & L_var1);
  return (var2);
}

/***************************************************************************
 *
 *   FUNCTION NAME: L_abs
 *
 *   PURPOSE:
 *
 *     Take the absolute value of the 32 bit input.  An input of
 *     -0x8000 0000 results in a return value of 0x7fff ffff.
 *
 *   INPUTS:
 *
 *     L_var1
 *                     32 bit long signed integer (Longword) whose value
 *                     falls in the range
 *                     0x8000 0000 <= L_var1 <= 0x7fff ffff.
 *
 *   OUTPUTS:
 *
 *     none
 *
 *   RETURN VALUE:
 *
 *     L_Out
 *                     32 bit long signed integer (Longword) whose value
 *                     falls in the range
 *                     0x8000 0000 <= L_var1 <= 0x7fff ffff.
 *
 *
 *
 *   KEYWORDS: absolute value, abs
 *
 *************************************************************************/
Longword L_abs(Longword L_var1)
{
  Longword L_Out;

  if (L_var1 == LW_MIN)
  {
    L_Out = LW_MAX;
  }
  else
  {
    if (L_var1 < 0)
      L_Out = -L_var1;
    else
      L_Out = L_var1;
  }
  return (L_Out);
}

/***************************************************************************
 *
 *   FUNCTION NAME: L_add
 *
 *   PURPOSE:
 *
 *     Perform the addition of the two 32 bit input variables with
 *     saturation.
 *
 *   INPUTS:
 *
 *     L_var1
 *                     32 bit long signed integer (Longword) whose value
 *                     falls in the range
 *                     0x8000 0000 <= L_var1 <= 0x7fff ffff.
 *     L_var2
 *                     32 bit long signed integer (Longword) whose value
 *                     falls in the range
 *                     0x8000 0000 <= L_var2 <= 0x7fff ffff.
 *
 *   OUTPUTS:
 *
 *     none
 *
 *   RETURN VALUE:
 *
 *     L_Out
 *                     32 bit long signed integer (Longword) whose value
 *                     falls in the range
 *                     0x8000 0000 <= L_var1 <= 0x7fff ffff.
 *
 *   IMPLEMENTATION:
 *
 *     Perform the addition of the two 32 bit input variables with
 *     saturation.
 *
 *     L_Out = L_var1 + L_var2
 *
 *     L_Out is set to 0x7fff ffff if the operation results in an
 *     overflow.  L_Out is set to 0x8000 0000 if the operation
 *     results in an underflow.
 *
 *   KEYWORDS: add, addition
 *
 *************************************************************************/
Longword L_add(Longword L_var1, Longword L_var2)
{

  Longword L_Sum,
         L_SumLow,
         L_SumHigh;

  L_Sum = L_var1 + L_var2;

  if ((L_var1 > 0 && L_var2 > 0) || (L_var1 < 0 && L_var2 < 0))
  {

    /* an overflow is possible */

    L_SumLow = (L_var1 & 0xffff) + (L_var2 & 0xffff);
    L_SumHigh = ((L_var1 >> 16) & 0xffff) + ((L_var2 >> 16) & 0xffff);
    if (L_SumLow & 0x10000)
    {
      /* carry into high word is set */
      L_SumHigh += 1;
    }

    /* update sum only if there is an overflow or underflow */
    /*------------------------------------------------------*/

    if ((0x10000 & L_SumHigh) && !(0x8000 & L_SumHigh))
      L_Sum = LW_MIN;                  /* underflow */
    else if (!(0x10000 & L_SumHigh) && (0x8000 & L_SumHigh))
      L_Sum = LW_MAX;                  /* overflow */
  }

  return (L_Sum);

}

/***************************************************************************
 *
 *   FUNCTION NAME: L_deposit_h
 *
 *   PURPOSE:
 *

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品主播直播| 亚洲丰满少妇videoshd| 亚洲欧美一区二区三区极速播放 | 亚洲第一搞黄网站| 精品午夜久久福利影院| 欧美日韩久久久| 中文字幕中文字幕一区| 国产一区二区伦理| 2021久久国产精品不只是精品| 精品久久国产字幕高潮| 成人av资源网站| 韩国毛片一区二区三区| 日韩一级免费一区| 日韩一区欧美一区| 97久久人人超碰| 亚洲丝袜自拍清纯另类| 国产成人精品午夜视频免费| 欧美在线影院一区二区| 一区二区在线免费| 日韩免费电影一区| 国产91精品在线观看| 国产欧美一区二区三区网站| 国产99久久久国产精品| 一区二区三区四区精品在线视频| 久久超碰97中文字幕| 中文一区二区在线观看| 成人一区二区视频| 亚洲第一主播视频| 日韩精品一区二区在线观看| 国产一区二区精品久久| 亚洲国产电影在线观看| 91精品国产综合久久香蕉麻豆| 免费观看30秒视频久久| 亚洲欧洲综合另类在线| 91精品啪在线观看国产60岁| 国产一区二区在线免费观看| 亚洲天堂免费看| 中文字幕av免费专区久久| 国产在线精品国自产拍免费| 91麻豆精品国产91久久久| 三级久久三级久久久| 欧美人体做爰大胆视频| 亚洲色图欧美激情| 精品欧美乱码久久久久久1区2区| 国产成人在线视频播放| 日韩精品欧美精品| 亚洲欧美日韩小说| 国产香蕉久久精品综合网| 久久网站最新地址| 久久久www成人免费无遮挡大片| 精品国产乱码久久| 国产日韩精品一区| 国产午夜亚洲精品理论片色戒| 国产成人精品一区二区三区网站观看| 亚洲日本青草视频在线怡红院 | 欧美日韩精品电影| 91精品在线免费| 精品少妇一区二区三区日产乱码 | 欧美中文字幕亚洲一区二区va在线| 在线亚洲一区观看| 日韩一区二区影院| 国产精品精品国产色婷婷| 国产精品乱人伦| 亚洲午夜在线观看视频在线| 美女脱光内衣内裤视频久久影院| 国产一区啦啦啦在线观看| 色综合夜色一区| 欧美一区二区福利视频| 亚洲国产精品天堂| 国产成人免费视频网站高清观看视频| 成人av电影免费观看| 日韩欧美精品三级| 一区二区三区小说| 婷婷综合在线观看| 9色porny自拍视频一区二区| 日韩欧美一二区| 亚洲女与黑人做爰| 91在线免费视频观看| 精品噜噜噜噜久久久久久久久试看| 亚洲国产精华液网站w| 狠狠狠色丁香婷婷综合激情| 一本久久a久久精品亚洲| 久久久久久久久免费| 蜜臀91精品一区二区三区| 欧美日韩国产小视频在线观看| 国产精品三级视频| 国产精品一区免费视频| 精品黑人一区二区三区久久| 亚洲一区二区三区四区在线观看| 99这里都是精品| 日本不卡视频在线| 日韩精品一区二区三区四区视频| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 久久99精品视频| 欧美一级日韩免费不卡| 日韩专区一卡二卡| 日韩美女视频一区二区在线观看| 午夜国产不卡在线观看视频| 欧美一区二区在线看| 久久99热99| 久久精品综合网| 99视频在线精品| 亚洲黄一区二区三区| 在线欧美一区二区| 丝袜脚交一区二区| 色悠悠久久综合| 久久一区二区视频| 国内欧美视频一区二区| 亚洲日本一区二区| 国产精品毛片无遮挡高清| 日韩欧美国产一区二区在线播放 | 久久精品亚洲国产奇米99| 国产凹凸在线观看一区二区| 国产午夜精品一区二区三区四区| 国产91富婆露脸刺激对白| 国产精品美女久久福利网站| 色中色一区二区| 久久精品国产99久久6| 国产精品乱码一区二区三区软件| 欧美不卡在线视频| 91精品国产一区二区三区| 日日噜噜夜夜狠狠视频欧美人| 日韩一区二区三区四区五区六区| 欧美一区二区三区婷婷月色| 欧美日产在线观看| 日本韩国欧美三级| 欧美日韩免费不卡视频一区二区三区 | 理论片日本一区| 福利91精品一区二区三区| www.久久精品| 欧洲精品一区二区| 欧美一区日本一区韩国一区| 日韩欧美成人一区| 中文字幕av一区 二区| 亚洲国产日韩一级| 成人性视频网站| 日韩视频在线你懂得| 亚洲伊人色欲综合网| 国产成人精品www牛牛影视| 国产精品91一区二区| 午夜精品在线视频一区| 国产高清不卡二三区| 欧美一级搡bbbb搡bbbb| 欧美日韩视频专区在线播放| 成人午夜视频在线| 极品瑜伽女神91| 天天综合日日夜夜精品| 狠狠色狠狠色综合系列| 国产一区二区三区精品欧美日韩一区二区三区 | 日本一区二区三区高清不卡| 亚洲在线成人精品| 韩国精品在线观看| 欧美天堂亚洲电影院在线播放| 在线不卡的av| 日韩视频免费观看高清完整版| 91精品国产一区二区三区蜜臀| 日韩三级高清在线| 久久亚洲二区三区| 国产精品国产成人国产三级| 亚洲一区二区三区影院| 美女视频黄频大全不卡视频在线播放| 波多野结衣一区二区三区| 欧美一区二区性放荡片| 亚洲最新视频在线观看| 国产成人在线免费观看| 日本一区二区三区久久久久久久久不| 国产校园另类小说区| 国产精品色眯眯| 麻豆精品蜜桃视频网站| 成人一区在线观看| 日韩欧美国产电影| ●精品国产综合乱码久久久久 | 激情文学综合插| 91国偷自产一区二区开放时间| 亚洲视频在线一区| 激情综合色丁香一区二区| 91成人国产精品| 色香蕉久久蜜桃| 精品在线亚洲视频| 91精品国产91久久久久久最新毛片| 91精品国产黑色紧身裤美女| 国产三级欧美三级日产三级99| 亚洲精品乱码久久久久| 在线欧美日韩精品| 国产成人av在线影院| 亚洲国产婷婷综合在线精品| 久久久久久久精| 欧美日韩一区二区三区四区五区 | 成人美女在线视频| 2023国产精品自拍| 国产经典欧美精品| 亚洲欧美日韩一区二区三区在线观看 | 成人午夜在线视频| 亚洲免费电影在线| 日韩视频免费观看高清完整版在线观看| 久久电影国产免费久久电影| 中文字幕在线观看不卡视频| 欧美色区777第一页| 91在线精品一区二区| 奇米影视一区二区三区小说|