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

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

?? mathhalf.c

?? MSP430單片機C語言應用
?? C
?? 第 1 頁 / 共 4 頁
字號:
/*

2.4 kbps MELP Proposed Federal Standard speech coder

Fixed-point C code, version 1.0

Copyright (c) 1998, Texas Instruments, Inc.  

Texas Instruments has intellectual property rights on the MELP
algorithm.  The Texas Instruments contact for licensing issues for
commercial and non-government use is William Gordon, Director,
Government Contracts, Texas Instruments Incorporated, Semiconductor
Group (phone 972 480 7442).

The fixed-point version of the voice codec Mixed Excitation Linear
Prediction (MELP) is based on specifications on the C-language software
simulation contained in GSM 06.06 which is protected by copyright and
is the property of the European Telecommunications Standards Institute
(ETSI). This standard is available from the ETSI publication office
tel. +33 (0)4 92 94 42 58. ETSI has granted a license to United States
Department of Defense to use the C-language software simulation contained
in GSM 06.06 for the purposes of the development of a fixed-point
version of the voice codec Mixed Excitation Linear Prediction (MELP).
Requests for authorization to make other use of the GSM 06.06 or
otherwise distribute or modify them need to be addressed to the ETSI
Secretariat fax: +33 493 65 47 16.

*/
/***************************************************************************
 *
 *   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 reference 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 "typedefs.h"
#include "mathhalf.h"
#include "mathdp31.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;
	}
	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 ((Shortword)0);
  }

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

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

  return (swOut);
}

/***************************************************************************
 *
 *   FUNCTION NAME: L_deposit_l
 *
 *   PURPOSE:
 *
 *     Put the 16 bit input into the 16 LSB's of the output Longword with
 *     sign extension i.e. the top 16 bits are set to either 0 or 0xffff.
 *
 *   INPUTS:
 *
 *     var1
 *                     16 bit short signed integer (Shortword) whose value
 *                     falls in the range 0xffff 8000 <= var1 <= 0x0000 7fff.
 *
 *   OUTPUTS:
 *
 *     none
 *
 *   RETURN VALUE:
 *
 *     L_Out
 *                     32 bit long signed integer (Longword) whose value
 *                     falls in the range
 *                     0xffff 8000 <= L_var1 <= 0x0000 7fff.
 *
 *   KEYWORDS: deposit, assign
 *
 *************************************************************************/

Longword L_deposit_l(Shortword var1)
{
  Longword L_Out;

  L_Out = var1;

  return (L_Out);
}

/***************************************************************************
 *
 *   FUNCTION NAME: L_deposit_h
 *
 *   PURPOSE:
 *
 *     Put the 16 bit input into the 16 MSB's of the output Longword.  The
 *     LS 16 bits are zeroed.
 *
 *   INPUTS:
 *
 *     var1
 *                     16 bit short signed integer (Shortword) whose value
 *                     falls in the range 0xffff 8000 <= var1 <= 0x0000 7fff.
 *
 *   OUTPUTS:
 *
 *     none
 *
 *   RETURN VALUE:
 *
 *     L_Out
 *                     32 bit long signed integer (Longword) whose value
 *                     falls in the range
 *                     0x8000 0000 <= L_var1 <= 0x7fff 0000.
 *
 *
 *   KEYWORDS: deposit, assign, fractional assign
 *
 *************************************************************************/

