pub struct BinaryAdd {}Expand description
A structure that defines the custom operation BinaryAdd that implements the binary adder.
The binary adder takes two arrays of length-n bitstrings and returns the elementwise binary sum of these arrays, ignoring a possible overflow.
The last dimension of both inputs must be the same; it defines the length of input bitstrings.
If input shapes are different, the broadcasting rules are applied (see the NumPy broadcasting rules).
For example, if input arrays are of shapes [2,3], and [1,3], the resulting array has shape [2,3].
Each bitstring of the output contains n bits; thus, this operation does not handle overflows.
The binary adder is either depth- or size-optimized depending on the inlining mode.
This operation is needed for conversion between arithmetic and boolean additive MPC shares (i.e. A2B and B2A operations in MPC).
To use this and other custom operations in computation graphs, see Graph::custom_op.
Custom operation arguments
- Node containing a binary array or scalar
- Node containing a binary array or scalar
Custom operation returns
New BinaryAdd node
Example
let c = create_context().unwrap();
let g = c.create_graph().unwrap();
let t = array_type(vec![2, 3], BIT);
let n1 = g.input(t.clone()).unwrap();
let n2 = g.input(t.clone()).unwrap();
let n3 = g.custom_op(CustomOperation::new(BinaryAdd {}), vec![n1, n2]).unwrap();Trait Implementations
sourceimpl CustomOperationBody for BinaryAdd
impl CustomOperationBody for BinaryAdd
sourceimpl<'de> Deserialize<'de> for BinaryAdd
impl<'de> Deserialize<'de> for BinaryAdd
sourcefn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for BinaryAdd
impl StructuralEq for BinaryAdd
impl StructuralPartialEq for BinaryAdd
Auto Trait Implementations
impl RefUnwindSafe for BinaryAdd
impl Send for BinaryAdd
impl Sync for BinaryAdd
impl Unpin for BinaryAdd
impl UnwindSafe for BinaryAdd
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to key and return true if they are equal.