Assert
=================

逐元素判断输入是否为真（非零）。若输入为真则输出 1，否则输出 0。

.. math::

    output_i = \begin{cases}
        1, & \text{if } input_i \neq 0 \\
        0, & \text{if } input_i = 0
    \end{cases}

输入：
    - **input** - 输入数据地址。
    - **core_mask(int, 可选)** - 核掩码（仅适用于共享存储版本）。

输出：
    - **output** - 计算结果地址。

支持平台：
    ``FT78NE``
    ``MT7004``

.. note::
    - FT78NE 支持 int8, int16, int32, fp32, fp64, cplx64, cplx128
    - MT7004 支持 fp16, fp32, int16, int32, cplx64

**共享存储版本:**

.. c:function:: void i8_assert_s(int8_t *input, int8_t *output, int core_mask)
.. c:function:: void i16_assert_s(int16_t *input, int16_t *output, int core_mask)
.. c:function:: void i32_assert_s(int *input, int *output, int core_mask)
.. c:function:: void hp_assert_s(half *input, half *output, int core_mask)
.. c:function:: void fp_assert_s(float *input, float *output, int core_mask)
.. c:function:: void dp_assert_s(double *input, double *output, int core_mask)
.. c:function:: void c64_assert_s(float *input, float *output, int core_mask)
.. c:function:: void c128_assert_s(double *input, double *output, int core_mask)

**C调用示例：**

.. code-block:: c
    :linenos:
    :emphasize-lines: 9

    //FT78NE示例
    #include <stdio.h>

    int main(int argc, char* argv[]) {
        float *input  = (float *)0xA0000000;
        float *output = (float *)0xC0000000;
        int core_mask = 0xff;
        fp_assert_s(input, output, core_mask);
        return 0;
    }


**私有存储版本:**

.. c:function:: void i8_assert_p(int8_t *input, int8_t *output)
.. c:function:: void i16_assert_p(int16_t *input, int16_t *output)
.. c:function:: void i32_assert_p(int *input, int *output)
.. c:function:: void hp_assert_p(half *input, half *output)
.. c:function:: void fp_assert_p(float *input, float *output)
.. c:function:: void dp_assert_p(double *input, double *output)
.. c:function:: void c64_assert_p(float *input, float *output)
.. c:function:: void c128_assert_p(double *input, double *output)

**C调用示例：**

.. code-block:: c
    :linenos:
    :emphasize-lines: 7

    //FT78NE示例
    #include <stdio.h>

    int main(int argc, char* argv[]) {
        float *input  = (float *)0x10800000;
        float *output = (float *)0x10810000;
        fp_assert_p(input, output);
        return 0;
    }
