### Tensor product over polynomial rings

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 + sk*ct1) and m2_q=(ct2 + sk*ct3) 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)~~*(2/q)*(ct0 tensor_product ct2)*

* **c1 = (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 + c1 * sk + c2 * sk^2 = m_out

But, these are not matching. Appreciate your help.