📄 basic_op.c
字号:
Word16 var_out;
Word32 L_diff;
L_diff = (Word32) var1 - var2;
var_out = sature(L_diff);
return(var_out);
}*/
/*___________________________________________________________________________
| |
| Function Name : abs_s |
| |
| Purpose : |
| |
| Absolute value of var1; abs_s(-32768) = 32767. |
| |
| 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 |
| range : 0x0000 0000 <= var_out <= 0x0000 7fff. |
|___________________________________________________________________________|
*/
/*inline Word16 abs_s(Word16 var1)
{
Word16 var_out;
if (var1 == (Word16)0X8000 )
{
var_out = MAX_16;
}
else
{
if (var1 < 0)
{
var_out = -var1;
}
else
{
var_out = var1;
}
}
return(var_out);
}*/
/*___________________________________________________________________________
| |
| Function Name : shl |
| |
| Purpose : |
| |
| Arithmetically shift the 16 bit input var1 left var2 positions.Zero fill|
| the var2 LSB of the result. If var2 is negative, arithmetically shift |
| var1 right 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. |
|___________________________________________________________________________|
*/
/*inline Word16 shl(Word16 var1,Word16 var2)
{
Word16 var_out;
Word32 resultat;
if (var2 < 0)
{
var_out = shr(var1,-var2);
printf("error\n");
}
else
{
resultat = (Word32) var1 * ((Word32) 1 << var2);
if ((var2 > 15 && var1 != 0) || (resultat != (Word32)((Word16) resultat)))
{
Overflow = 1;
var_out = (var1 > 0) ? MAX_16 : MIN_16;
}
else
{
var_out = extract_l(resultat);
}
}
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. |
|___________________________________________________________________________|
*/
/*inline Word16 shr(Word16 var1,Word16 var2)
{
Word16 var_out;
if (var2 < 0)
{
var_out = shl(var1,-var2);
printf("error\n");
}
else
{
if (var2 >= 15)
{
var_out = (var1 < 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. |
|___________________________________________________________________________|
*/
/*inline 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 = L_produit | (Word32) 0xffff0000L;
var_out = sature(L_produit);
return(var_out);
}*/
/*___________________________________________________________________________
| |
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -