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

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

?? mathhalf.c

?? GSM半數(shù)率源代碼(VSELP) GSM半數(shù)率源代碼(VSELP)
?? 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:
 *

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩色在线观看| 久久国产生活片100| 一区二区三区中文字幕| 国产精品每日更新在线播放网址| 精品国产一区久久| 中文字幕在线观看不卡视频| 亚洲欧美另类综合偷拍| 日韩一区欧美二区| 成人午夜电影网站| 欧美在线高清视频| 欧美激情综合在线| 日本免费新一区视频| 国产69精品一区二区亚洲孕妇| 91论坛在线播放| 久久看人人爽人人| 国产精品国产自产拍在线| 中文字幕免费不卡| 精品一区二区三区免费播放| 97se亚洲国产综合自在线观| 日韩三级电影网址| 日韩avvvv在线播放| 欧洲日韩一区二区三区| 国产精品伦理一区二区| 国产精品亚洲人在线观看| 欧美一区二区三区视频免费播放 | 国产福利91精品| 日韩视频免费直播| 美腿丝袜一区二区三区| 6080午夜不卡| 亚洲国产精品综合小说图片区| 99综合电影在线视频| 国产精品久久久久久久久搜平片| 国产精品伦理一区二区| 亚洲一区影音先锋| 欧美日韩免费观看一区二区三区| 性欧美疯狂xxxxbbbb| 欧美男同性恋视频网站| 奇米精品一区二区三区在线观看 | 国产精品美女久久久久aⅴ| 色av一区二区| 国产一级精品在线| 中文字幕电影一区| 9191国产精品| 国产不卡在线播放| 一区av在线播放| 久久午夜老司机| 欧美影院精品一区| 国产成人在线色| 日韩成人伦理电影在线观看| 精品999久久久| 欧美日韩精品三区| 99久久夜色精品国产网站| 奇米精品一区二区三区在线观看 | 日本色综合中文字幕| 日韩午夜激情电影| 欧美三级在线视频| 成人一道本在线| 久久69国产一区二区蜜臀| 一区二区三区高清不卡| 337p日本欧洲亚洲大胆精品| 欧美亚日韩国产aⅴ精品中极品| 裸体在线国模精品偷拍| 日产精品久久久久久久性色| 伊人一区二区三区| 亚洲日本在线天堂| 中文字幕在线不卡| 国产免费成人在线视频| 欧美一区二区视频在线观看2022| 色综合久久久久久久久| 在线观看欧美黄色| 欧美一区二区三区色| 制服丝袜成人动漫| 久久精品欧美一区二区三区不卡| 欧美福利一区二区| 精品第一国产综合精品aⅴ| 日韩欧美一区二区在线视频| 精品国精品国产| 亚洲精品乱码久久久久久黑人| 亚洲精品视频一区| 久久丁香综合五月国产三级网站| 久久国产麻豆精品| a在线播放不卡| 日韩免费福利电影在线观看| 国产日韩欧美精品一区| 亚洲午夜在线观看视频在线| 麻豆精品视频在线观看视频| 不卡视频免费播放| 欧美日韩精品高清| 国产欧美精品一区二区三区四区| 亚洲一区二区av电影| 国产成人一级电影| 91精品国产欧美一区二区成人 | 丁香婷婷综合色啪| 日韩三级中文字幕| 亚洲最色的网站| 丁香啪啪综合成人亚洲小说| 欧美福利视频一区| 亚洲国产另类av| 欧美日韩国产免费一区二区| 亚洲色图20p| voyeur盗摄精品| 国产精品乱人伦| 国产乱码一区二区三区| 久久先锋影音av| 国产电影一区二区三区| 日韩免费在线观看| 精品一区二区三区不卡| 久久综合九色综合欧美98| 精品亚洲porn| 欧美国产激情二区三区| 丁香五精品蜜臀久久久久99网站| 久久久久久久国产精品影院| 久久99精品久久久久久动态图| 337p日本欧洲亚洲大胆精品| 国产在线国偷精品产拍免费yy| 亚洲精品一区二区三区香蕉 | 3d成人h动漫网站入口| 美女免费视频一区二区| 国产日韩欧美激情| 欧美精品日韩一区| 成人一级片在线观看| 午夜国产不卡在线观看视频| 国产网站一区二区| 7777精品伊人久久久大香线蕉的 | 久久精品亚洲一区二区三区浴池 | 水野朝阳av一区二区三区| 久久久蜜臀国产一区二区| proumb性欧美在线观看| 偷拍一区二区三区四区| 亚洲特级片在线| 久久婷婷综合激情| 欧美乱妇20p| 在线观看亚洲一区| 成人白浆超碰人人人人| 激情综合网av| 日本不卡1234视频| 亚洲成人在线免费| 一级做a爱片久久| 1024成人网| 亚洲区小说区图片区qvod| 国产精品欧美经典| 国产精品每日更新在线播放网址| 精品sm捆绑视频| 久久久久久黄色| 久久久精品天堂| 久久久www成人免费无遮挡大片| 欧美精品一区二区不卡| 欧美岛国在线观看| 国产精品国产三级国产普通话99 | 一区免费观看视频| 亚洲黄色片在线观看| 一个色综合av| 蜜臀av性久久久久av蜜臀妖精| 五月天久久比比资源色| 久久99国产精品久久99| 成人免费的视频| 91黄色免费网站| 精品国产第一区二区三区观看体验| 久久网这里都是精品| 亚洲一区二区三区中文字幕| 免费观看久久久4p| 在线中文字幕一区| 久久九九99视频| 日本不卡免费在线视频| 97久久超碰国产精品电影| 91精品视频网| 一区二区在线观看免费| 国产九色sp调教91| 3d成人h动漫网站入口| 亚洲摸摸操操av| 国产成人av电影在线| 日韩一卡二卡三卡四卡| 日韩一区日韩二区| 精品一区二区三区久久| 欧美精品一二三| 午夜精品123| 欧美日韩不卡一区| 亚洲123区在线观看| 欧美日本精品一区二区三区| 中文字幕中文乱码欧美一区二区| 久久国产夜色精品鲁鲁99| 69久久99精品久久久久婷婷| 亚洲与欧洲av电影| 91美女精品福利| 亚洲国产美女搞黄色| 色狠狠综合天天综合综合| 一区二区三区四区乱视频| 色偷偷88欧美精品久久久| 亚洲日本在线视频观看| 色综合中文字幕国产 | 精品视频在线免费观看| 亚洲成人综合在线| www激情久久| 色综合天天综合网天天狠天天| |精品福利一区二区三区| 欧美日本一区二区三区四区| 狂野欧美性猛交blacked| 中文在线资源观看网站视频免费不卡 | 色婷婷综合久久久中文字幕| 亚洲mv在线观看|