# Revision history [back]

### 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 + 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.

### 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 + 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 + c1c1 * sk + c2c2 * sk^2 = m_out

But, these are not matching. Appreciate your help.

### 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 + 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)(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.

### 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 + sksk * ct1) and m2_q=(ct2 + sksk * 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)*(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. 5 None

### Tensor product over polynomial rings

Hi,

I'm writing code for Fully Homomorphic Encryption multiplication routine. routine. I'm trying to calculate tensor product over polynomial rings. rings. Let's say, say I have elements in R=Z[x]/[x^n+1] R = Z[x]/[x^n+1] where coefficients are modulo q.q.

I want to calculate tensor product of m1_q=(ct0 m1_q = (ct0 + sk * ct1) and m2_q=(ct2 ct1) and m2_q = (ct2 + sk * ct3) ct3) and scale it down by (q/2). (q/2). Each element ct0, ct1, ct2, ct3, sk, m1_q and m2_q ct0, ct1, ct2, ct3, sk, m1_q and m2_q are elements of Rq.Rq.

Just for m1_q and m2_q, m1_q and m2_q, it is working out well: (2/q)(m1_q tensor_product m2_q). well: (2/q)*(m1_q tensor_product m2_q). How can I calculate it in terms of ct? ct*? I tried writing it as:

c0 = (2/q)*(ct0 tensor_product ct2) ct2)
c1 = (2/q)*( (ct0 tensor_product ct3) + (ct2 tensor_product ct1) ) )
c2 = (2/q)*(ct1 tensor_product ct3) ct3)
m_out = (2/q)*(m1_q tensor_product m2_q) Then, m2_q)


Then I converted c0, c1, c0, c1, c2 and m_out into Rq.

Now I was testing:

c0 + c1 * sk + c2 and m_out into Rq. Now, I was testing:
c0 + c1 * sk + c2 * sk^2 = m_out But, == m_out


But these are not matching. Appreciate your help.