-
Notifications
You must be signed in to change notification settings - Fork 114
Open
Labels
python frontendIssues related to the python frontendIssues related to the python frontend
Description
Hi! I meet a very strange issue with HEIR's python frontend (heir-py 0.0.2) 😂
If I write my code like this:
from heir import compile
from heir.mlir import I32, Secret
@compile()
def func(x: Secret[I32]):
v2 = x + 10
v3 = 15 * 3
v4 = 10 * v3
v5 = v4 + v4
return v5 + v2
if __name__ == "__main__":
x = 2
func.setup()
enc_x = func.encrypt_x(x)
result_enc = func.eval(enc_x)
result = func.decrypt_result(result_enc)
print(f"Expected result: {func.original(x)}")
print(f"FHE result: {result}")
It will output:
Expected result: 912
FHE result: 144
However, if I reduce this program and write it as:
from heir import compile
from heir.mlir import I32, Secret
@compile()
def func(x: Secret[I32]):
v2 = x + 10
v3 = 10 * 15 * 3
v5 = v3 + v3
return v5 + v2
if __name__ == "__main__":
x = 2
func.setup()
enc_x = func.encrypt_x(x)
result_enc = func.eval(enc_x)
result = func.decrypt_result(result_enc)
print(f"Expected result: {func.original(x)}")
print(f"FHE result: {result}")
It works well:
Expected result: 912
FHE result: 912
And, if I use this program:
from heir import compile
from heir.mlir import I32, Secret
@compile()
def func(x: Secret[I32]):
v2 = x + 10
v3 = 15 * 3
v4 = 10 * v3
v5 = v4 + v4
return v5 + v3
if __name__ == "__main__":
x = 2
func.setup()
enc_x = func.encrypt_x(x)
result_enc = func.eval(enc_x)
result = func.decrypt_result(result_enc)
print(f"Expected result: {func.original(x)}")
print(f"FHE result: {result}")
It will crash with red error message.
Metadata
Metadata
Assignees
Labels
python frontendIssues related to the python frontendIssues related to the python frontend