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

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

?? mathhalf.c

?? GSM中半速率語音編解碼源碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
/***************************************************************************
 *
 *   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:
 *

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级高清大全免费观看| 色av成人天堂桃色av| 亚洲1区2区3区4区| 亚洲免费毛片网站| 国产精品热久久久久夜色精品三区 | 成人午夜又粗又硬又大| 紧缚奴在线一区二区三区| 男人的天堂亚洲一区| 狠狠色丁香婷婷综合| 国产精品中文欧美| 99国产精品久久| 欧美四级电影在线观看| 这里只有精品免费| 欧美变态tickling挠脚心| 久久综合国产精品| 国产精品国产三级国产普通话99 | 99视频一区二区三区| 99国产一区二区三精品乱码| 91麻豆6部合集magnet| 在线播放欧美女士性生活| 日韩一级高清毛片| 国产香蕉久久精品综合网| 日本欧美在线观看| 精品在线一区二区| a级高清视频欧美日韩| 欧美私人免费视频| 精品美女一区二区| 国产精品免费av| 人人狠狠综合久久亚洲| 成人午夜激情视频| 欧美视频一区二区在线观看| 久久久天堂av| 亚洲综合在线免费观看| 国内精品第一页| 在线精品视频一区二区| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 亚洲一二三区在线观看| 久久精品国产成人一区二区三区| 北岛玲一区二区三区四区| 欧美丰满美乳xxx高潮www| 一区在线中文字幕| 国产在线播放一区二区三区| 欧美性淫爽ww久久久久无| 欧美激情一区二区| 麻豆精品一区二区| 欧美日韩一区高清| 欧美美女网站色| 国产精品短视频| 经典三级视频一区| 欧美一区二区三区免费视频| 亚洲你懂的在线视频| 国产一区二区三区在线观看免费视频 | 国产日韩欧美激情| 午夜在线电影亚洲一区| 成人av在线一区二区| 欧美一区二区三区在| 亚洲六月丁香色婷婷综合久久| 成人免费观看视频| 久久日一线二线三线suv| 视频在线观看国产精品| 日韩免费观看2025年上映的电影| 夜夜爽夜夜爽精品视频| 91丨九色丨蝌蚪富婆spa| 欧美国产精品久久| 国产精品538一区二区在线| 日韩欧美www| 蜜桃久久久久久久| 欧美电视剧在线观看完整版| 蜜臀久久99精品久久久久宅男 | 日韩精品中午字幕| 日韩精品1区2区3区| 欧美日韩免费不卡视频一区二区三区| 日韩伦理免费电影| 色综合久久中文字幕| 亚洲欧美视频一区| 色先锋资源久久综合| 夜夜精品视频一区二区 | 久久99国产精品尤物| 欧美大白屁股肥臀xxxxxx| 美女一区二区久久| 精品av久久707| 国产精品一区二区三区乱码| 国产午夜久久久久| www.久久久久久久久| 玉足女爽爽91| 欧美电影在线免费观看| 日本不卡在线视频| 26uuu亚洲婷婷狠狠天堂| 国产麻豆91精品| 国产精品久线观看视频| 日本精品一区二区三区高清| 视频一区中文字幕| 久久综合九色综合97婷婷| 国产成人午夜视频| 亚洲三级视频在线观看| 欧美日韩一级大片网址| 极品少妇xxxx精品少妇偷拍| 国产精品乱子久久久久| 欧美三级韩国三级日本一级| 韩国在线一区二区| 亚洲柠檬福利资源导航| 9191久久久久久久久久久| 国产一区二区三区观看| 亚洲男人都懂的| 欧美大片拔萝卜| fc2成人免费人成在线观看播放 | 91蝌蚪porny| 午夜视频一区二区| 亚洲国产精品精华液ab| 欧美日韩不卡在线| 成人影视亚洲图片在线| 五月天视频一区| 国产精品久久久久影院色老大| 欧美美女激情18p| 99久久99久久精品国产片果冻 | 国产欧美日韩精品一区| 欧美日韩成人综合在线一区二区| 国产成人激情av| 免费观看成人av| 亚洲人成网站精品片在线观看| 26uuu色噜噜精品一区| 91极品美女在线| 成人a区在线观看| 久久精品国产一区二区三区免费看 | 国产精品国产三级国产a| 91精品国产综合久久香蕉麻豆| 粉嫩av一区二区三区| 免费观看30秒视频久久| 一区av在线播放| 日韩一区欧美一区| 国产欧美视频一区二区三区| 日韩欧美国产一二三区| 欧美亚洲禁片免费| 色综合天天综合网天天狠天天| 国产电影一区在线| 捆绑调教美女网站视频一区| 日韩中文字幕不卡| 一区二区三区免费| 亚洲视频网在线直播| 亚洲丝袜美腿综合| 中文在线资源观看网站视频免费不卡 | 国产精品系列在线播放| 麻豆精品国产传媒mv男同| 丝袜脚交一区二区| 婷婷久久综合九色国产成人| 亚洲一二三四久久| 亚洲成av人片一区二区| 亚洲一二三区在线观看| 亚洲国产精品影院| 婷婷开心激情综合| 日本亚洲欧美天堂免费| 日韩不卡一区二区| 蜜桃久久久久久| 国内成+人亚洲+欧美+综合在线 | 亚洲国产乱码最新视频 | 国产一区二区在线看| 精品在线免费观看| 国产精品99久久久久久久vr | 日韩av二区在线播放| 男人的天堂亚洲一区| 久久精品国产在热久久| 国产精品一二一区| 91在线观看美女| 欧美日韩久久一区| 日韩欧美国产小视频| 国产亚洲精品中文字幕| 国产精品短视频| 亚洲va欧美va人人爽午夜| 日韩av高清在线观看| 国产成人免费视频网站高清观看视频| 国产成人在线观看| 色欧美日韩亚洲| 制服丝袜日韩国产| 久久精品一二三| 亚洲欧美日韩中文播放| 免费精品视频在线| www.av亚洲| 欧美丰满美乳xxx高潮www| 久久嫩草精品久久久久| 亚洲激情综合网| 蜜桃精品视频在线| 99这里只有久久精品视频| 欧美日韩国产综合视频在线观看 | 成人午夜视频福利| 欧美午夜一区二区三区| 久久免费的精品国产v∧| 18成人在线观看| 久久99精品国产麻豆婷婷| 成人激情免费视频| 日韩精品中文字幕在线一区| 成人免费在线观看入口| 韩国欧美国产1区| 欧美日韩亚洲综合一区二区三区| 久久免费午夜影院| 视频一区中文字幕国产| 99国产精品视频免费观看| 精品国产a毛片| 午夜a成v人精品| 一本久道久久综合中文字幕| 久久精品欧美一区二区三区不卡|