/****************************************
        SV_basic_op.h
*****************************************/

#ifndef __COMMON_BASICOP__
#define __COMMON_BASICOP__

#include <string.h>
#include <math.h>
#include "Define_config.h"
#include "SV_common_include.h"

extern short SV_shl(short var1, short var2);
extern short SV_shr(short var1, short var2);
extern int SV_L_deposit_h(short var1);
extern short SV_add(short var1, short var2);
extern short SV_sub(short var1, short var2);
extern short SV_abs_s(short var1);
extern short SV_mult_r(short var1, short var2);
extern short SV_div_s(short var1, short var2);

extern int SV_L_shl(int L_var1, short var2);
extern int SV_L_shr(int L_var1, short var2);
extern int SV_L_shr_r(int L_var1, short var2);
extern short SV_L_norm(int L_var1);
extern short SV_saturate(int L_var1);
extern short SV_extract_l(int L_var1);
extern short SV_extract_h(int L_var1);
extern int SV_L_deposit_l(short var1);
extern int SV_L_add(int L_var1, int L_var2);
extern int SV_L_sub(int L_var1, int L_var2);
extern int SV_L_mult(short var1, short var2);
extern int SV_L_mpy_ls(int L_var2, short var1);
extern int SV_L_mpy_ll(int L_var1, int L_var2);
extern int SV_L_mac(int L_var3, short var1, short var2);
extern int SV_L_msu(int L_var3, short var1, short var2);
extern int SV_L_divide(int L_num, int L_denom);
extern int fx_SV_32bit_Divide(int numerator, int denominator, short MIN_denominator, short Qbit);

extern INT64 SV_LL_shl(INT64 L_var1, short var2);
extern INT64 SV_LL_shr(INT64 L_var1, short var2);
extern int SV_LL_norm(INT64 L_var1);
extern int SV_L_extract_h(INT64 L_var1);
extern int fx_SV_64bit_Divide(INT64 numerator, INT64 denominator, short MIN_denominator, short Qbit);

extern int SV_fnExp2(int L_Input);
extern int SV_fnExp10(int L_Input);
extern int SV_fnExp(int L_Input/*Q26*/);//Q31


long long SV_LL_add(long long L_var1, long long L_var2);
long long SV_LL_sub(long long L_var1, long long L_var2);
int SV_L_abs(int L_var1);
int SV_L_negate(int L_var1);
int SV_L_saturate(long long L_var);
short SV_mult(short var1, short var2);
short SV_norm_l(int L_var1);
short SV_norm_s(short var1);
short SV_negate(short var1);

int divide(int var1_denorm, int q1, int var2_denorm, int q2, int dest_qForm);

short int_sqrt_0_50(int num);		//in: Q31, out:Q15
short int_sqrt_0_25(int num);		//in: Q31, out:Q15
short int_sqrt_0_75(int num);		//in: Q31, out:Q15
int SV_fnLog2(int L_Input);
int SV_fnLog10(int L_Input);
int SV_10log10_l(int pwr, short pwr_q);
short Fx_10log10(int pwr, short pwr_q);

#endif





















