Complex<T> PH5Curve<T>::rit(int16_t i, T e) { Complex<T> sum; T e1 = 1 - e; T ek[6]; T e1k[6]; ek[0] = e1k[5] = 1; T Eprod = 1; T E1prod = 1; for (int16_t k = 1; k <= 5; k++) { ek[k] = Eprod = e * Eprod; e1k[5 - k] = E1prod = e1 * E1prod; } sum.add(pi0[i] * (choose5[0]*e1k[0]*ek[0])); sum.add(pi1[i] * (choose5[1]*e1k[1]*ek[1])); sum.add(pi2[i] * (choose5[2]*e1k[2]*ek[2])); sum.add(pi3[i] * (choose5[3]*e1k[3]*ek[3])); sum.add(pi4[i] * (choose5[4]*e1k[4]*ek[4])); sum.add(pi5[i] * (choose5[5]*e1k[5]*ek[5])); return sum; }
Complex * Gates::multiply8x8(Complex *q, Complex matrix[8][8]){ int qb_size = 8; Complex * result = new Complex[qb_size]; for (int i = 0; i<qb_size; i++){ Complex tmp; for (int j = 0; j<qb_size; j++) tmp = tmp.add(q[j].mul(matrix[j][i])); result[i].re = tmp.re; result[i].im = tmp.im; } delete[] q; return result; }
Complex operator+(Complex a,Complex b) { return a.add(b); }