ThresholdInv
给向量中元素的模指定下边界做设阈操作,并计算元素的倒数。
level表示元素的模,应该为一个正实数。计算公式为:
如果向量元素中包含0并且level也为零0处理方式为:
函数接口声明如下:
- 浮点数的操作:
HmppResult HMPPS_Threshold_LTInv_32f(const float *src, float *dst, int32_t len, float level);
HmppResult HMPPS_Threshold_LTInv_64f(const double *src, double *dst, int32_t len, double level);
HmppResult HMPPS_Threshold_LTInv_32fc(const Hmpp32fc *src, Hmpp32fc *dst, int32_t len, float level);
- 浮点数的原址操作:
HmppResult HMPPS_Threshold_LTInv_32f_I(float *srcDst, int32_t len, float level);
HmppResult HMPPS_Threshold_LTInv_64f_I(double *srcDst, int32_t len, double level);
HmppResult HMPPS_Threshold_LTInv_32fc_I(Hmpp32fc *srcDst, int32_t len, float level);
参数
参数名 |
描述 |
取值范围 |
输入/输出 |
---|---|---|---|
src |
指向源向量的指针。 |
非空 |
输入 |
dst |
指向目标向量的指针。 |
非空 |
输出 |
srcDst |
指向原址操作向量的指针。 |
非空 |
输入/输出 |
len |
向量长度。 |
(0, INT_MAX] |
输入 |
level |
阈值。 |
非负数 |
输入 |
返回值
- 成功:返回HMPP_STS_NO_ERR。
- 失败:返回错误码。
错误码
错误码 |
描述 |
---|---|
HMPP_STS_NULL_PTR_ERR |
src、dst、srcDst这几个入参中存在空指针。 |
HMPP_STS_SIZE_ERR |
len小于或等于0。 |
HMPP_STS_THRESH_NEG_LEVEL_ERR |
阈值小于0。 |
HMPP_STS_INV_ZERO |
level为0或向量元素为0时发出此警告,程序继续执行,对应的目标向量元素为Inf(∞)。 |
示例
#define BUFFER_SIZE_T 20 void ThresholdInvExample(void) { float src[BUFFER_SIZE_T] = { 7.68, 3.24, 10.00, 3.29, 5.34, 4.04, 5.57, 7.23, 0.63, 9.39, 9.80, 8.57, -0.94, 11.20, 2.80, -0.55, 1.95, -0.65, 7.34, 9.12}; float dst[BUFFER_SIZE_T] = {0.00}; HmppResult result; int32_t i = 0; result = HMPPS_Threshold_LTInv_32f(src, dst, BUFFER_SIZE_T, 3.14); if(result != HMPP_STS_NO_ERR){ return; } printf("ThresholdInv: result = %d.\ndst = ", result); for(;i < BUFFER_SIZE_T;i++){ printf(" %.2f ", dst[i]); } }
运行结果:
ThresholdInv: result = 0. dst = 0.13 0.31 0.10 0.30 0.19 0.25 0.18 0.14 0.32 0.11 0.10 0.12 -0.32 0.09 0.32 -0.32 0.32 -0.32 0.14 0.11