Hi,
I'm writing code for Fully Homomorphic Encryption multiplication routine. I'm trying to calculate tensor product over polynomial rings. Let's say, I have elements in R=Z[x]/[x^n+1] where coefficients are modulo q.
I want to calculate tensor product of m1_q=(ct0 + skct1) and m2_q=(ct2 + skct3) and scale it down by (q/2). Each element ct0, ct1, ct2, ct3, sk, m1_q and m2_q are elements of Rq.
Just for m1_q and m2_q, it is working out well: (2/q)(m1_q tensor_product m2_q). How can I calculate it in terms of ct? I tried writing it as:
c0 = (2/q)(ct0 tensor_product ct2) c1 = (2/q)( (ct0 tensor_product ct3) + (ct2 tensor_product ct1) ) c2 = (2/q)*(ct1 tensor_product ct3)
m_out = (2/q)*(m1_q tensor_product m2_q)
Then, I converted c0, c1, c2 and m_out into Rq.
Now, I was testing: c0 + c1sk + c2sk^2 = m_out
But, these are not matching. Appreciate your help.