Greaterequal
=================



逐元素比较两个输入张量，判断 `input1` 的元素是否大于或等于 `input2` 的对应元素。支持广播。

.. math::

    \text{output}_i = (\text{input1}_i \ge \text{input2}_i)

输出一个布尔张量，如果比较结果为真，则对应元素为 `true`，否则为 `false`。

输入：
    - **element_num** - 输出张量的总元素数量。在广播情况下，等于较大输入张量的元素数量。
    - **optimize** - 广播优化标志。若为非0，则启用广播模式。
    - **in_elements_num0** - 第一个输入张量 `input1` 的元素数量。用于广播判断。
    - **input1** - 第一个输入张量的数据地址。
    - **input2** - 第二个输入张量的数据地址。
    - **output** - (输出) 输出的布尔类型张量的数据地址。
    - **core_mask** - 核掩码。

输出：
    - **output** - 写入比较结果的布尔张量。

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

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

**共享存储版本:**

.. c:function:: void fp_greaterequal_s(int element_num, int optimize, int in_elements_num0, float *input1, float *input2, bool *output, int core_mask)
.. c:function:: void hp_greaterequal_s(int element_num, int optimize, int in_elements_num0, half *input1, half *input2, bool *output, int core_mask)
.. c:function:: void dp_greaterequal_s(int element_num, int optimize, int in_elements_num0, double *input1, double *input2, bool *output, int core_mask)
.. c:function:: void i8_greaterequal_s(int element_num, int optimize, int in_elements_num0, int8_t *input1, int8_t *input2, bool *output, int core_mask)
.. c:function:: void i16_greaterequal_s(int element_num, int optimize, int in_elements_num0, int16_t *input1, int16_t *input2, bool *output, int core_mask)
.. c:function:: void i32_greaterequal_s(int element_num, int optimize, int in_elements_num0, int32_t *input1, int32_t *input2, bool *output, int core_mask)

**C调用示例：**

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

    //FT78NE示例
    #include <stdio.h>
    #include <greaterequal.h>
    int main(int argc, char* argv[]) {
        float *input1 = (float *)0xA0000000;    // Scalar input, DDR
        float *input2 = (float *)0xB0000000;    // Tensor input
        bool *output = (bool *)0xC0000000;      // Output
        
        // Broadcasting input1 (scalar) >= input2 (tensor)
        int element_num = 4096; // Size of input2 and output
        int optimize = 1;       // Enable broadcasting
        int in_elements_num0 = 1; // Size of input1
        int core_mask = 0xff;
        
        fp_greaterequal_s(element_num, optimize, in_elements_num0, input1, input2, output, core_mask);
        return 0;
    }


**私有存储版本:**

.. c:function:: void fp_greaterequal_p(int element_num, int optimize, int in_elements_num0, float *input1, float *input2, bool *output)
.. c:function:: void hp_greaterequal_p(int element_num, int optimize, int in_elements_num0, half *input1, half *input2, bool *output)
.. c:function:: void i32_greaterequal_p(int element_num, int optimize, int in_elements_num0, int32_t *input1, int32_t *input2, bool *output)
.. c:function:: void i16_greaterequal_p(int element_num, int optimize, int in_elements_num0, int16_t *input1, int16_t *input2, bool *output)
.. c:function:: void i8_greaterequal_p(int element_num, int optimize, int in_elements_num0, int8_t *input1, int8_t *input2, bool *output)
    

**C调用示例：**

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

    //FT78NE示例
    #include <stdio.h>
    #include <greaterequal.h>
    int main(int argc, char* argv[]) {
        float *input1 = (float *)0x10000000;    // Tensor input, L2
        float *input2 = (float *)0x11000000;    // Scalar input
        bool *output = (bool *)0x12000000;      // Output
        
        // Broadcasting input1 (tensor) >= input2 (scalar)
        int element_num = 1024; // Size of input1 and output
        int optimize = 1;       // Enable broadcasting
        int in_elements_num0 = 1024; // Size of input1
        
        fp_greaterequal_p(element_num, optimize, in_elements_num0, input1, input2, output);
        return 0;
    }