我要评分
获取效率
正确性
完整性
易理解

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