DotProd

Dot Product

Supported Technologies

SSE2

Synopsis

FwStatus   fwsDotProd_16s32f ( const Fw16s * pSrc1, const Fw16s * pSrc2, int len, Fw32f * pDp );
FwStatus   fwsDotProd_16s64s ( const Fw16s * pSrc1, const Fw16s * pSrc2, int len, Fw64s * pDp );
FwStatus   fwsDotProd_16s16sc64sc ( const Fw16s * pSrc1, const Fw16sc * pSrc2, int len, Fw64sc * pDp );
FwStatus   fwsDotProd_16s16sc32fc ( const Fw16s * pSrc1, const Fw16sc * pSrc2, int len, Fw32fc * pDp );
FwStatus   fwsDotProd_32f ( const Fw32f * pSrc1, const Fw32f * pSrc2, int len, Fw32f * pDp );
FwStatus   fwsDotProd_32f64f ( const Fw32f * pSrc1, const Fw32f * pSrc2, int len, Fw64f * pDp );
FwStatus   fwsDotProd_32f32fc ( const Fw32f * pSrc1, const Fw32fc * pSrc2, int len, Fw32fc * pDp );
FwStatus   fwsDotProd_32f32fc64fc ( const Fw32f * pSrc1, const Fw32fc * pSrc2, int len, Fw64fc * pDp );
FwStatus   fwsDotProd_64f ( const Fw64f * pSrc1, const Fw64f * pSrc2, int len, Fw64f * pDp );
FwStatus   fwsDotProd_64f64fc ( const Fw64f * pSrc1, const Fw64fc * pSrc2, int len, Fw64fc * pDp );
FwStatus   fwsDotProd_16sc64sc ( const Fw16sc * pSrc1, const Fw16sc * pSrc2, int len, Fw64sc * pDp );
FwStatus   fwsDotProd_16sc32fc ( const Fw16sc * pSrc1, const Fw16sc * pSrc2, int len, Fw32fc * pDp );
FwStatus   fwsDotProd_32fc ( const Fw32fc * pSrc1, const Fw32fc * pSrc2, int len, Fw32fc * pDp );
FwStatus   fwsDotProd_32fc64fc ( const Fw32fc * pSrc1, const Fw32fc * pSrc2, int len, Fw64fc * pDp );
FwStatus   fwsDotProd_64fc ( const Fw64fc * pSrc1, const Fw64fc * pSrc2, int len, Fw64fc * pDp );
FwStatus   fwsDotProd_16s_Sfs ( const Fw16s * pSrc1, const Fw16s * pSrc2, int len, Fw16s * pDp, int scaleFactor );
FwStatus   fwsDotProd_16s32s_Sfs ( const Fw16s * pSrc1, const Fw16s * pSrc2, int len, Fw32s * pDp, int scaleFactor );
FwStatus   fwsDotProd_16s16sc32sc_Sfs ( const Fw16s * pSrc1, const Fw16sc * pSrc2, int len, Fw32sc * pDp, int scaleFactor );
FwStatus   fwsDotProd_16s32s32s_Sfs ( const Fw16s * pSrc1, const Fw32s * pSrc2, int len, Fw32s * pDp, int scaleFactor );
FwStatus   fwsDotProd_16s16sc_Sfs ( const Fw16s * pSrc1, const Fw16sc * pSrc2, int len, Fw16sc * pDp, int scaleFactor );
FwStatus   fwsDotProd_32s_Sfs ( const Fw32s * pSrc1, const Fw32s * pSrc2, int len, Fw32s * pDp, int scaleFactor );
FwStatus   fwsDotProd_32s32sc_Sfs ( const Fw32s * pSrc1, const Fw32sc * pSrc2, int len, Fw32sc * pDp, int scaleFactor );
FwStatus   fwsDotProd_16sc_Sfs ( const Fw16sc * pSrc1, const Fw16sc * pSrc2, int len, Fw16sc * pDp, int scaleFactor );
FwStatus   fwsDotProd_16sc32sc_Sfs ( const Fw16sc * pSrc1, const Fw16sc * pSrc2, int len, Fw32sc * pDp, int scaleFactor );
FwStatus   fwsDotProd_32sc_Sfs ( const Fw32sc * pSrc1, const Fw32sc * pSrc2, int len, Fw32sc * pDp, int scaleFactor );

Parameters

len   Specifies the number of elements in a buffer.
pDp   Pointer to the destination buffer that contains the dot product of the source buffers.
pSrc1   Pointer to source buffer one.
pSrc2   Pointer to source buffer two.
scaleFactor   Specifies an integer scaling factor for the Sfs operation. The returned result is multiplied by 2^(-scaleFactor).

Description

These functions step through vector elements in two buffers, calculate the dot product of the vectors, and write the result to a location specified by a pointer.

The following formula is used.

 DotProduct = ((n = 0) - (len-1)) Sum(pSrc1[n]  *pSrc2[n])

There are 16-bit and 32-bit signed and signed complex versions that perform an integer scaling operation on the result.