DotProd
Calculates the dot product of two vectors.
The function interface declaration is as follows:
- Operations on floating-point numbers:
HmppResult HMPPS_DotProd_32f(const float *src1, const float *src2, int32_t len, float *dp);
HmppResult HMPPS_DotProd_32fc(const Hmpp32fc *src1, const Hmpp32fc *src2, int32_t len, Hmpp32fc *dp);
HmppResult HMPPS_DotProd_64f(const double *src1, const double *src2, int32_t len, double *dp);
HmppResult HMPPS_DotProd_64fc(const Hmpp64fc *src1, const Hmpp64fc *src2, int32_t len, Hmpp64fc *dp);
HmppResult HMPPS_DotProd_32f32fc(const float *src1, const Hmpp32fc *src2, int32_t len, Hmpp32fc *dp);
HmppResult HMPPS_DotProd_32f64f(const float *src1, const float *src2, int32_t len, double *dp);
HmppResult HMPPS_DotProd_32fc64fc(const Hmpp32fc *src1, const Hmpp32fc *src2, int32_t len, Hmpp64fc *dp);
HmppResult HMPPS_DotProd_32f32fc64fc(const float *src1, const Hmpp32fc *src2, int32_t len, Hmpp64fc *dp);
HmppResult HMPPS_DotProd_64f64fc(const double *src1, const Hmpp64fc *src2, int32_t len, Hmpp64fc *dp);
- Operations on integers:
HmppResult HMPPS_DotProd_16s64s(const int16_t *src1, const int16_t *src2, int32_t len, int64_t *dp);
HmppResult HMPPS_DotProd_16s32f(const int16_t *src1, const int16_t *src2, int32_t len, float *dp);
HmppResult HMPPS_DotProd_16sc64sc(const Hmpp16sc *src1, const Hmpp16sc *src2, int32_t len, Hmpp64sc *dp);
HmppResult HMPPS_DotProd_16s16sc64sc(const int16_t *src1, const Hmpp16sc *src2, int32_t len, Hmpp64sc *dp);
- Operations on integers with scaling:
HmppResult HMPPS_DotProd_32s_S(const int32_t *src1, const int32_t *src2, int32_t len, int32_t *dp, double scale);
HmppResult HMPPS_DotProd_16s32s_S(const int16_t *src1, const int16_t *src2, int32_t len, int32_t *dp, double scale);
HmppResult HMPPS_DotProd_16s32s32s_S(const int16_t *src1, const int32_t *src2, int32_t len, int32_t *dp, double scale);
Parameters
Parameter |
Description |
Value Range |
Input/Output |
|---|---|---|---|
src1 |
Pointer to the first source vector |
The value cannot be NULL. |
Input |
src2 |
Pointer to the second source vector |
The value cannot be NULL. |
Input |
len |
Vector length |
(0, INT_MAX] |
Input |
dp |
Pointer to the result vector |
The value cannot be NULL. |
Output |
scale |
Scale factor |
scale = 2^n, where n is an integer. The value is within (0, INF). |
Input |
Return Value
- Success: HMPP_STS_NO_ERR
- Failure: An error code is returned.
Error Codes
Error Code |
Description |
|---|---|
HMPP_STS_NULL_PTR_ERR |
The value of src1, src2, or dp is NULL. |
HMPP_STS_SIZE_ERR |
The value of len is less than or equal to 0. |
HMPP_STS_SCALE_ERR |
The value of scale is not within the range (0, INF) or is NaN. |
Example
#define BUFFER_SIZE_T 10
void DotProdExample(void)
{
float src1[BUFFER_SIZE_T] = {2.85, 5.44, 7.68, 11.25, 8.56, 8.34, -0.43, 9.70, 0.68, -1.38};
float src2[BUFFER_SIZE_T] = {3.93, 2.30, 3.38, 3.92, 0.20, 3.42, 2.34, -1.36, 1.53, -1.15};
float dst;
HmppResult result = HMPPS_DotProd_32f(src1, src2, BUFFER_SIZE_T, &dst);
printf("result = %d ", result);
if (result != HMPP_STS_NO_ERR) {
return;
}
printf("dotProd = %.2f\n", dst);
}
Output:
result = 0 dotProd = 112.43