spandsp
0.0.6
Main Page
Related Pages
Classes
Files
File List
File Members
complex_vector_int.h
1
/*
2
* SpanDSP - a series of DSP components for telephony
3
*
4
* complex_vector_int.h
5
*
6
* Written by Steve Underwood <steveu@coppice.org>
7
*
8
* Copyright (C) 2003 Steve Underwood
9
*
10
* All rights reserved.
11
*
12
* This program is free software; you can redistribute it and/or modify
13
* it under the terms of the GNU Lesser General Public License version 2.1,
14
* as published by the Free Software Foundation.
15
*
16
* This program is distributed in the hope that it will be useful,
17
* but WITHOUT ANY WARRANTY; without even the implied warranty of
18
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
* GNU Lesser General Public License for more details.
20
*
21
* You should have received a copy of the GNU Lesser General Public
22
* License along with this program; if not, write to the Free Software
23
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24
*/
25
26
#if !defined(_SPANDSP_COMPLEX_VECTOR_INT_H_)
27
#define _SPANDSP_COMPLEX_VECTOR_INT_H_
28
29
#if defined(__cplusplus)
30
extern
"C"
31
{
32
#endif
33
34
static
__inline__
void
cvec_copyi(
complexi_t
z[],
const
complexi_t
x[],
int
n)
35
{
36
memcpy(z, x, n*
sizeof
(z[0]));
37
}
38
/*- End of function --------------------------------------------------------*/
39
40
static
__inline__
void
cvec_copyi16(
complexi16_t
z[],
const
complexi16_t
x[],
int
n)
41
{
42
memcpy(z, x, n*
sizeof
(z[0]));
43
}
44
/*- End of function --------------------------------------------------------*/
45
46
static
__inline__
void
cvec_copyi32(
complexi32_t
z[],
const
complexi32_t
x[],
int
n)
47
{
48
memcpy(z, x, n*
sizeof
(z[0]));
49
}
50
/*- End of function --------------------------------------------------------*/
51
52
static
__inline__
void
cvec_zeroi(
complexi_t
z[],
int
n)
53
{
54
memset(z, 0, n*
sizeof
(z[0]));
55
}
56
/*- End of function --------------------------------------------------------*/
57
58
static
__inline__
void
cvec_zeroi16(
complexi16_t
z[],
int
n)
59
{
60
memset(z, 0, n*
sizeof
(z[0]));
61
}
62
/*- End of function --------------------------------------------------------*/
63
64
static
__inline__
void
cvec_zeroi32(
complexi32_t
z[],
int
n)
65
{
66
memset(z, 0, n*
sizeof
(z[0]));
67
}
68
/*- End of function --------------------------------------------------------*/
69
70
static
__inline__
void
cvec_seti(
complexi_t
z[],
complexi_t
*x,
int
n)
71
{
72
int
i;
73
74
for
(i = 0; i < n; i++)
75
z[i] = *x;
76
}
77
/*- End of function --------------------------------------------------------*/
78
79
static
__inline__
void
cvec_seti16(
complexi16_t
z[],
complexi16_t
*x,
int
n)
80
{
81
int
i;
82
83
for
(i = 0; i < n; i++)
84
z[i] = *x;
85
}
86
/*- End of function --------------------------------------------------------*/
87
88
static
__inline__
void
cvec_seti32(
complexi32_t
z[],
complexi32_t
*x,
int
n)
89
{
90
int
i;
91
92
for
(i = 0; i < n; i++)
93
z[i] = *x;
94
}
95
/*- End of function --------------------------------------------------------*/
96
97
/*! \brief Find the dot product of two complex int16_t vectors.
98
\param x The first vector.
99
\param y The first vector.
100
\param n The number of elements in the vectors.
101
\return The dot product of the two vectors. */
102
SPAN_DECLARE(
complexi32_t
)
cvec_dot_prodi16
(const
complexi16_t
x[], const
complexi16_t
y[],
int
n);
103
104
/*! \brief Find the dot product of two complex int32_t vectors.
105
\param x The first vector.
106
\param y The first vector.
107
\param n The number of elements in the vectors.
108
\return The dot product of the two vectors. */
109
SPAN_DECLARE(
complexi32_t
)
cvec_dot_prodi32
(const
complexi32_t
x[], const
complexi32_t
y[],
int
n);
110
111
/*! \brief Find the dot product of two complex int16_t vectors, where the first is a circular buffer
112
with an offset for the starting position.
113
\param x The first vector.
114
\param y The first vector.
115
\param n The number of elements in the vectors.
116
\param pos The starting position in the x vector.
117
\return The dot product of the two vectors. */
118
SPAN_DECLARE(
complexi32_t
)
cvec_circular_dot_prodi16
(const
complexi16_t
x[], const
complexi16_t
y[],
int
n,
int
pos);
119
120
SPAN_DECLARE(
void
) cvec_lmsi16(const
complexi16_t
x[],
complexi16_t
y[],
int
n, const
complexi16_t
*error);
121
122
SPAN_DECLARE(
void
) cvec_circular_lmsi16(const
complexi16_t
x[],
complexi16_t
y[],
int
n,
int
pos, const
complexi16_t
*error);
123
124
#if defined(__cplusplus)
125
}
126
#endif
127
128
#endif
129
/*- End of file ------------------------------------------------------------*/
src
spandsp
complex_vector_int.h
Generated on Sun Jul 1 2012 19:52:20 for spandsp by
1.8.1.1