⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basop.c

📁 嵌入式linux系统的网络编程(C++) 在ARM上实现视频会议 此程序获得全国研究生电子大赛一等奖 压缩包内为全部源码
💻 C
📖 第 1 页 / 共 5 页
字号:
 |   Complexity weight : 1                                                   | |                                                                           | |   Inputs :                                                                | |                                                                           | |    var1                                                                   | |             16 bit short signed integer (Word16) whose value falls in the | |             range : 0xffff 8000 <= var1 <= 0x0000 7fff.                   | |                                                                           | |    var2                                                                   | |             16 bit short signed integer (Word16) whose value falls in the | |             range : 0xffff 8000 <= var1 <= 0x0000 7fff.                   | |                                                                           | |   Outputs :                                                               | |                                                                           | |    none                                                                   | |                                                                           | |   Return Value :                                                          | |                                                                           | |    var_out                                                                | |             16 bit short signed integer (Word16) whose value falls in the | |             range : 0xffff 8000 <= var_out <= 0x0000 7fff.                | |___________________________________________________________________________|*/Word16 shl(Word16 var1,Word16 var2){    Word16 var_out;    Word32 L_result;    if (var2 < 0) {        var_out = shr(var1, (Word16)-var2);    }    else {        L_result = (Word32) var1 * ((Word32) 1 << var2);        if ( ((var2 > 15) && (var1 != 0)) ||             (L_result != (Word32)((Word16) L_result)) ) {            Overflow = 1;            var_out = (var1 > 0) ? MAX_16 : MIN_16;        }        else {            var_out = extract_l(L_result);        }    }    return(var_out);}/*___________________________________________________________________________ |                                                                           | |   Function Name : shr                                                     | |                                                                           | |   Purpose :                                                               | |                                                                           | |   Arithmetically shift the 16 bit input var1 right var2 positions with    | |   sign extension. If var2 is negative, arithmetically shift var1 left by  | |   -var2 with sign extension. Saturate the result in case of underflows or | |   overflows.                                                              | |                                                                           | |   Complexity weight : 1                                                   | |                                                                           | |   Inputs :                                                                | |                                                                           | |    var1                                                                   | |             16 bit short signed integer (Word16) whose value falls in the | |             range : 0xffff 8000 <= var1 <= 0x0000 7fff.                   | |                                                                           | |    var2                                                                   | |             16 bit short signed integer (Word16) whose value falls in the | |             range : 0xffff 8000 <= var1 <= 0x0000 7fff.                   | |                                                                           | |   Outputs :                                                               | |                                                                           | |    none                                                                   | |                                                                           | |   Return Value :                                                          | |                                                                           | |    var_out                                                                | |             16 bit short signed integer (Word16) whose value falls in the | |             range : 0xffff 8000 <= var_out <= 0x0000 7fff.                | |___________________________________________________________________________|*/Word16 shr(Word16 var1,Word16 var2){    Word16 var_out;    if (var2 < 0) {        var_out = shl(var1, (Word16)-var2);    }    else {        if (var2 >= 15) {            var_out = (var1 < (Word16)0) ? (Word16)-1 : (Word16)0;        }        else {            if (var1 < 0) {                var_out = ~(( ~var1) >> var2 );            }            else {                var_out = var1 >> var2;            }        }    }    return(var_out);}/*___________________________________________________________________________ |                                                                           | |   Function Name : mult                                                    | |                                                                           | |   Purpose :                                                               | |                                                                           | |    Performs the multiplication of var1 by var2 and gives a 16 bit result  | |    which is scaled i.e.:                                                  | |             mult(var1,var2) = shr((var1 times var2),15) and               | |             mult(-32768,-32768) = 32767.                                  | |                                                                           | |   Complexity weight : 1                                                   | |                                                                           | |   Inputs :                                                                | |                                                                           | |    var1                                                                   | |             16 bit short signed integer (Word16) whose value falls in the | |             range : 0xffff 8000 <= var1 <= 0x0000 7fff.                   | |                                                                           | |    var2                                                                   | |             16 bit short signed integer (Word16) whose value falls in the | |             range : 0xffff 8000 <= var1 <= 0x0000 7fff.                   | |                                                                           | |   Outputs :                                                               | |                                                                           | |    none                                                                   | |                                                                           | |   Return Value :                                                          | |                                                                           | |    var_out                                                                | |             16 bit short signed integer (Word16) whose value falls in the | |             range : 0xffff 8000 <= var_out <= 0x0000 7fff.                | |___________________________________________________________________________|*/Word16 mult(Word16 var1, Word16 var2){    Word16 var_out;    Word32 L_produit;    L_produit = (Word32)var1 * (Word32)var2;    L_produit = (L_produit & (Word32) 0xffff8000L) >> 15;    if (L_produit & (Word32) 0x00010000L) {        L_produit |= (Word32) 0xffff0000L;    }    var_out = sature(L_produit);    return(var_out);}/*___________________________________________________________________________ |                                                                           | |   Function Name : L_mult                                                  | |                                                                           | |   Purpose :                                                               | |                                                                           | |   L_mult is the 32 bit result of the multiplication of var1 times var2    | |   with one shift left i.e.:                                               | |        L_mult(var1,var2) = shl((var1 times var2),1) and                   | |        L_mult(-32768,-32768) = 2147483647.                                | |                                                                           | |   Complexity weight : 1                                                   | |                                                                           | |   Inputs :                                                                | |                                                                           | |    var1                                                                   | |             16 bit short signed integer (Word16) whose value falls in the | |             range : 0xffff 8000 <= var1 <= 0x0000 7fff.                   | |                                                                           | |    var2                                                                   | |             16 bit short signed integer (Word16) whose value falls in the | |             range : 0xffff 8000 <= var1 <= 0x0000 7fff.                   | |                                                                           | |   Outputs :                                                               | |                                                                           | |    none                                                                   | |                                                                           | |   Return Value :                                                          | |                                                                           | |    L_var_out                                                              | |             32 bit long signed integer (Word32) whose value falls in the  | |             range : 0x8000 0000 <= L_var_out <= 0x7fff ffff.              | |___________________________________________________________________________|*/Word32 L_mult(Word16 var1,Word16 var2){    Word32 L_var_out;    L_var_out = (Word32)var1 * (Word32)var2;    if (L_var_out != (Word32)0x40000000L) {        L_var_out *= 2L;    }    else {        Overflow = 1;        L_var_out = MAX_32;    }    return(L_var_out);}/*___________________________________________________________________________ |                                                                           | |   Function Name : negate                                                  | |                                                                           | |   Purpose :                                                               | |                                                                           | |   Negate var1 with saturation, saturate in the case where input is -32768:| |                negate(var1) = sub(0,var1).                                | |                                                                           | |   Complexity weight : 1                                                   | |                                                                           | |   Inputs :                                                                | |                                                                           | |    var1                                                                   | |             16 bit short signed integer (Word16) whose value falls in the | |             range : 0xffff 8000 <= var1 <= 0x0000 7fff.                   | |                                                                           | |   Outputs :                                                               | |                                                                           | |    none                                                                   | |                                                                           | |   Return Value :                                                          | |                                                                           | |    var_out                                                                | |             16 bit short signed integer (Word16) whose value falls in the |

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -