.. _op_ai_onnx_And: And === - **Domain**: ``ai.onnx`` - **Since version**: 7 Returns the tensor resulted from performing the ``And`` logical operation elementwise on the input tensors ``A`` and ``B`` (with Numpy-style broadcasting support). **Inputs** - **A** (*T*): First input operand for the logical operator. - **B** (*T*): Second input operand for the logical operator. **Outputs** - **C** (*T1*): Result tensor. **Type Constraints** - **T**: Constrain input to boolean tensor. Allowed types: tensor(bool). - **T1**: Constrain output to boolean tensor. Allowed types: tensor(bool). Examples -------- **test_and2d** .. code-block:: text Inputs: x: shape=(3, 4), dtype=bool [[ True, False, False, True], [ True, False, True, True], [ True, True, False, False]] y: shape=(3, 4), dtype=bool [[ True, False, True, True], [False, False, False, True], [ True, True, False, True]] Outputs: and: shape=(3, 4), dtype=bool [[ True, False, False, True], [False, False, False, True], [ True, True, False, False]] **test_and3d** .. code-block:: text Inputs: x: shape=(3, 4, 5), dtype=bool [[[ True, True, True, False, False], [False, False, True, True, False], [ True, True, True, True, False], [False, False, False, True, True]], [[False, True, False, False, False], [False, True, False, False, False], [ True, False, True, True, False], [False, False, True, True, False]], [[ True, False, True, False, True], [False, False, False, True, False], [False, False, True, True, False], [False, False, False, True, False]]] y: shape=(3, 4, 5), dtype=bool [[[ True, False, True, True, True], [False, False, False, False, True], [False, True, False, False, True], [False, False, True, True, True]], [[False, True, True, False, False], [False, False, True, False, False], [False, True, False, False, True], [False, True, False, True, True]], [[ True, False, False, True, False], [False, False, False, True, True], [ True, False, True, False, False], [ True, False, True, True, True]]] Outputs: and: shape=(3, 4, 5), dtype=bool [[[ True, False, True, False, False], [False, False, False, False, False], [False, True, False, False, False], [False, False, False, True, True]], [[False, True, False, False, False], [False, False, False, False, False], [False, False, False, False, False], [False, False, False, True, False]], [[ True, False, False, False, False], [False, False, False, True, False], [False, False, True, False, False], [False, False, False, True, False]]] **test_and4d** .. code-block:: text Inputs: x: shape=(3, 4, 5, 6), dtype=bool [[[[False, True, True, False, False, True], [False, True, True, True, True, True], [False, False, True, True, True, False], [ True, True, True, False, True, True], [ True, False, True, False, False, False]], [[ True, True, False, False, False, True], [False, False, False, False, False, False], [ True, True, True, True, True, False], [ True, False, True, True, False, False], [False, True, True, False, False, False]], [[False, True, False, True, True, True], [False, False, False, True, True, False], [False, True, True, True, False, True], [False, True, True, True, True, False], [ True, True, False, False, True, False]], [[ True, True, True, True, False, False], [ True, True, False, True, True, False], [ True, False, False, True, True, False], [ True, True, False, True, False, False], [ True, True, True, False, True, False]]], [[[False, False, False, True, False, False], [ True, True, False, True, False, True], [False, True, True, False, False, False], [False, False, False, True, True, True], [False, False, True, True, False, True]], [[False, False, True, True, True, False], [ True, True, False, False, True, False], [False, True, False, False, False, False], [ True, True, False, True, True, True], [False, False, True, False, False, True]], [[ True, False, True, True, False, False], [ True, True, False, False, False, True], [False, True, False, True, False, True], [False, True, False, True, True, False], [False, False, False, False, False, True]], [[False, True, False, False, False, False], [ True, True, True, False, True, True], [ True, False, True, False, False, False], [False, False, False, False, False, False], [ True, False, False, True, True, False]]], [[[ True, False, True, False, True, True], [False, False, False, False, True, True], [False, True, True, False, False, False], [False, False, False, True, True, False], [False, True, True, True, True, True]], [[False, True, True, True, True, True], [False, True, True, True, True, False], [ True, True, True, True, True, True], [ True, False, False, True, False, False], [ True, True, False, True, True, False]], [[ True, False, True, False, True, False], [False, False, True, True, False, False], [ True, True, False, True, True, True], [False, False, True, False, True, True], [False, False, False, True, False, True]], [[False, False, False, True, False, True], [ True, False, True, True, False, False], [False, True, True, False, False, True], [False, False, False, False, True, True], [ True, False, False, True, True, False]]]] y: shape=(3, 4, 5, 6), dtype=bool [[[[False, True, True, True, True, False], [ True, False, False, False, True, False], [False, False, True, True, True, True], [False, True, True, True, True, True], [False, False, True, True, False, True]], [[ True, False, False, True, True, True], [False, False, False, False, True, False], [ True, True, True, False, True, False], [False, True, True, True, False, False], [False, True, False, True, False, True]], [[False, False, False, False, True, False], [ True, True, False, True, True, True], [False, False, True, False, True, False], [ True, True, True, False, True, True], [ True, True, False, True, True, False]], [[ True, False, False, False, False, False], [False, False, False, False, False, False], [False, False, False, False, False, False], [ True, True, True, False, False, True], [ True, True, False, False, False, True]]], [[[False, False, False, True, True, False], [ True, False, False, False, True, True], [ True, True, True, False, False, False], [False, False, False, False, False, False], [False, True, False, True, True, True]], [[ True, False, False, False, False, False], [False, False, False, True, False, True], [ True, False, False, True, True, False], [False, True, False, False, False, True], [False, True, True, False, True, True]], [[ True, True, True, False, True, True], [ True, True, True, True, False, False], [ True, False, True, False, False, False], [False, False, False, False, False, False], [False, False, False, True, True, True]], [[False, True, False, True, False, True], [False, True, False, True, True, True], [ True, True, True, True, True, False], [ True, True, False, False, True, False], [ True, False, False, False, True, False]]], [[[False, False, True, False, True, True], [ True, False, False, False, True, True], [ True, True, True, True, True, False], [False, True, False, False, False, False], [ True, False, False, False, False, True]], [[False, False, False, False, False, True], [ True, True, True, False, True, False], [ True, False, True, False, True, True], [ True, True, True, True, False, False], [False, False, False, False, False, True]], [[ True, True, True, True, True, True], [ True, False, True, True, True, True], [ True, True, True, True, True, True], [False, False, True, True, True, True], [ True, False, False, False, True, False]], [[ True, True, False, True, True, True], [False, False, False, True, True, False], [False, True, True, True, True, False], [False, False, True, False, False, False], [False, True, True, False, False, False]]]] Outputs: and: shape=(3, 4, 5, 6), dtype=bool [[[[False, True, True, False, False, False], [False, False, False, False, True, False], [False, False, True, True, True, False], [False, True, True, False, True, True], [False, False, True, False, False, False]], [[ True, False, False, False, False, True], [False, False, False, False, False, False], [ True, True, True, False, True, False], [False, False, True, True, False, False], [False, True, False, False, False, False]], [[False, False, False, False, True, False], [False, False, False, True, True, False], [False, False, True, False, False, False], [False, True, True, False, True, False], [ True, True, False, False, True, False]], [[ True, False, False, False, False, False], [False, False, False, False, False, False], [False, False, False, False, False, False], [ True, True, False, False, False, False], [ True, True, False, False, False, False]]], [[[False, False, False, True, False, False], [ True, False, False, False, False, True], [False, True, True, False, False, False], [False, False, False, False, False, False], [False, False, False, True, False, True]], [[False, False, False, False, False, False], [False, False, False, False, False, False], [False, False, False, False, False, False], [False, True, False, False, False, True], [False, False, True, False, False, True]], [[ True, False, True, False, False, False], [ True, True, False, False, False, False], [False, False, False, False, False, False], [False, False, False, False, False, False], [False, False, False, False, False, True]], [[False, True, False, False, False, False], [False, True, False, False, True, True], [ True, False, True, False, False, False], [False, False, False, False, False, False], [ True, False, False, False, True, False]]], [[[False, False, True, False, True, True], [False, False, False, False, True, True], [False, True, True, False, False, False], [False, False, False, False, False, False], [False, False, False, False, False, True]], [[False, False, False, False, False, True], [False, True, True, False, True, False], [ True, False, True, False, True, True], [ True, False, False, True, False, False], [False, False, False, False, False, False]], [[ True, False, True, False, True, False], [False, False, True, True, False, False], [ True, True, False, True, True, True], [False, False, True, False, True, True], [False, False, False, False, False, False]], [[False, False, False, True, False, True], [False, False, False, True, False, False], [False, True, True, False, False, False], [False, False, False, False, False, False], [False, False, False, False, False, False]]]] **test_and_bcast3v1d** .. code-block:: text Inputs: x: shape=(3, 4, 5), dtype=bool [[[False, True, True, False, False], [ True, True, False, True, True], [ True, False, True, False, False], [ True, False, False, False, False]], [[False, False, False, False, True], [ True, True, False, True, True], [False, False, False, True, False], [ True, False, False, True, False]], [[ True, False, False, False, True], [False, False, False, False, True], [ True, False, False, True, True], [False, True, False, False, False]]] y: shape=(5,), dtype=bool [ True, False, False, False, False] Outputs: and: shape=(3, 4, 5), dtype=bool [[[False, False, False, False, False], [ True, False, False, False, False], [ True, False, False, False, False], [ True, False, False, False, False]], [[False, False, False, False, False], [ True, False, False, False, False], [False, False, False, False, False], [ True, False, False, False, False]], [[ True, False, False, False, False], [False, False, False, False, False], [ True, False, False, False, False], [False, False, False, False, False]]] **test_and_bcast3v2d** .. code-block:: text Inputs: x: shape=(3, 4, 5), dtype=bool [[[ True, True, False, False, True], [False, True, False, True, False], [ True, True, False, True, False], [False, True, True, False, True]], [[False, True, False, True, True], [False, False, True, True, True], [False, False, False, False, False], [ True, True, False, False, True]], [[False, False, True, True, True], [False, True, True, True, True], [ True, False, False, True, False], [False, False, False, False, False]]] y: shape=(4, 5), dtype=bool [[ True, False, False, False, True], [ True, True, False, True, True], [ True, True, True, True, True], [False, True, False, True, True]] Outputs: and: shape=(3, 4, 5), dtype=bool [[[ True, False, False, False, True], [False, True, False, True, False], [ True, True, False, True, False], [False, True, False, False, True]], [[False, False, False, False, True], [False, False, False, True, True], [False, False, False, False, False], [False, True, False, False, True]], [[False, False, False, False, True], [False, True, False, True, True], [ True, False, False, True, False], [False, False, False, False, False]]] **test_and_bcast4v2d** .. code-block:: text Inputs: x: shape=(3, 4, 5, 6), dtype=bool [[[[False, True, True, False, True, True], [ True, True, False, True, False, True], [False, True, False, True, True, True], [ True, True, False, False, False, False], [False, False, False, True, True, False]], [[False, True, False, True, True, False], [False, True, False, False, True, False], [False, True, False, False, False, False], [False, False, True, True, False, True], [False, False, False, False, False, False]], [[False, True, False, True, False, False], [ True, False, False, False, True, False], [False, False, False, False, False, False], [False, True, False, False, False, False], [ True, False, True, True, False, True]], [[ True, False, False, False, False, False], [ True, True, True, True, True, True], [False, True, False, False, True, True], [ True, True, False, False, True, True], [ True, False, False, False, False, True]]], [[[ True, True, False, False, True, False], [False, False, False, False, True, True], [False, True, True, True, True, False], [False, False, False, False, True, True], [False, True, False, True, True, True]], [[False, False, True, True, False, True], [ True, False, True, True, False, True], [ True, False, False, False, True, True], [False, True, False, True, False, False], [ True, True, True, True, True, False]], [[False, False, True, False, False, False], [False, False, False, False, False, False], [False, True, True, True, True, True], [ True, False, False, False, False, True], [ True, False, True, False, False, True]], [[False, True, True, True, True, True], [False, True, True, True, False, True], [ True, True, False, False, True, False], [ True, False, True, True, False, True], [False, False, False, True, False, False]]], [[[False, True, False, True, False, False], [False, True, True, False, True, False], [False, True, False, True, True, False], [False, True, False, True, True, False], [ True, True, True, False, True, False]], [[ True, False, False, True, True, False], [False, False, False, True, True, False], [ True, False, False, True, False, True], [False, False, True, False, True, True], [ True, True, False, False, True, False]], [[ True, True, False, False, True, False], [False, True, True, True, True, True], [ True, True, True, True, True, False], [False, False, True, True, True, False], [ True, True, True, True, False, False]], [[False, False, True, True, False, False], [False, False, False, True, False, False], [ True, False, False, True, False, False], [False, False, False, False, True, True], [False, True, True, True, False, True]]]] y: shape=(5, 6), dtype=bool [[ True, True, True, False, False, False], [False, True, False, True, False, False], [False, True, False, False, True, False], [False, False, True, True, False, False], [ True, True, False, False, False, False]] Outputs: and: shape=(3, 4, 5, 6), dtype=bool [[[[False, True, True, False, False, False], [False, True, False, True, False, False], [False, True, False, False, True, False], [False, False, False, False, False, False], [False, False, False, False, False, False]], [[False, True, False, False, False, False], [False, True, False, False, False, False], [False, True, False, False, False, False], [False, False, True, True, False, False], [False, False, False, False, False, False]], [[False, True, False, False, False, False], [False, False, False, False, False, False], [False, False, False, False, False, False], [False, False, False, False, False, False], [ True, False, False, False, False, False]], [[ True, False, False, False, False, False], [False, True, False, True, False, False], [False, True, False, False, True, False], [False, False, False, False, False, False], [ True, False, False, False, False, False]]], [[[ True, True, False, False, False, False], [False, False, False, False, False, False], [False, True, False, False, True, False], [False, False, False, False, False, False], [False, True, False, False, False, False]], [[False, False, True, False, False, False], [False, False, False, True, False, False], [False, False, False, False, True, False], [False, False, False, True, False, False], [ True, True, False, False, False, False]], [[False, False, True, False, False, False], [False, False, False, False, False, False], [False, True, False, False, True, False], [False, False, False, False, False, False], [ True, False, False, False, False, False]], [[False, True, True, False, False, False], [False, True, False, True, False, False], [False, True, False, False, True, False], [False, False, True, True, False, False], [False, False, False, False, False, False]]], [[[False, True, False, False, False, False], [False, True, False, False, False, False], [False, True, False, False, True, False], [False, False, False, True, False, False], [ True, True, False, False, False, False]], [[ True, False, False, False, False, False], [False, False, False, True, False, False], [False, False, False, False, False, False], [False, False, True, False, False, False], [ True, True, False, False, False, False]], [[ True, True, False, False, False, False], [False, True, False, True, False, False], [False, True, False, False, True, False], [False, False, True, True, False, False], [ True, True, False, False, False, False]], [[False, False, True, False, False, False], [False, False, False, True, False, False], [False, False, False, False, False, False], [False, False, False, False, False, False], [False, True, False, False, False, False]]]] **test_and_bcast4v3d** .. code-block:: text Inputs: x: shape=(3, 4, 5, 6), dtype=bool [[[[ True, True, False, True, False, True], [ True, True, True, False, True, False], [False, False, True, False, False, True], [ True, False, True, False, False, True], [ True, False, False, True, True, False]], [[ True, False, False, False, True, True], [ True, True, True, False, False, True], [ True, False, True, False, True, False], [ True, False, False, True, False, False], [False, True, True, True, False, False]], [[ True, False, True, True, True, False], [False, False, False, True, True, False], [ True, True, True, True, False, False], [ True, False, False, False, True, True], [False, True, False, False, True, False]], [[ True, False, True, False, True, False], [False, True, True, True, True, False], [ True, True, False, True, True, False], [False, True, True, True, False, False], [ True, False, False, False, False, True]]], [[[ True, False, False, True, True, False], [ True, True, True, True, True, True], [ True, False, True, True, True, True], [False, False, False, True, False, True], [ True, False, True, True, True, False]], [[False, False, True, True, True, False], [False, True, True, True, False, True], [ True, False, False, True, False, True], [False, False, False, False, True, True], [ True, False, True, False, False, True]], [[ True, False, True, False, True, True], [ True, False, False, False, False, True], [ True, False, True, True, True, False], [ True, False, False, False, False, False], [False, False, True, True, True, True]], [[ True, True, True, False, True, True], [False, False, True, False, False, False], [False, False, False, True, False, True], [False, False, False, False, False, False], [ True, False, False, True, True, True]]], [[[ True, False, False, True, True, False], [ True, True, False, True, False, True], [False, True, True, False, True, True], [False, True, False, False, False, True], [ True, False, False, True, True, False]], [[False, False, True, False, True, True], [False, False, True, False, True, True], [False, True, False, True, False, False], [False, False, True, False, True, False], [ True, True, True, False, False, False]], [[False, True, False, True, True, True], [ True, True, False, True, True, True], [ True, True, False, False, False, True], [False, True, False, False, True, True], [ True, False, False, True, False, False]], [[False, True, False, False, True, True], [ True, True, True, False, False, True], [ True, True, True, False, True, False], [ True, True, False, False, False, True], [False, True, False, True, True, True]]]] y: shape=(4, 5, 6), dtype=bool [[[False, True, False, False, False, False], [False, True, True, False, True, True], [False, True, True, False, True, True], [ True, False, False, True, False, False], [ True, False, True, False, True, True]], [[ True, False, False, False, True, False], [False, False, False, True, False, True], [ True, False, False, False, False, True], [False, True, True, True, False, True], [False, True, False, True, False, True]], [[False, True, False, False, True, False], [ True, True, True, False, True, False], [ True, True, False, True, False, True], [False, False, False, True, False, False], [ True, False, True, True, False, True]], [[ True, True, False, True, False, False], [False, False, True, False, False, True], [ True, False, False, False, False, True], [ True, True, False, True, True, False], [False, False, False, True, True, False]]] Outputs: and: shape=(3, 4, 5, 6), dtype=bool [[[[False, True, False, False, False, False], [False, True, True, False, True, False], [False, False, True, False, False, True], [ True, False, False, False, False, False], [ True, False, False, False, True, False]], [[ True, False, False, False, True, False], [False, False, False, False, False, True], [ True, False, False, False, False, False], [False, False, False, True, False, False], [False, True, False, True, False, False]], [[False, False, False, False, True, False], [False, False, False, False, True, False], [ True, True, False, True, False, False], [False, False, False, False, False, False], [False, False, False, False, False, False]], [[ True, False, False, False, False, False], [False, False, True, False, False, False], [ True, False, False, False, False, False], [False, True, False, True, False, False], [False, False, False, False, False, False]]], [[[False, False, False, False, False, False], [False, True, True, False, True, True], [False, False, True, False, True, True], [False, False, False, True, False, False], [ True, False, True, False, True, False]], [[False, False, False, False, True, False], [False, False, False, True, False, True], [ True, False, False, False, False, True], [False, False, False, False, False, True], [False, False, False, False, False, True]], [[False, False, False, False, True, False], [ True, False, False, False, False, False], [ True, False, False, True, False, False], [False, False, False, False, False, False], [False, False, True, True, False, True]], [[ True, True, False, False, False, False], [False, False, True, False, False, False], [False, False, False, False, False, True], [False, False, False, False, False, False], [False, False, False, True, True, False]]], [[[False, False, False, False, False, False], [False, True, False, False, False, True], [False, True, True, False, True, True], [False, False, False, False, False, False], [ True, False, False, False, True, False]], [[False, False, False, False, True, False], [False, False, False, False, False, True], [False, False, False, False, False, False], [False, False, True, False, False, False], [False, True, False, False, False, False]], [[False, True, False, False, True, False], [ True, True, False, False, True, False], [ True, True, False, False, False, True], [False, False, False, False, False, False], [ True, False, False, True, False, False]], [[False, True, False, False, False, False], [False, False, True, False, False, True], [ True, False, False, False, False, False], [ True, True, False, False, False, False], [False, False, False, True, True, False]]]] **test_and_bcast4v4d** .. code-block:: text Inputs: x: shape=(1, 4, 1, 6), dtype=bool [[[[ True, False, False, False, False, True]], [[ True, True, False, False, True, False]], [[False, True, True, True, False, False]], [[False, False, True, True, False, False]]]] y: shape=(3, 1, 5, 6), dtype=bool [[[[False, False, False, False, False, False], [ True, True, True, True, False, True], [ True, True, True, False, True, True], [False, True, False, True, False, False], [ True, False, True, True, True, False]]], [[[False, False, False, True, True, False], [ True, False, True, False, True, True], [ True, False, False, True, False, True], [ True, False, False, False, False, False], [ True, False, False, False, True, True]]], [[[ True, True, True, True, True, True], [False, True, False, True, False, True], [ True, True, False, False, True, True], [False, False, True, True, True, False], [ True, False, False, True, False, True]]]] Outputs: and: shape=(3, 4, 5, 6), dtype=bool [[[[False, False, False, False, False, False], [ True, False, False, False, False, True], [ True, False, False, False, False, True], [False, False, False, False, False, False], [ True, False, False, False, False, False]], [[False, False, False, False, False, False], [ True, True, False, False, False, False], [ True, True, False, False, True, False], [False, True, False, False, False, False], [ True, False, False, False, True, False]], [[False, False, False, False, False, False], [False, True, True, True, False, False], [False, True, True, False, False, False], [False, True, False, True, False, False], [False, False, True, True, False, False]], [[False, False, False, False, False, False], [False, False, True, True, False, False], [False, False, True, False, False, False], [False, False, False, True, False, False], [False, False, True, True, False, False]]], [[[False, False, False, False, False, False], [ True, False, False, False, False, True], [ True, False, False, False, False, True], [ True, False, False, False, False, False], [ True, False, False, False, False, True]], [[False, False, False, False, True, False], [ True, False, False, False, True, False], [ True, False, False, False, False, False], [ True, False, False, False, False, False], [ True, False, False, False, True, False]], [[False, False, False, True, False, False], [False, False, True, False, False, False], [False, False, False, True, False, False], [False, False, False, False, False, False], [False, False, False, False, False, False]], [[False, False, False, True, False, False], [False, False, True, False, False, False], [False, False, False, True, False, False], [False, False, False, False, False, False], [False, False, False, False, False, False]]], [[[ True, False, False, False, False, True], [False, False, False, False, False, True], [ True, False, False, False, False, True], [False, False, False, False, False, False], [ True, False, False, False, False, True]], [[ True, True, False, False, True, False], [False, True, False, False, False, False], [ True, True, False, False, True, False], [False, False, False, False, True, False], [ True, False, False, False, False, False]], [[False, True, True, True, False, False], [False, True, False, True, False, False], [False, True, False, False, False, False], [False, False, True, True, False, False], [False, False, False, True, False, False]], [[False, False, True, True, False, False], [False, False, False, True, False, False], [False, False, False, False, False, False], [False, False, True, True, False, False], [False, False, False, True, False, False]]]] **test_cc_and** .. code-block:: text Inputs: x: shape=(2, 2), dtype=bool [[ True, False], [ True, False]] y: shape=(2, 2), dtype=bool [[ True, True], [False, False]] Outputs: z: shape=(2, 2), dtype=bool [[ True, False], [False, False]] **test_cc_and_bcast** .. code-block:: text Inputs: x: shape=(2, 2), dtype=bool [[ True, False], [ True, False]] y: shape=(), dtype=bool True Outputs: z: shape=(2, 2), dtype=bool [[ True, False], [ True, False]] Differences with previous version (1) ------------------------------------- **SchemaDiff**: ``And`` (domain ``'ai.onnx'``) * old version: 1 * new version: 7 * breaking: no **Documentation:** * line similarity: 0.40 (+1/-5 lines) .. code-block:: diff --- And v1 +++ And v7 @@ -1,7 +1,3 @@ Returns the tensor resulted from performing the `And` logical operation -elementwise on the input tensors `A` and `B`. - -If broadcasting is enabled, the right-hand-side argument will be broadcasted -to match the shape of left-hand-side argument. See the doc of `Add` for a -detailed description of the broadcasting rules. +elementwise on the input tensors `A` and `B` (with Numpy-style broadcasting support). Version History --------------- - :doc:`Version 1 `