binius_field/arch/portable/
bitwise_and_arithmetic.rs

1// Copyright 2025 The Binius Developers
2
3use super::packed::PackedPrimitiveType;
4use crate::{
5	BinaryField1b,
6	arch::BitwiseAndStrategy,
7	arithmetic_traits::{TaggedInvertOrZero, TaggedMul, TaggedMulAlpha, TaggedSquare},
8	underlier::UnderlierWithBitOps,
9};
10
11impl<U: UnderlierWithBitOps> TaggedMul<BitwiseAndStrategy>
12	for PackedPrimitiveType<U, BinaryField1b>
13{
14	#[inline]
15	fn mul(self, rhs: Self) -> Self {
16		(self.0 & rhs.0).into()
17	}
18}
19
20impl<U: UnderlierWithBitOps> TaggedSquare<BitwiseAndStrategy>
21	for PackedPrimitiveType<U, BinaryField1b>
22{
23	#[inline]
24	fn square(self) -> Self {
25		self
26	}
27}
28
29impl<U: UnderlierWithBitOps> TaggedInvertOrZero<BitwiseAndStrategy>
30	for PackedPrimitiveType<U, BinaryField1b>
31{
32	#[inline]
33	fn invert_or_zero(self) -> Self {
34		self
35	}
36}
37
38impl<U: UnderlierWithBitOps> TaggedMulAlpha<BitwiseAndStrategy>
39	for PackedPrimitiveType<U, BinaryField1b>
40{
41	#[inline]
42	fn mul_alpha(self) -> Self {
43		self
44	}
45}