我正在做一些使用NE10 library的向量计算。该库具有用于复数一个类型,其是这样的一个结构:传递一组结构元素
typedef struct
{
ne10_float32_t r;
ne10_float32_t i;
} ne10_fft_cpx_float32_t;
我想有一个函数,该函数这些结构的数组(复数1D阵列)作为参数,并执行仅用于数组的r或i元素的矢量计算。下面是得到一个想法这样的功能的例子:
void multiple_real_part_by_two(ne10_fft_cpx_float32_t* output,
ne10_fft_cpx_float32_t* input, ne10_uint32_t array_length)
{
ne10_mulc_float_c (&output->r, &input->r, 2.0, array_length)
}
所以想输出数组要像输入数组,但每个R元素的应乘以2。问题在于,上述函数的写法不起作用,并导致分段错误。我认为问题在于我如何将一组r元素传递给ne10_mulc_float_c()
函数。
ne10_mulc_float_c()
函数将指针指向两个ne10_float32_t
大小为array_length
的数组。输入数组的元素乘以作为第三个参数传递的数字,结果存储在输出数组中。该文档可以发现here.
有没有办法我可以做到这一点?我知道我可能只是这样做在一个for循环
for (int i = 0; i < array_length; i++) {
output[i].r = input[i].r * 2.0
}
,但我不想这样做,因为性能是至关重要的,这就是为什么我试图使用由NE10提供的矢量运算摆在首位。
欢迎来到Stack Overflow。请花些时间阅读[The Tour](http://stackoverflow.com/tour),并参阅[帮助中心](http://stackoverflow.com/help/asking)中的资料,了解您可以在这里问。 –
c或C++请选择一个。这些是不同的编程语言。 –
问题是'&output-> r'不是'ne10_float_t'值数组的开始;它是一个指向结构数组中元素的指针。因为这个,你不能有用地使用'ne10_mulc_float_c()'函数来完成这项工作。 –