(l-onnx-doc-BitwiseXor)= # BitwiseXor (l-onnx-op-bitwisexor-18)= ## BitwiseXor - 18 ### Version - **name**: [BitwiseXor (GitHub)](https://github.com/onnx/onnx/blob/main/docs/Operators.md#BitwiseXor) - **domain**: `main` - **since_version**: `18` - **function**: `False` - **support_level**: `SupportType.COMMON` - **shape inference**: `True` This version of the operator has been available **since version 18**. ### Summary Returns the tensor resulting from performing the bitwise `xor` operation elementwise on the input tensors `A` and `B` (with Numpy-style broadcasting support). This operator supports **multidirectional (i.e., Numpy-style) broadcasting**; for more details please check [Broadcasting in ONNX](https://github.com/onnx/onnx/blob/main/docs/Broadcasting.md). ### Inputs - **A** (heterogeneous) - **T**: First input operand for the bitwise operator. - **B** (heterogeneous) - **T**: Second input operand for the bitwise operator. ### Outputs - **C** (heterogeneous) - **T**: Result tensor. ### Type Constraints * **T** in ( `tensor(int16)`, `tensor(int32)`, `tensor(int64)`, `tensor(int8)`, `tensor(uint16)`, `tensor(uint32)`, `tensor(uint64)`, `tensor(uint8)` ): Constrain input to integer tensors. ### Examples #### default ```python import numpy as np import onnx node = onnx.helper.make_node( "BitwiseXor", inputs=["x", "y"], outputs=["bitwisexor"], ) # 2d x = create_random_int((3, 4), np.int32) y = create_random_int((3, 4), np.int32) z = np.bitwise_xor(x, y) expect(node, inputs=[x, y], outputs=[z], name="test_bitwise_xor_i32_2d") # 3d x = create_random_int((3, 4, 5), np.int16) y = create_random_int((3, 4, 5), np.int16) z = np.bitwise_xor(x, y) expect(node, inputs=[x, y], outputs=[z], name="test_bitwise_xor_i16_3d") ``` #### _bitwiseor_broadcast ```python import numpy as np import onnx node = onnx.helper.make_node( "BitwiseXor", inputs=["x", "y"], outputs=["bitwisexor"], ) # 3d vs 1d x = create_random_int((3, 4, 5), np.uint64) y = create_random_int((5,), np.uint64) z = np.bitwise_xor(x, y) expect( node, inputs=[x, y], outputs=[z], name="test_bitwise_xor_ui64_bcast_3v1d" ) # 4d vs 3d x = create_random_int((3, 4, 5, 6), np.uint8) y = create_random_int((4, 5, 6), np.uint8) z = np.bitwise_xor(x, y) expect(node, inputs=[x, y], outputs=[z], name="test_bitwise_xor_ui8_bcast_4v3d") ```