TenSEAL icon indicating copy to clipboard operation
TenSEAL copied to clipboard

Side effect and wrong result of a simple mul operation

Open Kirija opened this issue 4 years ago • 2 comments
trafficstars

Hi, on tenseal 0.3.4, a simple mul operation leads to the operands being overwritten

import tenseal as ts
import math

# Setup TenSEAL context
context = ts.context(
            ts.SCHEME_TYPE.CKKS,
            poly_modulus_degree=8192,
            coeff_mod_bit_sizes=[60, 40, 40, 60]
          )
context.generate_galois_keys()
context.global_scale = 2**40

x    = ts.ckks_vector(context, [4])
y    = ts.ckks_vector(context, [0.5])

print("Before mul X=",x.decrypt()," scale=",math.log(x.ciphertext()[0].scale,2))
print("Before mul Y=",y.decrypt()," scale=",math.log(y.ciphertext()[0].scale,2))

x=x.mul(y)

print("After  mul X=",x.decrypt()," scale=",math.log(x.ciphertext()[0].scale,2))
print("After  mul Y=",y.decrypt()," scale=",math.log(y.ciphertext()[0].scale,2))

Results in : Before mul X= [4.000000000647424] scale= 40.0 Before mul Y= [0.5000000001644422] scale= 40.0 After mul X= [-3.9069508659243407e-10] scale= 40.0 After mul Y= [-1.8427671583511186e-09] scale= 40.0

  • Wrong result : x should be equal to 2
  • Side effect: Y should stay at .5
  • Wrong scale: X should be at 2**80

Dont know what's wrong but its serious !

Kirija avatar Oct 08 '21 17:10 Kirija

Hello,

Could you please test this using TenSEAL 0.3.6? If the problem persists, please also mention your OS and Python version. Thanks!

bcebere avatar Oct 20 '21 09:10 bcebere

Hi, Thanks for your reply. I'm on a M1 Mac, OS 11.6 Big Sur, Python is 3.9.6, packaged by conda-forge . Unfortunately no, I can't switch to 3.6 because cpu_features does not compile on anything else than an intel processor on MacOS, yet. Cheers

Kirija avatar Oct 20 '21 12:10 Kirija