Esempio n. 1
0
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;
}
Esempio n. 2
0
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);
}