6 #include "xs3_math_conf.h"
7 #include "xs3_math_types.h"
95 const int16_t b_real[],
96 const int16_t b_imag[],
97 const int16_t c_real[],
98 const int16_t c_imag[],
99 const unsigned length,
116 #define xs3_vect_complex_s16_add_prepare xs3_vect_s32_add_prepare
180 const int16_t b_real[],
181 const int16_t b_imag[],
183 const unsigned length,
200 #define xs3_vect_complex_s16_add_scalar_prepare xs3_vect_s32_add_prepare
264 const int16_t b_real[],
265 const int16_t b_imag[],
266 const int16_t c_real[],
267 const int16_t c_imag[],
268 const unsigned length,
284 #define xs3_vect_complex_s16_conj_mul_prepare xs3_vect_complex_s16_mul_prepare
322 const int16_t b_real[],
323 const int16_t b_imag[],
324 const unsigned length);
391 const int16_t b_real[],
392 const int16_t b_imag[],
393 const unsigned length,
395 const int16_t* rot_table,
396 const unsigned table_rows);
473 const int16_t b_real[],
474 const int16_t b_imag[],
475 const int16_t c_real[],
476 const int16_t c_imag[],
477 const unsigned length,
553 const int16_t b_real[],
554 const int16_t b_imag[],
555 const int16_t c_real[],
556 const int16_t c_imag[],
557 const unsigned length,
634 const int16_t b_real[],
635 const int16_t b_imag[],
636 const int16_t c_real[],
637 const int16_t c_imag[],
638 const unsigned length,
715 const int16_t b_real[],
716 const int16_t b_imag[],
717 const int16_t c_real[],
718 const int16_t c_imag[],
719 const unsigned length,
827 #define xs3_vect_complex_s16_nmacc_prepare xs3_vect_complex_s16_macc_prepare
843 #define xs3_vect_complex_s16_conj_macc_prepare xs3_vect_complex_s16_macc_prepare
859 #define xs3_vect_complex_s16_conj_nmacc_prepare xs3_vect_complex_s16_macc_prepare
873 #define xs3_vect_complex_s16_mag_prepare xs3_vect_complex_s32_mag_prepare
937 const int16_t b_real[],
938 const int16_t b_imag[],
939 const int16_t c_real[],
940 const int16_t c_imag[],
941 const unsigned length,
1073 const int16_t b_real[],
1074 const int16_t b_imag[],
1075 const int16_t c_real[],
1076 const unsigned length,
1206 const int16_t b_real[],
1207 const int16_t b_imag[],
1209 const unsigned length,
1226 #define xs3_vect_complex_s16_real_scale_prepare xs3_vect_s16_scale_prepare
1288 const int16_t b_real[],
1289 const int16_t b_imag[],
1290 const int16_t c_real,
1291 const int16_t c_imag,
1292 const unsigned length,
1308 #define xs3_vect_complex_s16_scale_prepare xs3_vect_complex_s16_mul_prepare
1350 const int16_t b_real,
1351 const int16_t b_imag,
1352 const unsigned length);
1403 const int16_t b_real[],
1404 const int16_t b_imag[],
1405 const unsigned length,
1457 const int16_t b_real[],
1458 const int16_t b_imag[],
1459 const unsigned length,
1508 const int16_t b_real[],
1509 const int16_t b_imag[],
1510 const unsigned length,
1639 const int16_t b_real[],
1640 const int16_t b_imag[],
1641 const int16_t c_real[],
1642 const int16_t c_imag[],
1643 const unsigned length,
1660 #define xs3_vect_complex_s16_sub_prepare xs3_vect_s32_add_prepare
1695 const int16_t b_real[],
1696 const int16_t b_imag[],
1697 const unsigned length);
int exponent_t
An exponent.
Definition: xs3_math_types.h:76
int left_shift_t
A leftwards arithmetic bit-shift.
Definition: xs3_math_types.h:110
int right_shift_t
A rightwards arithmetic bit-shift.
Definition: xs3_math_types.h:98
unsigned headroom_t
Headroom of some integer or integer array.
Definition: xs3_math_types.h:86
headroom_t xs3_vect_complex_s16_conj_mul(int16_t a_real[], int16_t a_imag[], const int16_t b_real[], const int16_t b_imag[], const int16_t c_real[], const int16_t c_imag[], const unsigned length, const right_shift_t a_shr)
Multiply one complex 16-bit vector element-wise by the complex conjugate of another.
Definition: xs3_vect_complex_mul.c:83
headroom_t xs3_vect_complex_s16_sub(int16_t a_real[], int16_t a_imag[], const int16_t b_real[], const int16_t b_imag[], const int16_t c_real[], const int16_t c_imag[], const unsigned length, const right_shift_t b_shr, const right_shift_t c_shr)
Subtract one complex 16-bit vector from another.
Definition: xs3_vect.c:93
headroom_t xs3_vect_complex_s16_conj_macc(int16_t acc_real[], int16_t acc_imag[], const int16_t b_real[], const int16_t b_imag[], const int16_t c_real[], const int16_t c_imag[], const unsigned length, const right_shift_t acc_shr, const right_shift_t bc_sat)
Multiply one complex 16-bit vector element-wise by the complex conjugate of another,...
Definition: xs3_vect_complex_conj_macc.c:18
headroom_t xs3_vect_complex_s16_macc(int16_t acc_real[], int16_t acc_imag[], const int16_t b_real[], const int16_t b_imag[], const int16_t c_real[], const int16_t c_imag[], const unsigned length, const right_shift_t acc_shr, const right_shift_t bc_sat)
Multiply one complex 16-bit vector element-wise by another, and add the result to an accumulator.
Definition: xs3_vect_complex_macc.c:18
headroom_t xs3_vect_complex_s16_mag(int16_t a[], const int16_t b_real[], const int16_t b_imag[], const unsigned length, const right_shift_t b_shr, const int16_t *rot_table, const unsigned table_rows)
Compute the magnitude of each element of a complex 16-bit vector.
Definition: xs3_vect_complex_mag.c:17
headroom_t xs3_vect_complex_s16_add(int16_t a_real[], int16_t a_imag[], const int16_t b_real[], const int16_t b_imag[], const int16_t c_real[], const int16_t c_imag[], const unsigned length, const right_shift_t b_shr, const right_shift_t c_shr)
Add one complex 16-bit vector to another.
Definition: xs3_vect.c:13
headroom_t xs3_vect_complex_s16_real_mul(int16_t a_real[], int16_t a_imag[], const int16_t b_real[], const int16_t b_imag[], const int16_t c_real[], const unsigned length, const right_shift_t a_shr)
Multiply a complex 16-bit vector element-wise by a real 16-bit vector.
Definition: xs3_vect_complex_mul.c:18
headroom_t xs3_vect_complex_s16_shl(int16_t a_real[], int16_t a_imag[], const int16_t b_real[], const int16_t b_imag[], const unsigned length, const left_shift_t b_shl)
Left-shift each element of a complex 16-bit vector by a specified number of bits.
Definition: xs3_vect.c:67
headroom_t xs3_vect_complex_s16_headroom(const int16_t b_real[], const int16_t b_imag[], const unsigned length)
Calculate the headroom of a complex 16-bit array.
Definition: xs3_vect.c:29
headroom_t xs3_vect_complex_s16_squared_mag(int16_t a[], const int16_t b_real[], const int16_t b_imag[], const unsigned length, const right_shift_t a_shr)
Get the squared magnitudes of elements of a complex 16-bit vector.
Definition: xs3_vect_complex_mag.c:124
headroom_t xs3_vect_complex_s16_real_scale(int16_t a_real[], int16_t a_imag[], const int16_t b_real[], const int16_t b_imag[], const int16_t c, const unsigned length, const right_shift_t a_shr)
Multiply a complex 16-bit vector by a real scalar.
Definition: xs3_vect.c:40
headroom_t xs3_vect_complex_s16_shr(int16_t a_real[], int16_t a_imag[], const int16_t b_real[], const int16_t b_imag[], const unsigned length, const right_shift_t b_shr)
Right-shift each element of a complex 16-bit vector by a specified number of bits.
Definition: xs3_vect.c:78
headroom_t xs3_vect_complex_s16_scale(int16_t a_real[], int16_t a_imag[], const int16_t b_real[], const int16_t b_imag[], const int16_t c_real, const int16_t c_imag, const unsigned length, const right_shift_t a_shr)
Multiply a complex 16-bit vector by a complex 16-bit scalar.
Definition: xs3_vect_complex_mul.c:116
headroom_t xs3_vect_complex_s16_conj_nmacc(int16_t acc_real[], int16_t acc_imag[], const int16_t b_real[], const int16_t b_imag[], const int16_t c_real[], const int16_t c_imag[], const unsigned length, const right_shift_t acc_shr, const right_shift_t bc_sat)
Multiply one complex 16-bit vector element-wise by the complex conjugate of another,...
Definition: xs3_vect_complex_conj_macc.c:52
headroom_t xs3_vect_complex_s16_nmacc(int16_t acc_real[], int16_t acc_imag[], const int16_t b_real[], const int16_t b_imag[], const int16_t c_real[], const int16_t c_imag[], const unsigned length, const right_shift_t acc_shr, const right_shift_t bc_sat)
Multiply one complex 16-bit vector element-wise by another, and subtract the result from an accumulat...
Definition: xs3_vect_complex_macc.c:52
void xs3_vect_complex_s16_set(int16_t a_real[], int16_t a_imag[], const int16_t b_real, const int16_t b_imag, const unsigned length)
Set each element of a complex 16-bit vector to a specified value.
Definition: xs3_vect.c:55
headroom_t xs3_vect_complex_s16_mul(int16_t a_real[], int16_t a_imag[], const int16_t b_real[], const int16_t b_imag[], const int16_t c_real[], const int16_t c_imag[], const unsigned length, const right_shift_t a_shr)
Multiply one complex 16-bit vector element-wise by another.
Definition: xs3_vect_complex_mul.c:50
complex_s32_t xs3_vect_complex_s16_sum(const int16_t b_real[], const int16_t b_imag[], const unsigned length)
Get the sum of elements of a complex 16-bit vector.
Definition: xs3_vect.c:109
headroom_t xs3_vect_complex_s16_add_scalar(int16_t a_real[], int16_t a_imag[], const int16_t b_real[], const int16_t b_imag[], const complex_s16_t c, const unsigned length, const right_shift_t b_shr)
Add a scalar to a complex 16-bit vector.
Definition: xs3_vect.c:242
void xs3_vect_complex_s16_real_mul_prepare(exponent_t *a_exp, right_shift_t *a_shr, const exponent_t b_exp, const exponent_t c_exp, const headroom_t b_hr, const headroom_t c_hr)
Obtain the output exponent and output shift used by xs3_vect_complex_s16_real_mul().
Definition: xs3_complex_prepare.c:50
void xs3_vect_complex_s16_macc_prepare(exponent_t *new_acc_exp, right_shift_t *acc_shr, right_shift_t *bc_sat, const exponent_t acc_exp, const exponent_t b_exp, const exponent_t c_exp, const headroom_t acc_hr, const headroom_t b_hr, const headroom_t c_hr)
Obtain the output exponent and shifts needed by xs3_vect_complex_s16_macc().
Definition: xs3_complex_prepare.c:17
void xs3_vect_complex_s16_mul_prepare(exponent_t *a_exp, right_shift_t *a_shr, const exponent_t b_exp, const exponent_t c_exp, const headroom_t b_hr, const headroom_t c_hr)
Obtain the output exponent and output shift used by xs3_vect_complex_s16_mul() and xs3_vect_complex_s...
Definition: xs3_complex_prepare.c:121
void xs3_vect_complex_s16_squared_mag_prepare(exponent_t *a_exp, right_shift_t *a_shr, const exponent_t b_exp, const headroom_t b_hr)
Obtain the output exponent and input shift used by xs3_vect_complex_s16_squared_mag().
Definition: xs3_complex_prepare.c:162
A complex number with a 16-bit real part and 16-bit imaginary part.
Definition: xs3_math_types.h:60
A complex number with a 32-bit real part and 32-bit imaginary part.
Definition: xs3_math_types.h:49