int main(void) { QLA_ColorMatrix x, y, c, f, f2, yt; for(int i=0; i<QLA_Nc; i++) { for(int j=0; j<QLA_Nc; j++) { QLA_c_eq_r_plus_ir(QLA_elem_M(x,i,j), i+1, QLA_Nc*(j+1)); QLA_c_eq_r_plus_ir(QLA_elem_M(c,i,j), QLA_Nc*(j+1), i-1); //QLA_c_eq_r(QLA_elem_M(x,i,j), 0); //QLA_c_eq_r(QLA_elem_M(c,i,j), 0); } QLA_c_eq_r_plus_ir(QLA_elem_M(x,i,i), 2+1, 1); QLA_c_eq_r_plus_ir(QLA_elem_M(c,i,i), 0.1, 0.5); } QLA_M_eq_sqrt_M(&y, &x); QLA_M_eq_Ma(&yt, &y); //sqrt_deriv_site(&f, &y, &x, &c); sylsolve_site(&f, &y, &y, &c); printm(&x); printm(&y); printm(&c); printm(&f); QLA_ColorMatrix dx, dy; for(int i=0; i<QLA_Nc; i++) { for(int j=0; j<QLA_Nc; j++) { QLA_Real eps = 1e-6; QLA_M_eq_M(&dx, &x); QLA_c_peq_r(QLA_elem_M(dx,i,j), eps); QLA_M_eq_sqrt_M(&dy, &dx); QLA_M_meq_M(&dy, &y); QLA_Real ieps = 1/eps; QLA_M_eq_r_times_M(&dy, &ieps, &dy); //printm(&dy); QLA_M_eq_M_times_Ma(&f2, &dy, &c); QLA_Real r; QLA_R_eq_re_trace_M(&r, &f2); printf("%g\n", r); } } // printm(&f2); return 0; }
void set_M(QLA_ColorMatrix *m, int i) { #if 0 static QLA_ColorMatrix t; for(int j=0; j<QLA_Nc; j++) { for(int k=0; k<QLA_Nc; k++) { QLA_c_eq_r_plus_ir(QLA_elem_M(*m,j,k), (((j-k+QLA_Nc+1)*(j+k+1))%19)+cos(i), (((j+4)*(k+1))%17)+sin(i)); //QLA_real(QLA_elem_M(*m,j,k)) = 1; //QLA_imag(QLA_elem_M(*m,j,k)) = 0; } } #endif for(int j=0; j<QLA_Nc; j++) { for(int k=0; k<QLA_Nc; k++) { QLA_c_eq_r(QLA_elem_M(*m,j,k), 0); } } QLA_Real step = 1e-5; if(Mtype&MtypeNZ) { for(int j=0; j<QLA_Nc; j++) { QLA_c_peq_r_plus_ir(QLA_elem_M(*m,j,j), step, -step); } } int ii=i; if((Mtype&MtypeNN)==0) ii>>=QLA_Nc; for(int j=0,k=1; ii; ii>>=1,j++) { if(j>=QLA_Nc) { j=0; k*=2; } if(ii&1) QLA_c_peq_r_plus_ir(QLA_elem_M(*m,j,j), k*step, -k*step); } ii = i; if((Mtype&MtypeNN)==0) { for(int j=0; j<QLA_Nc; j++) { if(ii&1) QLA_c_eqm_c(QLA_elem_M(*m,j,j), QLA_elem_M(*m,j,j)); ii >>= 1; } } if(Mtype&MtypeH) { // make Hermitian QLA_ColorMatrix m2; QLA_M_eq_M(&m2, m); QLA_M_peq_Ma(&m2, m); QLA_M_eq_M(m, &m2); } if((Mtype&MtypeP)&&(Mtype&MtypeH)) { // make positive Hermitian QLA_ColorMatrix m2; QLA_M_eq_M_times_Ma(&m2, m, m); QLA_M_eq_M(m, &m2); } if(Mtype&MtypeA) { // make anti-Hermitian QLA_ColorMatrix m2; QLA_M_eq_M(&m2, m); QLA_M_meq_Ma(&m2, m); QLA_M_eq_M(m, &m2); } if((Mtype&MtypeT)&&(Mtype&MtypeA)) { // make traceless anti-Hermitian QLA_ColorMatrix m2; QLA_M_eq_antiherm_M(&m2, m); QLA_M_eq_M(m, &m2); } //QLA_Real n2; //QLA_r_eq_norm2_M(&n2, m); //printf("%i\t%g\n", i, n2); }