# Re: [viff-devel] The primitives of MPC

```Other nice 2. order operations are bitsplitting (and also
recombination of the bits) and multiplicative inverse (works only if
you can guarantee a non-zero element)```
```
And when you have the bits you would also like logic negation, xor, and and or.

- Sigurd

On Tue, Aug 25, 2009 at 9:22 AM, Tord Ingolf Reistad<to...@stud.ntnu.no> wrote:
> If you boil down VIFF, or any MPC program you can boil it down to 5
> primitives.
>
> These primitives are
> x + y = z       Addition
> x * y = z       Multiplication
> -x = z          Negation
> z = Share(x)    Secret sharing
> z = Reveal(x)   Revealing of a secret sharing
>
> My question is now: What are the second order primitives?
>
> What are the basic features that, make a programmers life easy but not
> essential. I would propose the following 5:
> z = f(x,y)     Function calls
> for(0 to n)    A for call with a fixed number of iterations.
> z = Rand(x)    Generating random values in Zp
> x = y          Equation
> x < y          Comparison
> while( x )     A while loop on x, where x is a revealed value
>
> The first 2 primitives are easy since they are already implemented using the
> underlying programming language.
> Should creating random values be on this list? Or should it maybe be among
> the first order primitives, a basic building block of MPC.
> Equation and comparison are obvious second order primitives and has been my
> research topic for many years.
> The last on the list is the while loop, I have included it because I have
> seen many times that you want to compute some function, open a variable,
> check some information and then redo the function if the revealed value was
> false. This can be found when creating random values less than some
> threshold, creating RSA primes, and many other algorithms. Also it is not
> trivial to program if you want it to be efficient.
>
>
> _______________________________________________
> viff-devel mailing list (http://viff.dk/)
> viff-devel@viff.dk
> http://lists.viff.dk/listinfo.cgi/viff-devel-viff.dk
>
_______________________________________________
viff-devel mailing list (http://viff.dk/)
viff-devel@viff.dk
http://lists.viff.dk/listinfo.cgi/viff-devel-viff.dk
```