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

96 lines
3.0 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.

Abs
=================
对输入数组逐元素计算绝对值。
对于实数类型,返回其数值的绝对值;
对于复数类型,返回其模长。
.. math::
dst_i =
\begin{cases}
|src_i|, & \text{实数类型} \\
\sqrt{\Re(src_i)^2 + \Im(src_i)^2}, & \text{复数类型}
\end{cases}
输入:
- **src_data** - 输入数据地址。
- **length** - 计算长度。
- **core_mask** - 核掩码(仅适用于共享存储版本)。
输出:
- **dst_data** - 计算结果地址。
支持平台:
``FT78NE``
``MT7004``
.. note::
- FT78NE 支持 fp, dp, int8, int16, int32, cplx64, cplx128
- MT7004 支持 hp, fp, int16, int32, cplx64
- 对于整数类型,结果为对应数值的绝对值
- 对于复数类型,输出为模长(实数)
**共享存储版本:**
.. c:function:: void i8_abs_s(int8_t* src_data, int8_t* dst_data, int length, int core_mask)
.. c:function:: void i16_abs_s(int16_t* src_data, int16_t* dst_data, int length, int core_mask)
.. c:function:: void i32_abs_s(int32_t* src_data, int32_t* dst_data, int length, int core_mask)
.. c:function:: void hp_abs_s(half* src_data, half* dst_data, int length, int core_mask)
.. c:function:: void fp_abs_s(float* src_data, float* dst_data, int length, int core_mask)
.. c:function:: void dp_abs_s(double* src_data, double* dst_data, int length, int core_mask)
.. c:function:: void c64_abs_s(float* src_data, float* dst_data, int length, int core_mask)
.. c:function:: void c128_abs_s(double* src_data, double* dst_data, int length, int core_mask)
**C调用示例**
.. code-block:: c
:linenos:
:emphasize-lines: 11
//FT78NE示例
#include <stdio.h>
#include <abs.h>
int main(int argc, char* argv[]) {
float *input0 = (float *)0xA0000000; // input在DDR空间
float *output = (float *)0xC0000000;
int length = 1024;
int core_mask = 0xff;
fp_abs_s(input0, output, length, core_mask);
return 0;
}
**私有存储版本:**
.. c:function:: void i8_abs_p(int8_t* src_data, int8_t* dst_data, int length)
.. c:function:: void i16_abs_p(int16_t* src_data, int16_t* dst_data, int length)
.. c:function:: void i32_abs_p(int32_t* src_data, int32_t* dst_data, int length)
.. c:function:: void hp_abs_p(half* src_data, half* dst_data, int length)
.. c:function:: void fp_abs_p(float* src_data, float* dst_data, int length)
.. c:function:: void dp_abs_p(double* src_data, double* dst_data, int length)
.. c:function:: void c64_abs_p(float* src_data, float* dst_data, int length)
.. c:function:: void c128_abs_p(double* src_data, double* dst_data, int length)
**C调用示例**
.. code-block:: c
:linenos:
:emphasize-lines: 10
//FT78NE示例
#include <stdio.h>
#include <abs.h>
int main(int argc, char* argv[]) {
float *input0 = (float *)0x10810000; // input在L2空间
float *output = (float *)0x10820000;
int length = 1024;
fp_abs_p(input0, output, length);
return 0;
}