Longword L_deposit_h(Shortword var1)
{
  Longword L_var2;

  L_var2 = (Longword) var1 << 16;

  return (L_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: 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: round
 *
 *   PURPOSE:
 *
 *     Round the 32 bit Longword into a 16 bit shortword with saturation.
 *
 *   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:
 *
 *     Perform a two's complement round on the input Longword with
 *     saturation.
 *
 *     This is equivalent to adding 0x0000 8000 to the input.  The
 *     result may overflow due to the add.  If so, the result is
 *     saturated.  The 32 bit rounded number is then shifted down
 *     16 bits and returned as a Shortword.
 *
 *
 *   KEYWORDS: round
 *
 *************************************************************************/

Shortword round(Longword L_var1)
{
  Longword L_Prod;
  Shortword var2;

  L_Prod = L_add(L_var1, 0x00008000L); /* round MSP */
  var2 = extract_h(L_Prod);

  return (var2);
}

/***************************************************************************
 *
 *   FUNCTION NAME: negate
 *
 *   PURPOSE:
 *
 *     Negate the 16 bit input. 0x8000's negated value is 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
 *                     0xffff 8001 <= swOut <= 0x0000 7fff.
 *
 *   KEYWORDS: negate, negative, invert
 *
 *************************************************************************/

Shortword negate(Shortword var1)
{
  Shortword swOut;

  if (var1 == SW_MIN) {

      swOut = SW_MAX;
  }
  else {
      swOut = -var1;
  }
  return (swOut);
}

/***************************************************************************
 *
 *   FUNCTION NAME: L_negate
 *
 *   PURPOSE:
 *
 *     Negate the 32 bit input. 0x8000 0000's negated value is
 *     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 0001 <= L_var1 <= 0x7fff ffff.
 *
 *   KEYWORDS: negate, negative
 *
 *************************************************************************/

Longword L_negate(Longword L_var1)
{
  Longword L_Out;

  if (L_var1 == LW_MIN) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级日韩在线| 一区二区三区在线影院| 亚洲人成人一区二区在线观看| 亚洲电影在线免费观看| 国产精品资源在线看| 欧美蜜桃一区二区三区| 国产精品伦一区| 精品一区二区三区不卡| 欧美日韩成人综合| 亚洲猫色日本管| 成人性生交大合| 久久久99久久精品欧美| 亚洲成在线观看| 欧美性三三影院| 亚洲激情校园春色| 99久久婷婷国产综合精品电影 | 免费观看91视频大全| 在线免费亚洲电影| 亚洲人成7777| heyzo一本久久综合| 国产日韩欧美高清在线| 国产乱码精品一区二区三区av| 欧美一卡二卡三卡四卡| 性久久久久久久| 91.com视频| 免费xxxx性欧美18vr| 日韩欧美国产一二三区| 美脚の诱脚舐め脚责91| 日韩欧美国产精品| 九色综合国产一区二区三区| 精品国产乱码久久久久久闺蜜| 免费在线看一区| 日韩欧美一区电影| 六月丁香综合在线视频| 精品99一区二区| 国产精品一品视频| 五月婷婷欧美视频| 制服.丝袜.亚洲.另类.中文| 首页国产丝袜综合| 日韩一区二区三区在线视频| 久久草av在线| 国产偷国产偷精品高清尤物| 丁香网亚洲国际| 亚洲欧美国产77777| 色婷婷一区二区三区四区| 亚洲电影欧美电影有声小说| 7878成人国产在线观看| 狠狠色狠狠色综合日日91app| 久久天天做天天爱综合色| 国产成人啪午夜精品网站男同| 国产精品二三区| 欧美体内she精高潮| 日韩国产精品久久| 国产女主播一区| 在线观看免费成人| 免费在线观看视频一区| 国产精品欧美极品| 欧洲av一区二区嗯嗯嗯啊| 青青草原综合久久大伊人精品优势| 日韩欧美综合一区| www.亚洲人| 首页亚洲欧美制服丝腿| 久久久91精品国产一区二区精品| 91老师国产黑色丝袜在线| 视频在线观看国产精品| 国产欧美日产一区| 欧美中文字幕一区二区三区亚洲| 精品一区二区三区免费观看| 亚洲视频一区在线观看| 51精品秘密在线观看| 成人美女在线视频| 午夜精品成人在线| 国产精品你懂的在线| 欧美男同性恋视频网站| 99热精品一区二区| 蜜桃在线一区二区三区| 一区二区三区在线观看动漫 | 久久精品欧美日韩| 欧美色倩网站大全免费| 国产成人在线看| 日本欧洲一区二区| 一级精品视频在线观看宜春院| 精品国产髙清在线看国产毛片| 在线观看一区二区视频| 福利一区在线观看| 久久疯狂做爰流白浆xx| 一区二区高清在线| 国产精品入口麻豆九色| 精品国产乱码久久久久久影片| 91免费国产在线| 成人久久久精品乱码一区二区三区 | 亚洲午夜在线视频| 国产精品国产三级国产普通话蜜臀| 日韩欧美资源站| 欧美日韩国产高清一区二区三区| eeuss国产一区二区三区| 国产精品资源网站| 精品一区二区三区影院在线午夜| 亚洲国产视频一区二区| 亚洲女人的天堂| 国产精品久久久久久亚洲毛片 | 国产精品一区二区三区四区| 日韩精品亚洲专区| 亚洲www啪成人一区二区麻豆 | 色久优优欧美色久优优| av亚洲精华国产精华| 成人一道本在线| 不卡的电视剧免费网站有什么| 国产精品18久久久久久久久| 精品一区在线看| 精品一区二区三区免费| 国产一区二区三区电影在线观看| 久久99精品国产.久久久久| 韩国女主播成人在线| 国产伦精品一区二区三区视频青涩 | 精品国产三级电影在线观看| 日韩一二三区不卡| 精品国产乱子伦一区| 久久嫩草精品久久久精品一| 国产午夜精品理论片a级大结局| 久久人人爽人人爽| 国产精品剧情在线亚洲| 亚洲色图视频网站| 亚洲国产精品影院| 日本视频中文字幕一区二区三区| 视频一区中文字幕| 精品在线播放午夜| 成人丝袜高跟foot| 欧美制服丝袜第一页| 欧美一区二区成人| 国产亚洲综合在线| 亚洲免费电影在线| 日韩1区2区日韩1区2区| 国产麻豆精品视频| 在线视频欧美精品| 日韩片之四级片| 国产精品拍天天在线| 亚洲成av人影院| 韩国成人在线视频| 91色|porny| 欧美一区二区三区在线观看视频| 久久天堂av综合合色蜜桃网| 亚洲蜜臀av乱码久久精品| 日本强好片久久久久久aaa| 成人一区二区三区| 欧美日韩激情在线| 国产目拍亚洲精品99久久精品| 亚洲精品国产第一综合99久久 | 欧美成va人片在线观看| 国产精品毛片久久久久久久| 天堂va蜜桃一区二区三区漫画版| 国产一区二区剧情av在线| 在线观看91视频| 久久精品一区二区三区不卡| 亚洲精品免费一二三区| 国内精品国产三级国产a久久| 一本色道亚洲精品aⅴ| 日韩精品一区二区三区四区| 成人免费一区二区三区在线观看| 奇米影视一区二区三区小说| 一本色道亚洲精品aⅴ| 久久日韩精品一区二区五区| 亚洲美女屁股眼交| 国产69精品久久久久毛片| 欧美一卡2卡三卡4卡5免费| 17c精品麻豆一区二区免费| 老司机免费视频一区二区三区| 在线亚洲免费视频| 国产精品每日更新| 国产精品一区二区无线| 日韩一级大片在线| 午夜激情综合网| 色网站国产精品| 中文字幕日韩av资源站| 韩国女主播成人在线| 欧美一区二区三区视频免费 | 日本一区二区久久| 韩国v欧美v亚洲v日本v| 日韩亚洲欧美综合| 午夜精品一区二区三区电影天堂 | 国产成人无遮挡在线视频| 日韩欧美一级在线播放| 五月天欧美精品| 日本精品裸体写真集在线观看| 国产欧美日韩不卡| 国产成人综合亚洲网站| 精品国产在天天线2019| 奇米色777欧美一区二区| 宅男噜噜噜66一区二区66| 亚洲国产精品天堂| 欧美日韩日本视频| 午夜在线成人av| 欧美伦理影视网| 视频在线观看一区二区三区| 欧美精品久久久久久久多人混战 | 4438x亚洲最大成人网| 午夜精品一区在线观看| 欧美精品久久久久久久久老牛影院| 亚洲一区在线播放| 在线不卡免费av|