.TH DSP 3
.SH NAME
initdp, freedp, dotprod, sumsq, peakval -\ SIMD-assisted
digital signal processing primitives
.SH SYNOPSIS
.nf
.ft
#include "fec.h"

void *initdp(signed short *coeffs,int len);
long dotprod(void *p,signed short *a);
void freedp(void *p);

unsigned long long sumsq(signed short *in,int cnt);

int peakval(signed short *b,int cnt);

.SH DESCRIPTION
These functions provide several basic primitives useful in digital
signal processing (DSP), especially in modems.  The \fBinitdp\fR,
\fBdotprod\fR and \fBfreedp\fR functions implement an integer dot
product useful in correlation and filtering operations on signed
16-bit integers. \fBsumsq\fR computes the sum
of the squares of an array of signed 16-bit integers,
useful for measuring the energy of a signal. \fBpeakval\fR returns the
absolute value of the largest magitude element in the input array,
useful for scaling a signal's amplitude.

Each function uses IA32 or PowerPC Altivec instructions when
available; otherwise, a portable C version is used.

.SH USAGE
To create a FIR filter or correlator, call \fBinitdp\fR with the
coefficients in \fBcoeff\fR and their number in \fBlen\fR.  This
creates the appropriate data structures and returns a handle.

To compute a dot product, pass the handle from \fBinitdp\fR and the
input array to \fBdotprod\fR. No length field is needed as the number
of samples will be taken from the \fBlen\fR parameter originally given
to \fBinitdp\fR. There must be at least as many samples in the input
array as there were coefficients passed to \fBinitdp\fR.

When the filter or correlator is no longer needed, the data structures
may be freed by passing the handle to \fBfreedp\fR.

The user is responsible for scaling the inputs to \fBinitdp\fR and
\fBdotprod\fR, as the 32-bit result from \fBdotprod\fR will silently
wrap around in the event of overflow.

To compute the sum of the squares of an array of signed 16-bit
integers, use sumsq\fR. This returns a 64 bit sum.

\fBpeakval\fR computes the absolute value of each 16-bit element in
the input array and returns the largest.

.SH RETURN VALUES

\fBinitdp\fR returns a handle that points to a control block, or NULL in
the event of an error (such as a memory allocation failure). \fBsumsq\fR
and \fBpeakval\fR have no error returns.

.SH AUTHOR and COPYRIGHT
Phil Karn, KA9Q (karn@ka9q.net)
