2021-12-21 20:26:37 +03:00
# FloorMod {#openvino_docs_ops_arithmetic_FloorMod_1}
2020-06-19 14:39:57 +03:00
**Versioned name**: *FloorMod-1*
2021-08-23 12:12:46 +02:00
**Category**: *Arithmetic binary*
2020-06-19 14:39:57 +03:00
2021-07-02 12:51:00 +02:00
**Short description**: *FloorMod* performs an element-wise floor modulo operation with two given tensors applying broadcasting rule specified in the *auto_broadcast* attribute.
2021-03-10 07:58:58 +01:00
**Detailed description**
As a first step input tensors *a* and *b* are broadcasted if their shapes differ. Broadcasting is performed according to `auto_broadcast` attribute specification. As a second step *FloorMod* operation is computed element-wise on the input tensors *a* and *b* according to the formula below:
\f[
2021-08-12 12:11:30 +02:00
o_{i} = a_{i} \mod b_{i}
2021-07-02 12:51:00 +02:00
\f]
2021-03-10 07:58:58 +01:00
2021-04-12 17:04:33 +02:00
*FloorMod* operation computes a reminder of a floored division. It is the same behaviour like in Python programming language: `floor(x / y) * y + floor_mod(x, y) = x` . The sign of the result is equal to a sign of a divisor. The result of division by zero is undefined.
2020-06-19 14:39:57 +03:00
**Attributes**:
* *auto_broadcast*
* **Description**: specifies rules used for auto-broadcasting of input tensors.
* **Range of values**:
2021-03-10 07:58:58 +01:00
* *none* - no auto-broadcasting is allowed, all input shapes must match
* *numpy* - numpy broadcasting rules, description is available in [Broadcast Rules For Elementwise Operations ](../broadcast_rules.md )
2020-06-19 14:39:57 +03:00
* **Type**: string
* **Default value**: "numpy"
* **Required**: *no*
**Inputs**
2021-07-15 09:17:23 +02:00
* **1**: A tensor of type *T* and arbitrary shape. **Required.**
* **2**: A tensor of type *T* and arbitrary shape. **Required.**
2020-06-19 14:39:57 +03:00
**Outputs**
2021-07-02 12:51:00 +02:00
* **1**: The result of element-wise floor modulo operation. A tensor of type *T* with shape equal to broadcasted shape of two inputs.
2020-06-19 14:39:57 +03:00
**Types**
* *T*: any numeric type.
**Examples**
2021-03-10 07:58:58 +01:00
*Example 1 - no broadcasting*
2020-06-19 14:39:57 +03:00
```xml
< layer . . . type = "FloorMod" >
2021-03-10 07:58:58 +01:00
< data auto_broadcast = "none" / >
2020-06-19 14:39:57 +03:00
< input >
< port id = "0" >
< dim > 256< / dim >
< dim > 56< / dim >
< / port >
< port id = "1" >
< dim > 256< / dim >
< dim > 56< / dim >
< / port >
< / input >
< output >
< port id = "2" >
< dim > 256< / dim >
< dim > 56< / dim >
< / port >
< / output >
< / layer >
```
2021-03-10 07:58:58 +01:00
*Example 2: numpy broadcasting*
2020-06-19 14:39:57 +03:00
```xml
< layer . . . type = "FloorMod" >
2021-03-10 07:58:58 +01:00
< data auto_broadcast = "numpy" / >
2020-06-19 14:39:57 +03:00
< input >
< port id = "0" >
< dim > 8< / dim >
< dim > 1< / dim >
< dim > 6< / dim >
< dim > 1< / dim >
< / port >
< port id = "1" >
< dim > 7< / dim >
< dim > 1< / dim >
< dim > 5< / dim >
< / port >
< / input >
< output >
< port id = "2" >
< dim > 8< / dim >
< dim > 7< / dim >
< dim > 6< / dim >
< dim > 5< / dim >
< / port >
< / output >
< / layer >
```