A discriminant is the square-free value α substituted into z = αx² when constructing pairing-friendly elliptic curves. It helps determine the field prime, large prime order, Hilbert class polynomial, and ultimately the curve’s j-invariant. section 14.2 section 14.7
A practical discriminant workflow connects parameter search to curve generation:
- Choose permitted α values and sweep α with x, testing whether r(z) and q(z) are prime. section 14.2
- Use the selected discriminant to obtain a Hilbert class polynomial, whose roots provide candidate j-invariants. section 14.3
- Check the resulting curves and, when necessary, compute a quadratic twist until multiplying a random point by the cardinality reaches infinity. section 14.7
Discriminant input in curve-finding code
The get_curve program accepts a discriminant, prime q, and trace t. It normalizes a negative discriminant to a positive comparison value, scans Hilbert_Polynomials.list for the matching entry, and exits if the value is unsupported. The listed discriminants are negative internally; permitted absolute values include 7, 11, 15, 19, and values 23 + 20a for a from 0 through 7. section 14.5.2 section 14.2
Figure 14.1 Pairing-friendly curves algorithm. Above the dashed line is one program that searches for good parameters. Below the dashed line is a program that finds one curve for one set of parameters.
Separates parameter searching above the dashed line from finding one curve for chosen parameters below it. section 14.2
