From b7a552743428e6371b52bfb56e9507c0ba0777e5 Mon Sep 17 00:00:00 2001 From: tianyuan Date: Thu, 25 Jan 2018 11:06:43 +0800 Subject: [PATCH 1/2] add __abs__ for cint and sint --- Compiler/types.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Compiler/types.py b/Compiler/types.py index a1c2e61c..78c8b97d 100644 --- a/Compiler/types.py +++ b/Compiler/types.py @@ -456,6 +456,9 @@ class cint(_clear, _int): def __neg__(self): return 0 - self + def __abs__(self): + return (self >= 0).if_else(self, -self) + @vectorize def __invert__(self): res = cint() @@ -1041,6 +1044,10 @@ class sint(_secret, _int): def __neg__(self): return 0 - self + @vectorize + def __abs__(self): + return (self >= 0).if_else(self, -self) + @read_mem_value @vectorize def __lt__(self, other, bit_length=None, security=None): @@ -1956,6 +1963,7 @@ class sfloat(_number): s: sign bit """ __slots__ = ['v', 'p', 'z', 's', 'size'] + # single precision vlen = 24 plen = 8 @@ -2184,6 +2192,12 @@ class sfloat(_number): @vectorize def __neg__(self): return sfloat(self.v, self.p, self.z, (1 - self.s) * (1 - self.z)) + + def __abs__(self): + if self.s: + return -self + else: + return self @vectorize def __lt__(self, other): From 85b289fa9ab3b9a3cdd00151f5f03d7fab0dc265 Mon Sep 17 00:00:00 2001 From: tianyuan Date: Thu, 25 Jan 2018 11:16:06 +0800 Subject: [PATCH 2/2] remove not finished work --- Compiler/types.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Compiler/types.py b/Compiler/types.py index 78c8b97d..c54b05c1 100644 --- a/Compiler/types.py +++ b/Compiler/types.py @@ -2192,12 +2192,6 @@ class sfloat(_number): @vectorize def __neg__(self): return sfloat(self.v, self.p, self.z, (1 - self.s) * (1 - self.z)) - - def __abs__(self): - if self.s: - return -self - else: - return self @vectorize def __lt__(self, other):