私はNE10 libraryを使っていくつかのベクトル計算を行っています。 Iは、引数とを行うように、これらの構造体の配列をとる関数、(複素数の1Dアレイ)を有するたい構造体の配列を渡す
typedef struct
{
ne10_float32_t r;
ne10_float32_t i;
} ne10_fft_cpx_float32_t;
:ライブラリは、このような構造体である複素数の型を有します配列の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倍されなければなりません。問題は、関数が上に書かれた方法が機能せず、セグメンテーションフォールトにつながることです。私は問題がどのようにne10_mulc_float_c()
関数にr要素の配列を渡そうとしていると思います。
ne10_mulc_float_c()
関数は、array_length
のタイプne10_float32_t
の2つの配列へのポインタを引数としてとります。入力配列の要素に3番目の引数として渡された数が乗算され、結果が出力配列に格納されます。ドキュメントは見つかりましたhere.
これを行う方法はありますか?私はちょうどループの
for (int i = 0; i < array_length; i++) {
output[i].r = input[i].r * 2.0
}
でこれを行うことができます知っているが、パフォーマンスが重要であるので、私は私が最初の場所でNE10が提供するベクトル演算を使用しようとしています理由である、これを行うにはしたくありません。
ようこそスタックオーバーフロー。 [The Tour](http://stackoverflow.com/tour)を読み、[ヘルプセンター](http://stackoverflow.com/help/asking)の資料を参考にしてください。ここに聞いてください。 –
cまたはC++を1つお選びください。これらは異なるプログラミング言語です。 –
問題は、 '&output-> r'は' ne10_float_t'値の配列の先頭ではないということです。それは構造体の配列内の要素へのポインタです。このため、このジョブで 'ne10_mulc_float_c()'関数を便利に使うことはできません。 –