Skip to content

Commit 1c98228

Browse files
authored
Fix: array comparison (#65)
* fix: array comparison for multi dim arrays * chore: bump version number
1 parent d95eb5d commit 1c98228

File tree

5 files changed

+50
-52
lines changed

5 files changed

+50
-52
lines changed

nada_numpy/array.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
public_rational, rational, secret_rational, sign)
2121
from nada_numpy.utils import copy_metadata
2222

23-
2423
class NadaArray: # pylint:disable=too-many-public-methods
2524
"""
2625
Represents an array-like object with additional functionality.
@@ -424,9 +423,8 @@ def __comparison_operator(
424423
if isinstance(value, np.ndarray):
425424
if len(self.inner) != len(value):
426425
raise ValueError("Arrays must have the same length")
427-
return NadaArray(
428-
np.array([operator(x, y) for x, y in zip(self.inner, value)])
429-
)
426+
vectorized_operator = np.vectorize(operator)
427+
return NadaArray(vectorized_operator(self.inner, value))
430428

431429
raise ValueError(f"Unsupported type: {type(value)}")
432430

poetry.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "nada-numpy"
3-
version = "0.4.1"
3+
version = "0.4.2"
44
description = "Nada-Numpy is a Python library designed for algebraic operations on NumPy-like array objects on top of Nada DSL and Nillion Network."
55
authors = ["José Cabrero-Holgueras <jose.cabrero@nillion.com>"]
66
readme = "README.md"

tests/nada-tests/src/array_comparison.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
def nada_main():
1111
parties = na.parties(2)
1212

13-
a = na.array([3], parties[0], "A", SecretInteger)
14-
b = na.array([3], parties[1], "B", SecretInteger)
13+
a = na.array([1, 3], parties[0], "A", SecretInteger)
14+
b = na.array([1, 3], parties[1], "B", SecretInteger)
1515
c = Integer(1)
1616

1717
d = a == b
Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,99 +1,99 @@
11
---
22
program: array_comparison
33
inputs:
4-
A_0:
4+
A_0_0:
55
SecretInteger: "1"
6-
A_1:
6+
A_0_1:
77
SecretInteger: "100"
8-
A_2:
8+
A_0_2:
99
SecretInteger: "0"
10-
B_0:
10+
B_0_0:
1111
SecretInteger: "8"
12-
B_1:
12+
B_0_1:
1313
SecretInteger: "101"
14-
B_2:
14+
B_0_2:
1515
SecretInteger: "0"
1616
expected_outputs:
17-
my_output_1_0:
17+
my_output_1_0_0:
1818
SecretBoolean: false
19-
my_output_1_1:
19+
my_output_1_0_1:
2020
SecretBoolean: false
21-
my_output_1_2:
21+
my_output_1_0_2:
2222
SecretBoolean: true
2323

24-
my_output_2_0:
24+
my_output_2_0_0:
2525
SecretBoolean: true
26-
my_output_2_1:
26+
my_output_2_0_1:
2727
SecretBoolean: false
28-
my_output_2_2:
28+
my_output_2_0_2:
2929
SecretBoolean: false
3030

31-
my_output_3_0:
31+
my_output_3_0_0:
3232
SecretBoolean: true
33-
my_output_3_1:
33+
my_output_3_0_1:
3434
SecretBoolean: true
35-
my_output_3_2:
35+
my_output_3_0_2:
3636
SecretBoolean: false
3737

38-
my_output_4_0:
38+
my_output_4_0_0:
3939
SecretBoolean: false
40-
my_output_4_1:
40+
my_output_4_0_1:
4141
SecretBoolean: true
42-
my_output_4_2:
42+
my_output_4_0_2:
4343
SecretBoolean: true
4444

45-
my_output_5_0:
45+
my_output_5_0_0:
4646
SecretBoolean: true
47-
my_output_5_1:
47+
my_output_5_0_1:
4848
SecretBoolean: true
49-
my_output_5_2:
49+
my_output_5_0_2:
5050
SecretBoolean: false
5151

52-
my_output_6_0:
52+
my_output_6_0_0:
5353
SecretBoolean: false
54-
my_output_6_1:
54+
my_output_6_0_1:
5555
SecretBoolean: false
56-
my_output_6_2:
56+
my_output_6_0_2:
5757
SecretBoolean: true
5858

59-
my_output_7_0:
59+
my_output_7_0_0:
6060
SecretBoolean: true
61-
my_output_7_1:
61+
my_output_7_0_1:
6262
SecretBoolean: true
63-
my_output_7_2:
63+
my_output_7_0_2:
6464
SecretBoolean: true
6565

66-
my_output_8_0:
66+
my_output_8_0_0:
6767
SecretBoolean: true
68-
my_output_8_1:
68+
my_output_8_0_1:
6969
SecretBoolean: false
70-
my_output_8_2:
70+
my_output_8_0_2:
7171
SecretBoolean: true
7272

73-
my_output_9_0:
73+
my_output_9_0_0:
7474
SecretBoolean: false
75-
my_output_9_1:
75+
my_output_9_0_1:
7676
SecretBoolean: false
77-
my_output_9_2:
77+
my_output_9_0_2:
7878
SecretBoolean: false
7979

80-
my_output_10_0:
80+
my_output_10_0_0:
8181
SecretBoolean: false
82-
my_output_10_1:
82+
my_output_10_0_1:
8383
SecretBoolean: true
84-
my_output_10_2:
84+
my_output_10_0_2:
8585
SecretBoolean: false
8686

87-
my_output_11_0:
87+
my_output_11_0_0:
8888
SecretBoolean: false
89-
my_output_11_1:
89+
my_output_11_0_1:
9090
SecretBoolean: false
91-
my_output_11_2:
91+
my_output_11_0_2:
9292
SecretBoolean: true
9393

94-
my_output_12_0:
94+
my_output_12_0_0:
9595
SecretBoolean: true
96-
my_output_12_1:
96+
my_output_12_0_1:
9797
SecretBoolean: true
98-
my_output_12_2:
98+
my_output_12_0_2:
9999
SecretBoolean: false

0 commit comments

Comments
 (0)