Skip to content

Commit 660043f

Browse files
Feature/rational types (#9)
Add Rational & SecretRational types
1 parent 75b76dd commit 660043f

13 files changed

+990
-69
lines changed

nada_algebra/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22

33
from nada_algebra.array import NadaArray
44
from nada_algebra.funcs import *
5+
from nada_algebra.types import Rational, SecretRational

nada_algebra/array.py

Lines changed: 23 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,21 @@
1818
Integer,
1919
UnsignedInteger,
2020
)
21+
from nada_algebra.types import Rational, SecretRational
22+
23+
_NadaOperand = Union[
24+
"NadaArray",
25+
np.ndarray,
26+
int,
27+
Integer,
28+
UnsignedInteger,
29+
SecretInteger,
30+
SecretUnsignedInteger,
31+
PublicInteger,
32+
PublicUnsignedInteger,
33+
Rational,
34+
SecretRational,
35+
]
2136

2237

2338
@dataclass
@@ -100,26 +115,12 @@ def __setitem__(self, key, value):
100115
else:
101116
self.inner[key] = value
102117

103-
def __add__(
104-
self,
105-
other: Union[
106-
"NadaArray",
107-
np.ndarray,
108-
int,
109-
Integer,
110-
UnsignedInteger,
111-
SecretInteger,
112-
SecretUnsignedInteger,
113-
PublicInteger,
114-
PublicUnsignedInteger,
115-
],
116-
) -> "NadaArray":
118+
def __add__(self, other: _NadaOperand) -> "NadaArray":
117119
"""
118120
Perform element-wise addition with broadcasting.
119121
120122
Args:
121-
other (Union[NadaArray, np.ndarray, int, Integer, UnsignedInteger, SecretInteger,
122-
SecretUnsignedInteger, PublicInteger, PublicUnsignedInteger]): The object to add.
123+
other (_NadaOperand): The object to add.
123124
124125
Returns:
125126
NadaArray: A new NadaArray representing the element-wise addition result.
@@ -130,28 +131,12 @@ def __add__(
130131
return NadaArray(self.inner + Integer(other))
131132
return NadaArray(self.inner + other)
132133

133-
def __sub__(
134-
self,
135-
other: Union[
136-
"NadaArray",
137-
np.ndarray,
138-
int,
139-
Integer,
140-
UnsignedInteger,
141-
SecretInteger,
142-
SecretUnsignedInteger,
143-
PublicInteger,
144-
PublicUnsignedInteger,
145-
],
146-
) -> "NadaArray":
134+
def __sub__(self, other: _NadaOperand) -> "NadaArray":
147135
"""
148136
Perform element-wise subtraction with broadcasting.
149137
150138
Args:
151-
other (Union[NadaArray, np.ndarray, int,
152-
Integer, UnsignedInteger, SecretInteger,
153-
SecretUnsignedInteger, PublicInteger,
154-
PublicUnsignedInteger]): The object to subtract.
139+
other (_NadaOperand): The object to subtract.
155140
156141
Returns:
157142
NadaArray: A new NadaArray representing the element-wise subtraction result.
@@ -162,28 +147,12 @@ def __sub__(
162147
return NadaArray(self.inner - Integer(other))
163148
return NadaArray(self.inner - other)
164149

165-
def __mul__(
166-
self,
167-
other: Union[
168-
"NadaArray",
169-
np.ndarray,
170-
int,
171-
Integer,
172-
UnsignedInteger,
173-
SecretInteger,
174-
SecretUnsignedInteger,
175-
PublicInteger,
176-
PublicUnsignedInteger,
177-
],
178-
) -> "NadaArray":
150+
def __mul__(self, other: _NadaOperand) -> "NadaArray":
179151
"""
180152
Perform element-wise multiplication with broadcasting.
181153
182154
Args:
183-
other (Union[NadaArray, np.ndarray, int,
184-
Integer, UnsignedInteger, SecretInteger,
185-
SecretUnsignedInteger, PublicInteger,
186-
PublicUnsignedInteger]): The object to multiply.
155+
other (_NadaOperand): The object to multiply.
187156
188157
Returns:
189158
NadaArray: A new NadaArray representing the element-wise multiplication result.
@@ -194,26 +163,12 @@ def __mul__(
194163
return NadaArray(self.inner * Integer(other))
195164
return NadaArray(self.inner * other)
196165

197-
def __truediv__(
198-
self,
199-
other: Union[
200-
"NadaArray",
201-
np.ndarray,
202-
int,
203-
Integer,
204-
UnsignedInteger,
205-
SecretInteger,
206-
SecretUnsignedInteger,
207-
PublicInteger,
208-
PublicUnsignedInteger,
209-
],
210-
) -> "NadaArray":
166+
def __truediv__(self, other: _NadaOperand) -> "NadaArray":
211167
"""
212168
Perform element-wise division with broadcasting.
213169
214170
Args:
215-
other (Union[NadaArray, np.ndarray, int, Integer, UnsignedInteger, SecretInteger,
216-
SecretUnsignedInteger, PublicInteger, PublicUnsignedInteger]): The object to divide.
171+
other (_NadaOperand): The object to divide.
217172
218173
Returns:
219174
NadaArray: A new NadaArray representing the element-wise division result.

0 commit comments

Comments
 (0)