Controlling the discriminant size of a polynomial using roots

31 Views Asked by At

I'm trying to generate random monic irreducible polynomials in $\mathbb{C}[x]$ whose absolute discriminant is within a certain size range (say $10^t$, where $t$ is a positive integer). I also need to be able fix the number of real and complex roots. Does anyone know an effective strategy to do this?

My current strategy for fixed degree $n$ is to use the formula $$|D| = \prod_{i < j}(r_i - r_j)^2$$ where $r_1, \ldots r_n$ are the roots of the polynomial.

At a glance, we can divide the terms of the product into 3 groups,

  • those that are the difference of reals, $R_1$,
  • those that are differences of complex numbers and their conjugates ($z - \bar{z}$), $R_2$,
  • and those that are differences of reals and complex numbers or differences of non-conjugate complex numbers $R_3$.

I'm trying to preselect the roots in $\mathbb{C}$ such that their differences are within a certain range (supposing there are $s$ terms in the product, one might choose them to be around $10^{t/2s})$ which works well for the totally real case, but the presence of complex roots makes things harder.

It's simple enough to control the terms of $R_1$ and $R_2$, but the terms in $R_3$ seem hard to intelligently bound in this way. If anyone has ideas they would be very appreciated!