FT_DSP.gitlink.net/master/html/_sources/functionlib/dsplib/squaredifference.rst.txt

90 lines
3.6 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Squaredifference
=================
逐元素计算两个输入数组对应元素的差的平方。
.. math::
\text{output}_i = (\text{input0}_i - \text{input1}_i)^2
对于输入 `input0``input1` 中对应位置的每个元素,计算它们差的平方值。
输入:
- **input0** - 第一个输入数据地址。
- **input1** - 第二个输入数据地址。
- **length** - 计算长度(对于复数类型,指复数的个数)。
- **core_mask** - 核掩码(仅共享存储版本需要)。
输出:
- **output** - 计算结果地址,其大小与输入相同。
支持平台:
``FT78NE``
``MT7004``
.. note::
- FT78NE 支持fp32, int8, int16, int32, fp64, cplx64, cplx128
- MT7004 支持fp16, fp32, int16, int32, cplx64
**共享存储版本:**
.. c:function:: void i8_squaredifference_s(int8_t* input0, int8_t* input1, int8_t* output, int length, int core_mask)
.. c:function:: void i16_squaredifference_s(int16_t* input0, int16_t* input1, int16_t* output, int length, int core_mask)
.. c:function:: void i32_squaredifference_s(int32_t* input0, int32_t* input1, int32_t* output, int length, int core_mask)
.. c:function:: void hp_squaredifference_s(half* input0, half* input1, half* output, int length, int core_mask)
.. c:function:: void fp_squaredifference_s(float* input0, float* input1, float* output, int length, int core_mask)
.. c:function:: void dp_squaredifference_s(double* input0, double* input1, double* output, int length, int core_mask)
.. c:function:: void c64_squaredifference_s(float* input0, float* input1, float* output, int length, int core_mask)
.. c:function:: void c128_squaredifference_s(double* input0, double* input1, double* output, int length, int core_mask)
**C调用示例**
.. code-block:: c
:linenos:
:emphasize-lines: 11
//FT78NE示例
#include <stdio.h>
#include <squaredifference.h>
int main(int argc, char* argv[]) {
float *input0 = (float *)0xA0000000; // 第一个输入在DDR空间
float *input1 = (float *)0xA1000000; // 第二个输入在DDR空间
float *output = (float *)0xB0000000; // output
int length = 1000;
int core_mask = 0xff;
fp_squaredifference_s(input0, input1, output, length, core_mask);
return 0;
}
**私有存储版本:**
.. c:function:: void i8_squaredifference_p(int8_t* input0, int8_t* input1, int8_t* output, int length)
.. c:function:: void i16_squaredifference_p(int16_t* input0, int16_t* input1, int16_t* output, int length)
.. c:function:: void i32_squaredifference_p(int32_t* input0, int32_t* input1, int32_t* output, int length)
.. c:function:: void hp_squaredifference_p(half* input0, half* input1, half* output, int length)
.. c:function:: void fp_squaredifference_p(float* input0, float* input1, float* output, int length)
.. c:function:: void dp_squaredifference_p(double* input0, double* input1, double* output, int length)
.. c:function:: void c64_squaredifference_p(float* input0, float* input1, float* output, int length)
.. c:function:: void c128_squaredifference_p(double* input0, double* input1, double* output, int length)
**C调用示例**
.. code-block:: c
:linenos:
:emphasize-lines: 10
//FT78NE示例
#include <stdio.h>
#include <squaredifference.h>
int main(int argc, char* argv[]) {
float *input0 = (float *)0x10000000; // 第一个输入在L2空间
float *input1 = (float *)0x10001000; // 第二个输入在L2空间
float *output = (float *)0x10002000; // output
int length = 1000;
fp_squaredifference_p(input0, input1, output, length);
return 0;
}