QLA_D_Complex QLA_D_cpow(QLA_D_Complex *a, QLA_D_Real b) { QLA_D_Real r = pow(QLA_norm2_c(*a), 0.5*b); QLA_D_Real theta = b*QLA_D_arg_c(*a); QLA_D_Complex c = QLA_D_cexpi(theta); QLA_c_eq_c_times_r(c,c,r); return c; }
static void qlamakegroup(QLA_Complex *x, int g) { switch(g&GROUP_TYPE) { case GROUP_GL: break; case GROUP_U: { QLA_Real n = QLA_norm2_c(*x); if(n==0) { QLA_c_eq_r(*x, 1); } else { n = 1/sqrt(n); QLA_c_eq_r_times_c(*x, n, *x); } } break; case GROUP_H: QLA_c_eq_r(*x, QLA_real(*x)); break; case GROUP_AH: QLA_c_eq_r_plus_ir(*x, 0, QLA_imag(*x)); break; } if(g&GROUP_S) QLA_c_eq_r(*x, 1); if(g&GROUP_T) QLA_c_eq_r(*x, 0); }