@Override public DRes<SBool> buildComputation(ProtocolBuilderBinary builder) { return builder.par(par -> { AdvancedBinary bb = par.advancedBinary(); List<DRes<SBool>> xnors = new ArrayList<>(); int size = input.size() % 2 + input.size() / 2; IterationState is = new IterationState(size, seq.par(par -> { List<DRes<SBool>> ands = new ArrayList<>(); int idx = 0;
@Override public DRes<List<Pair<List<DRes<SBool>>, List<DRes<SBool>>>>> buildComputation( ProtocolBuilderBinary builder) { return builder.par(seq -> {
@Override public DRes<Pair<SBool, SBool>> buildComputation(ProtocolBuilderBinary builder) { return builder.par(par -> { DRes<SBool> res = par.binary().xor(left, right); DRes<SBool> carry = par.binary().and(left, right); return () -> new Pair<SBool, SBool>(res.out(), carry.out()); }); }
@Override public void test() throws Exception { Application<List<Boolean>, ProtocolBuilderBinary> app = producer -> producer.par(par -> { Binary builder = par.binary(); DRes<SBool> falseBool = builder.known(false);
@Override public DRes<Pair<SBool, SBool>> buildComputation(ProtocolBuilderBinary builder) { return builder.par(par -> { xor1 = par.binary().xor(valueA, valueB); and1 = par.binary().and(valueA, valueB); return () -> (par); }).par((par, pair) -> { xor2 = par.binary().xor(xor1, carry); and2 = par.binary().and(xor1, carry); return () -> (par); }).par((par, pair) -> { xor3 = par.binary().xor(and2, and1); return () -> new Pair<SBool, SBool>(xor2.out(), xor3.out()); }); } }