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/.

Attachment: pgpDFcLQ3FV89.pgp
Description: PGP signature

_______________________________________________
viff-patches mailing list
[email protected]
http://lists.viff.dk/listinfo.cgi/viff-patches-viff.dk

Reply via email to