// --> Assignation without constrain // <-- Assignation without constrain // === Constrain // <== Assignation with constrain // ==> Assignation with constrain // All variables are members of the field F[p] // https://github.com/zcash-hackworks/sapling-crypto // https://github.com/ebfull/bellman /* function log2(a) { if (a==0) { return 0; } let n = 1; let r = 1; while (n success; success * (success -1) === 0; } template Multiplexor(wIn, nIn) { signal input inp[nIn][wIn]; signal input sel; signal output out[wIn]; component Decoder(nIn) dec; component EscalarProduct(nIn) ep[wIn]; sel ==> dec.inp; for (var j=0; j ep[j].in1[k]; dec.out[k] ==> ep[j].in2[k]; } ep[j].out ==> out[j]; } dec.success === 1; } component Multiplexor(8,3) main;