GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
DSP(3) FreeBSD Library Functions Manual DSP(3)

initdp, freedp, dotprod, sumsq, peakval - SIMD-assisted digital signal processing primitives

#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);

These functions provide several basic primitives useful in digital signal processing (DSP), especially in modems. The initdp, dotprod and freedp functions implement an integer dot product useful in correlation and filtering operations on signed 16-bit integers. sumsq computes the sum of the squares of an array of signed 16-bit integers, useful for measuring the energy of a signal. peakval 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.

To create a FIR filter or correlator, call initdp with the coefficients in coeff and their number in len. This creates the appropriate data structures and returns a handle.

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

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

The user is responsible for scaling the inputs to initdp and dotprod, as the 32-bit result from dotprod 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. This returns a 64 bit sum.

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

initdp returns a handle that points to a control block, or NULL in the event of an error (such as a memory allocation failure). sumsq and peakval have no error returns.

Phil Karn, KA9Q (karn@ka9q.net)

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.