---
title: Sum
description: "计算向量中所有元素之和。计算公式为：。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/240RC1/accel/kunpengaccel_hmpp_06_0098.html
sourcePath: /source/zh/kunpengboostkithistory/240RC1/accel/kunpengaccel_hmpp_06_0098.html
indexId: 90c1fab8a907db5f8aacdecedb2fdc9b35784aa7a63686e0d4aaba8aba817b6e77
---
# Sum

计算向量中所有元素之和。计算公式为：。

函数接口声明如下：

- 浮点数的操作：
  HmppResult HMPPS_Sum_32f(const float *src, int32_t len, float *sum, HmppHintAlgorithm hint);

  HmppResult HMPPS_Sum_64f(const double *src, int32_t len, double *sum);

  HmppResult HMPPS_Sum_32fc(const Hmpp32fc *src, int32_t len, Hmpp32fc *sum, HmppHintAlgorithm hint);

  HmppResult HMPPS_Sum_64fc(const Hmpp64fc *src, int32_t len, Hmpp64fc *sum);

- 整型数的缩放操作：
  HmppResult HMPPS_Sum_16s_S(const int16_t *src, int32_t len, int16_t *sum, double scale);

  HmppResult HMPPS_Sum_32s_S(const int32_t *src, int32_t len, int32_t *sum, double scale);

  HmppResult HMPPS_Sum_16s32s_S(const int16_t *src, int32_t len, int32_t *sum, double scale);

  HmppResult HMPPS_Sum_16sc_S(const Hmpp16sc *src, int32_t len, Hmpp16sc *sum, double scale);

  HmppResult HMPPS_Sum_16sc32sc_S(const Hmpp16sc *src, int32_t len, Hmpp32sc *sum, double scale);


#### 参数

| 参数名 | 描述 | 取值范围 | 输入/输出 |
| --- | --- | --- | --- |
| src | 指向源向量的指针。 | 非空 | 输入 |
| len | 向量长度。 | (0,INT\_MAX] | 输入 |
| sum | 指向向量和的指针。 | 非空 | 输出 |
| scale | 缩放因数。 | (0,INF)且输入为2^n | 输入 |
| hint | 算法策略。 | HmppAlgHintNone、HmppAlgHintFast、HmppAlgHintAccurate | 输入 |


#### 返回值

- 成功：返回HMPP_STS_NO_ERR。
- 失败：返回错误码。


#### 错误码

| 错误码 | 描述 |
| --- | --- |
| HMPP\_STS\_NULL\_PTR\_ERR | src、sum这两个入参中存在空指针。 |
| HMPP\_STS\_SIZE\_ERR | len小于或等于0。 |
| HMPP\_STS\_SCALE\_ERR | scale不在(0,INF)范围内或输入为nan。 |


#### 示例

```
#define BUFFER_SIZE_T 10
void SumExample(void)
{
float src[BUFFER_SIZE_T] = {9.99, 5.42, 10.58, 5.20, 9.12, 0.86, 10.13, 5.94, -0.62, 9.19};
float sum;
HmppHintAlgorithm hint = HMPP_ALGHINT_NONE;
HmppResult result = HMPPS_Sum_32f(src, BUFFER_SIZE_T, &sum, hint);
printf("sum: result = %d ", result);
if (result != HMPP_STS_NO_ERR) {
return;
}
printf("sum = %.2f\n", sum);
}
```

运行结果：

```
sum: result = 0 sum = 65.81
```
