code: public static cuComplex cuCmul (cuComplex x, cuComplex y)
      {
          cuComplex prod;
          prod = cuCmplx ((cuCreal(x) * cuCreal(y)) - (cuCimag(x) * cuCimag(y)),
                          (cuCreal(x) * cuCimag(y)) + (cuCimag(x) * cuCreal(y)));
          return prod;
      }
docs: Returns the product of the given complex numbers.<br />
  <br />
  Original comment:<br />
  <br />
  This implementation could suffer from intermediate overflow even though
  the final result would be in range. However, various implementations do
  not guard against this (presumably to avoid losing performance), so we
  don't do it either to stay competitive.
  
  @param x The first factor
  @param y The second factor
  @return The product of the given factors