Janus Dam Nielsen <[email protected]> writes: > # HG changeset patch > # User Janus Dam Nielsen <[email protected]> > # Date 1240830411 -7200 > # Node ID 4397d64715c625445b0170daf5dfed39ac769219 > # Parent bdc53480bc8ce7d8074a11d157e74c77c773b9a7
> Added methods to GF fields for getting the values represented as signed and
> unsigned integers.
Please structure the commit messages like this:
One terse line less than 70 characters in length.
If needed you can put a larger description here in word-wrapped
paragraphs like this one. They wont be shown in 'hg log' unless you
use the -v flag.
> diff --git a/viff/field.py b/viff/field.py
> --- a/viff/field.py
> +++ b/viff/field.py
> @@ -505,6 +505,19 @@
> """Extract a bit (index is counted from zero)."""
> return (self.value >> index) & 1
>
> + def signed(self):
> + """
> + if x > floor(p/2) then subtract p to obtain negative integer
> + """
> + if self.value > ((self.modulus-1)/2):
> + return self.value - self.modulus
> + else:
> + return self.value
> +
> + def unsigned(self):
> + """Returns a unsigned representation of the value"""
> + return self.value
>
> def __repr__(self):
> return "{%d}" % self.value
> #return "GFElement(%d)" % self.value
> @@ -514,7 +527,7 @@
>
> This is simply the value enclosed in curly braces.
> """
> - return "{%d}" % self.value
> + return "{%d}" % self.unsigned()
I think it's a good idea!
> def __eq__(self, other):
> """Equality test."""
> diff --git a/viff/test/test_signed_field.py b/viff/test/test_signed_field.py
> new file mode 100644
> --- /dev/null
> +++ b/viff/test/test_signed_field.py
> @@ -0,0 +1,91 @@
> +#!/usr/bin/python
> +# -*- coding: utf-8
> +#
> +# Copyright 2009 (c) Partisia Market Design.
> +#
> +# Author: Janus Dam Nielsen
> +# Review: need review
> +#
This wont fly -- please put in a standard file header with the LGPL
license. Otherwise we cannot distribute the file as part of VIFF.
> +
> +# Import system packages.
> +import sys
> +
> +# Import VIFF packages.
> +from viff.field import GF
> +from viff.comparison import Toft05Runtime
> +from viff.test.util import RuntimeTestCase, protocol
> +
> +p = 30916444023318367583
> +Zp = GF(p)
> +
> +class SignedVsUnsignedTest(RuntimeTestCase):
You don't need the runtime arguments below -- it will just make things
slower. Instead you should make this a normal unit test. Look in
test_field.py for an example -- you should just expand the unit tests
there, add the new ones in a class if you like.
--
Martin Geisler
VIFF (Virtual Ideal Functionality Framework) brings easy and efficient
SMPC (Secure Multiparty Computation) to Python. See: http://viff.dk/.
pgpDFcLQ3FV89.pgp
Description: PGP signature
_______________________________________________ viff-patches mailing list [email protected] http://lists.viff.dk/listinfo.cgi/viff-patches-viff.dk
